哈工大LTP的依存分析

2023-12-27 03:48
文章标签 分析 依存 哈工大 ltp

本文主要是介绍哈工大LTP的依存分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

# 可视化

    网址:http://ltp.ai/demo.html

LTP提供的模型有tiny、small和base。根据安装的LTP版本,模型的版本也需要匹配,否则可能会出现不兼容的情况

注:web demo运行的是base模型;在线的SDP解码是Graph和Tree混合解码,具体可以看一下4.0.X的源码

 

# 本地安装(Python版)

    1. pip install ltp

    2. 运行代码后报错

Microsoft Visual C++ Redistributable is not installed, this may lead to the DLL load failure.It can be downloaded at https://aka.ms/vs/16/release/vc_redist.x64.exe

    3. 根据报错里提供的网址下载 vc_redist.x64.exe 安装即可

    4.1 报错

AttributeError: 'Version' object has no attribute 'major'

    解决:packaging 包版本太低了,用命令pip install --upgrade packaging 更新 packaging 

    4.2 报错

KeyError: 'transformer_config'

    解决:模型问题,参见链接 。打开C:\Anaconda3\Lib\site-packages\ltp下的frontend.py文件(4.1.x版本,老版本文件为ltp.py),修改如下(先把模型下载下来,然后修改路径)

model_map = {'base': 'http://39.96.43.154/ltp/v2/base.tgz','small': 'http://39.96.43.154/ltp/v2/small.tgz',# 'tiny': 'http://39.96.43.154/ltp/v2/tiny.tgz''tiny': 'w:/ltp/tiny.tgz'
}

注意:LTP 4.1.X 与旧版本 v1,v2 模型不兼容[来源],LTP 4.0.X 与 v3 也不兼容

联网自动下载的模型缓存在 C:\Users\用户名\.cache\torch\ltp

    4.3 报错 

sdp = ltp.sdp(hidden,graph=False)
3)TypeError: sdp() got an unexpected keyword argument 'graph'

    解决:4.1.X 没有该参数了,只支持依存图

 

    ## 其他

      除了安装ltp,之前有个版本pyltp,调用接口参数似乎更方便 [链接] [链接] [链接] [链接]

      案例:基于哈工大LTP句子主干提取

 

# LTP:依存句法分析与语义依存分析的区别

    虽然两者都借用了依存结构,但是依存句法分析与语义依存分析之间具有显著的区别。句法依存按照句法结构功能建立依存关系并为依存结构标注句法关系,更强调介词、助词等对句法结构划分的作用。而语义依存如前所说,注重实词之间语义事实上或逻辑上的关系。而句法的结构往往随着字面词语的变化而不同,相反语义则能够跨越句子表层的变化直达语义的本质 [来源]

    与句法依存分析相比,语义依存分析能表达更深刻的语义信息,对于中文这种意合的语言尤为适合 [来源] 在中文界,最有影响力的标注方案是BH-SDP,由北京语言大学和哈尔滨工业大学联合制定 [来源]

    区别于依存句法分析的树形结构,语义分析结果为一个有向无环图,称为语义依存图(Semantic Dependency Graph)[来源]

    ① 同一说法的不同表述

    虽然三个句子拥有不同的句子结构, 产生了不同的句法分析结果, 但是三个句子中语言单元之间的语义关系并没有发生变化, 从"吃"这个词来看, 它的主体, 客体...都没有发生变化 

对于表达同一意思的不同结构的句子来说,其依存句法分析的结果是不一样的,但是其语义依存分析的结果是一样的 [链接]

    ② 非实词在句子结构分析中的作用

    第一,句法依存某种程度上更重视非实词(如介词)在句子结构分析中的作用,而语义依存更倾向在具有直接语义关联的实词之间建立直接依存弧,非实词作为辅助标记存在。

    第二,两者依存弧上标记的语义关系完全不同,语义依存关系是由论元关系引申归纳而来,可以用于回答问题,如我在哪里喝汤,我在用什么喝汤。但是句法依存却没有这个能力(或者说句法分析树的结果是间接的,而语义依存图的结果是直接的。

 

# LTP:语义依存分析(依存树)和语义依存分析(依存图)的区别

    传统的基于转移的依存分析算法,其最终得到得是一个依存树,这对依存分析存在一定限制,因此,最近几年提出的基于转移的语义依存图的解析,对依存分析进行了扩展 [链接]

与语义依存树不同,在依存图中,每个词的父节点个数是不确定的。这种不确定性使得用基于图的方法解决该问题变得很困难,因此我们选择了基于转移的方法,通过修改现有转移系统中的转移动作来直接生成语义依存图 [来源]

    在语义依存树基础上做了突破,使得对连动、兼语、概念转位等汉语中常见的现象的分析更全面深入 [链接]

    在原来的语义依存树中,受限于树结构,只能刻画出“有”与“儿子”之间的属事(Belg)关系。而在语义依存图中,除了该关系之外,还刻画出了“儿子”与“上”之间的施事(Agt)关系。语义依存图对语义关系更完整的覆盖,为获取句中实词之间的语义关系提供了更方便的工具。例如在“他有个儿子才上小学。”这句话中,如果要回答“谁在上小学”这个问题,语义依存图能够直接提供答案,而语义依存树则不能。 

    语义依存树与语义依存图的主要区别在于,在依存树中,任何一个成分都不能依存于两个或两个以上的成分,而在依存图中则允许句中成分依存于两个或两个以上的成分。且在依存图中允许依存弧之间存在交叉,而依存树中不允许 [链接] 

    与语义依存树分析相比,语义依存图能更全面、灵活的表示句子中的语义关系 [来源] 

问题:为什么上面描述的和LTP在线演示出来的效果不一致

 

# 嵌套关系

    用来标记一个事件降级充当了另一个事件的成分

如句子“爷爷看见小孙女在操作计算机”,划线部分为一个降级事件充当动词“看见”的“客事”角色dCont  [来源]

 

# 附录

    LTP 使用的是863词性标注集

    语义依存分析的标注方案是BH-SDP

    哈工大 LTP 标注文档介绍

 词性标注集pos/tag依存句法分析标注集dep语义依存分析标注集sdp
LTP863词性标注集BH-DEPBH-SDP
SpaCy基于Google Universal POS Tag set扩展采用了 ClearNLP 的依存分析标签-
DDParser百度构建的标注集DuCTB-
HanLPCTB、PKU、863、UDSD、UDSemEval16、DM、PAS、PSD
stanford corenlpPenn Chinese Treebank Tag Set(CTB)没找到说明采用的标注集 [链接]-
jieba和 ictclas 兼容的标记法不支持不支持

 

# 工具学习系列

  • 哈工大LTP的依存分析
  • 百度DDParser的依存分析
  • HanLP的依存分析
  • Spacy的依存分析

 

# 参考资料

    中文语义依存分析语料库

    哈工大SCIR:语言技术平台(LTP)发布新功能:中文语义依存图分析

    哈工大SCIR:中文语义依存分析—通往中文语义理解的一条蹊径

    哈工大SCIR:基于转移的语义依存图分析 (原理

这篇关于哈工大LTP的依存分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541802

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

关于MyISAM和InnoDB对比分析

《关于MyISAM和InnoDB对比分析》:本文主要介绍关于MyISAM和InnoDB对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录开篇:从交通规则看存储引擎选择理解存储引擎的基本概念技术原理对比1. 事务支持:ACID的守护者2. 锁机制:并发控制的艺

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb