-
2021-01-14 10:38:12
依存句法分析 python & pyltp实现
本文用python,借助pyltp实现依存句法分析。
有关pyltp的详细介绍可以查阅其官方网站。
说明:使用前需要先下载ltp的模型文件,下载地址:百度云
整体思路是先分词,在词性标注,最后依存句法分析
# -*- coding: utf-8 -*-
import os
## 加载模型文件
LTP_DATA_DIR = 'D:\SpyderWorkspace\parser\ltp_data' # ltp模型目录的路径
pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model`
cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model`
par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路径,模型名称为`parser.model`
## 分词
from pyltp import Segmentor
segmentor = Segmentor() # 初始化实例
segmentor.load_with_lexicon(cws_model_path,'dict1.txt') # 加载模型
words = list(segmentor.segment('栈是只允许一端删除和插入的线性表')) # 分词
segmentor.release() # 释放模型
print(words)
## 词性标注
from pyltp import Postagger
postagger = Postagger() # 初始化实例
postagger.load(pos_model_path) # 加载模型
postags = postagger.postag(words) # 词性标注
tags= list(''.join(postags))
#print (tags)
postagger.release() # 释放模型
## 依存句法分析
from pyltp import Parser
parser = Parser() # 初始化实例
parser.load(par_model_path) # 加载模型
arcs = parser.parse(words, postags) #句法分析
print ('arcs 的结果:','\t'.join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
结果:
['栈', '是', '只', '允许', '一', '端', '删除', '和', '插入', '的', '线性表']
arcs 的结果: 2:SBV 0:HED 4:ADV 2:VOB 6:ATT 7:ADV 11:ATT 9:LAD 7:COO 7:RAD 4:VOB
其中arc.head代表父节点的索引,arc.relation代表依存弧的关系
更多相关内容 -
自然语言处理 中英文句法分析与依存句法分析——文本和代码
2019-05-25 10:36:35在使用StanfordCoreNLP对文本句子进行分析时,需要先对句子进行分词 nlp.word_tokenize(sentence) 然后对分词后的句子进行...再之后就是句法分析与依存句法分析 nlp.parse(sentence) nlp.dependency_parse(sentence) -
hmm的matlab代码-HanLP:自然语言处理中文分词词性标注命名实体识别依存句法分析新词发现关键词短语提取自动...
2021-05-19 20:48:43hmm的matlab代码HanLP: ...依存句法分析 KMeans、Repeated Bisection、自动推断聚类数目k 词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类 文档语义相似度计算 部分默认模型训练自小型 -
python实现中文依存句法分析
2018-04-11 17:52:34需求:python实现中文依存句法分析(最初尝试了NLTK库来实现,发现只能实现英文,不能应用中文场景)方法一、斯坦福依存句法分析处理中文斯坦福依存句法分析参考教程地址:... 2:下载Stanford ...需求:python实现中文依存句法分析
(最初尝试了NLTK库来实现,发现只能实现英文,不能应用中文场景)
方法一、斯坦福依存句法分析处理中文
斯坦福依存句法分析参考教程地址:https://blog.csdn.net/guolindonggld/article/details/72795022
安装stanfordcorenlp包之前:
1:下载安装JDK 1.8及以上版本。
2:下载Stanford CoreNLP文件,解压。3:处理中文还需要下载中文的模型jar文件,然后放到stanford-corenlp-full-2016-10-31根目录下即可(注意一定要下载这个文件哦,否则它默认是按英文来处理的)。
4.install stanfordcorenlp
#encoding=utf-8 from stanfordcorenlp import StanfordCoreNLP nlp = StanfordCoreNLP(r'./stanford-corenlp-full-2016-10-31/', lang='zh') #英文使用 lang='en' sentence = "清华大学位于北京。" # sentence = "The book is very interesting." # print nlp.word_tokenize(sentence) # print nlp.pos_tag(sentence) print nlp.parse(sentence) print nlp.dependency_parse(sentence)
结果如下:
方法二、哈工大LTP处理中文(有时间再补充具体实现)(ROOT (IP (NP (NR 清华) (NN 大学)) (VP (VV 位于) (NP (NR 北京))) (PU 。))) [(u'ROOT', 0, 3), (u'compound:nn', 2, 1), (u'nsubj', 3, 2), (u'dobj', 3, 4), (u'punct', 3, 5)]
-
详解依存句法分析
2020-07-11 20:41:58依存句法分析 语法分析(syntactic parsing )是自然语言处理中一个重要的任务,其目标是分析句子的语法结构并将其表示为容易理解的结构(通常是树形结构)。同时,语法分析也是所有工具性NLP任务中较为高级、较为复杂的...依存句法分析
语法分析(syntactic parsing )是自然语言处理中一个重要的任务,其目标是分析句子的语法结构并将其表示为容易理解的结构(通常是树形结构)。同时,语法分析也是所有工具性NLP任务中较为高级、较为复杂的一种任务。 通过掌握语法分析的原理、实现和应用,我们将在NLP工程师之路上跨越一道分水岭。 本章将会介绍短语结构树和依存句法树两种语法形式,并且着重介绍依存句法分析的原理和实现。
12.1 短语结构树
语言其实具备自顶而下的层级关系,固定数量的语法结构能够生成无数句子。比如,仅仅利用下列两个语法规律,我们就能够生成所有名词短语。
- 名词短语可以由名词和名词短语组成。
- 名词短语还可以由名词和名词组成。
例如,“上海+浦东+机场+航站楼”,所以,汉语中大部分句子都可以通过这样的语法来生成。
在语言学中,这样的语法被称为上下文无关文法,它由如下组件构成:
- 终结符结合 Σ,比如汉语的一个词表。
- 非终结符集合 V,比如“名词短语”“动词短语”等短语结构组成的集合。V 中至少包含一个特殊的非终结符,即句子符或初始符,计作 S。
- 推到规则 R,即推到非终结符的一系列规则: V -> V U Σ。
基于上下文无关文法理论,我们可以从 S 出发,逐步推导非终结符。一个非终结符至少产生一个下级符号,如此一层一层地递推下去,我们就得到了一棵语法树。但在NLP中,我们称其为短语结构树。也就是说,计算机科学中的术语“上下文无关文法”在语言学中被称作“短语结构语法”。
-
短语结构树
短语结构语法描述了如何自顶而下的生成一个句子,反过来,句子也可以用短语结构语法来递归的分解。层级结构其实是一种树形结构,例如这句话“上海 浦东 开发 与 法制 建设 同步”,分解成如下图的短语结构树:
这样的树形结构称为短语结构树,相应的语法称为*短语结构语法**或上下文无关文法。至于树中的字母下面开始介绍。
-
宾州树库和中文树库
语言学家制定短语结构语法规范,将大量句子人工分解为树形结构,形成了一种语料库,称为树库( treebank )。常见的英文树库有宾州树库,相应地,中文领域有CTB。上图中叶子节点(词语)的上级节点为词性,词性是非终结符的一种,满足“词性生成词语”的推导规则。
常见的标记如下:
标记 释义 IP-HLN 单句-标题 NP-SBJ 名词短语-主语 NP-PN 名词短语-代词 NP 名词短语 VP 动词短语 但是由于短语结构语法比较复杂,相应句法分析器的准确率并不高,现在研究者绝大部分转向了另一种语法形式。
12.2 依存句法树
不同于短语结构树,依存句法树并不关注如何生成句子这种宏大的命题。依存句法树关注的是句子中词语之间的语法联系,并且将其约束为树形结构。
-
依存句法理论
依存语法理论认为词与词之间存在主从关系,这是一种二元不等价的关系。在句子中,如果一个词修饰另一个词,则称修饰词为从属词( dependent ),被修饰的词语称为支配词(head),两者之间的语法关系称为依存关系( dependency relation)。比如句子“大梦想”中形容词“大”与名词“梦想”之间的依存关系如图所示:
图中的箭头方向由支配词指向从属词,这是可视化时的习惯。将一个句子中所有词语的依存关系以有向边的形式表示出来,就会得到一棵树,称为依存句法树( dependency parse tree)。比如句子“弱小的我也有大梦想”的依存句法树如图所示。
现代依存语法中,语言学家 Robinson 对依存句法树提了 4 个约束性的公理。
-
有且只有一个词语(ROOT,虚拟根节点,简称虚根)不依存于其他词语。
-
除此之外所有单词必须依存于其他单词。
-
每个单词不能依存于多个单词。
-
如果单词 A 依存于 B,那么位置处于 A 和 B 之间的单词 C 只能依存于 A、B 或 AB 之间的单词。
这 4 条公理分别约束了依存句法树(图的特例)的根节点唯一性、 连通、无环和投射性( projective )。这些约束对语料库的标注以及依存句法分析器的设计奠定了基础。
-
中文依存句法树库
目前最有名的开源自由的依存树库当属UD ( Universal Dependencies),它以“署名-非商业性使用-相同方式共享4.0”等类似协议免费向公众授权。UD是个跨语种的语法标注项目,一共有 200 多名贡献者为 70 多种语言标注了 100 多个树库。具体到中文,存在4个不同领域的树库。本章选取其中规模最大的 UD_ Chinese GSD 作为示例。该树库的语种为繁体中文,将其转换为简体中文后,供大家下载使用。
http://file.hankcs.com/corpus/chs-gsd-ud.zip
该树库的格式为 CoNLL-U,这是一种以制表符分隔的表格格式。CoNLL-U 文件有10列,每行都是一个单词, 空白行表示句子结束。单元中的下划线 _ 表示空白, 结合其中一句样例,解释如表所示。
词性标注集合依存关系标注集请参考 UD 的官方网站:
http://niversaldependencies.org/guidelines.html
另一份著名的语料库依然是 CTB,只不过需要额外利用一些工具将短语结构树转换为依存句法树。读者可以直接下载转换后的 CTB 依存句法树库,其格式是类似于 CoNLl-U 的 CoNLL。
-
依存句法树的可视化
工具如下:
- 南京大学汤光超开发的 Dependency Viewer。导入 .conll 扩展名的树库文件即可。
- brat 标注工具。
可视化工具可以帮助我们理解句法树的结构,比较句子之间的不同。
12.3 依存句法分析
依存句法分析( dependency parsing )指的是分析句子的依存语法的一种中高级 NLP任务,其输人通常是词语和词性,输出则是一棵依存句法树。 本节介绍实现依存句法分析的两种宏观方法,以及依存句法分析的评价指标。
-
基于图的依存句法分析
正如树是图的特例一样,依存句法树其实是完全图的一个子图。如果为完全图中的每条边是否属于句法树的可能性打分,然后就可以利用 Prim 之类的算法找出最大生成树( MST )作为依存句法树了。这样将整棵树的分数分解( factorize )为每条边上的分数之和,然后在图上搜索最优解的方法统称为基于图的算法。
在传统机器学习时代,基于图的依存句法分析器往往面临运行开销大的问题。这是由于传统机器学习所依赖的特征过于稀疏,训练算法需要在整个图上进行全局的结构化预测等。考虑到这些问题,另一种基于转移的路线在传统机器学习框架下显得更加实用。
-
基于转移的依存句法分析
我们以“人 吃 鱼”这个句子为例子,手动构建依存句法树。
- 从“吃”连线到“人”建立依存关系,主谓关系。
- 从“吃”连线到“鱼”建立依存关系,动宾关系。
如此,我们将一棵依存句法树的构建过程表示为两个动作。如果机器学习模型能够根据句子的某些特征准确地预测这些动作,那么计算机就能够根据这些动作拼装出正确的依存句法树了。这种拼装动作称为转移( transition),而这类算法统称为基于转移的依存句法分析。
12.4 基于转移的依存句法分析
-
Arc-Eager 转移系统
一个转移系统 S 由 4 个部件构成: S = (C,T,Cs,Ct),其中:
- C 是系统状态的集合
- T 是所有可执行的转移动作的集合。
- Cs 是一个初始化函数
- Ct 为一系列终止状态,系统进入该状态后即可停机输出最终的动作序列。
而系统状态又由 3 元祖构成: C = (σ,β,A) 其中:
- σ 为一个存储单词的栈。
- β 为存储单词的队列
- A 为已确定的依存弧的集合。
Arc-Eager 转移系统的转移动作集合详见下表:
动作名称 条件 解释 Shift 队列 β 非空 将队首单词 i 压栈 LeftArc 栈顶单词 i 没有支配词 将栈顶单词 i 的支配词设为队首单词 j,即 i 作为 j 的子节点 RightArc 队首单词 j 没有支配词 将队首单词 j 的支配词设为栈顶单词 i,即 j 作为 i 的子节点 Reduce 栈顶单词 i 已有支配词 将栈顶单词 i 出栈
对于上面的“人 吃 鱼”案例,Arc-Eager 的执行步骤如下:
装填编号 σ 转移动作 β A 0 [] 初始化 [人,吃,鱼,虚根] {} 1 [人] Shift [吃,鱼,虚根] {} 2 [] LeftArc(主谓) [吃,鱼,虚根] 人主谓←−−吃人←主谓吃 3 [吃] Shift [鱼,虚根] 人主谓←−−吃人←主谓吃 4 [吃,鱼] RightArc(动宾) [虚根] 人主谓←−−吃,吃动宾−−→鱼人←主谓吃,吃→动宾鱼 5 [吃] Reduce [虚根] 人主谓←−−吃,吃动宾−−→鱼人←主谓吃,吃→动宾鱼 6 [] LeftArc(核心) [虚根] 人主谓←−−吃,吃动宾−−→鱼,吃核心←−−虚根人←主谓吃,吃→动宾鱼,吃←核心虚根 此时集合 A 中的依存弧为一颗依存句法树。
-
训练原理
对基于转移的依存句法分析器而言,它学习和预测的对象是一系列转移动作。然而依存句法树库是一棵树,并不是现成的转移动作序列。这时候就需要一个算法将语料库中的依存句法树转移为正确地转移动作序列。
这里可以使用感知机进行训练得到转移动作序列
训练句法分析器时,结构化感知机算法迭代式的优化线性模型,目标是使其将最高的分值赋予可抵达正确句法树的转移序列。
训练分为以下几个步骤:
- 读入一个训练样本,提取特征,创建 ArcEager 的初始状态 c。
- 若 c 不是终止状态,反复进行转移序列,修正参数。
- 算法终止,返回返回模型参数 w。
12.5 依存句法分析 API
-
训练模型
本节使用的语料库是 CTB8.0
训练时间比较长,结果如下:
人 人 N NN _ 2 nsubj _ _ 吃 吃 V VV _ 0 ROOT _ _ 鱼 鱼 N NN _ 2 dobj _ _ UAS=83.3% LAS=81.0%
-
标准化评测
给定两棵树,一棵树为标准答案(来自测试集),一棵树为预测结果,评测的目标是衡量这两棵树的差异。如果将树的节点编号,拆解为依存弧并分别存入两个集合 A ( 标准答案)和 B (预测结果),则可以利用分类任务的 F1 评价指标。
依存句法分析任务采用的评测指标为 UAS (unlabeled atachment score) 和 LAS (labeled attachment score ),分别对应忽略标签和包括标签的 F1 值。以 LAS 为例,具体计算方式如下:
UAS 的计算也是同理,只不过将每条依存弧上的标签去掉后放人集合参与运算即可。相较于 LAS, UAS 仅仅衡量支配词的预测准确率,不衡量依存关系的准确率,一般分数更高。在上面的训练模型中已经做了评测
UAS=83.3% LAS=81.0%
这个分数说明,在测试集上有 83% 的支配词被准确预测,有 81% 的依存弧被准确预测。
12.6 案例: 基于依存句法分析的意见抽取
其实许多人都有一个疑问,依存句法分析究竟可以用来干什么。本节就来利用依存句法分析实现一个意见抽取的例子,提取下列商品评论中的属性和买家评价。
电池非常棒,机身不长,长的是待机,但是屏幕分辨率不高。
为了提取“电池”“机身”“待机”和“分辨率”所对应的意见,朴素的处理方式是在分司和词性标注之后编写正则表达式,提取名词后面的形容词。然而正则表达式无法处理“长的是待机”这样句式灵活的例子。
这时就可以对这句话进行依存句法分析,分析代码如下:
from pyhanlp import * CoNLLSentence = JClass('com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLSentence') CoNLLWord = JClass('com.hankcs.hanlp.corpus.dependency.CoNll.CoNLLWord') IDependencyParser = JClass('com.hankcs.hanlp.dependency.IDependencyParser') KBeamArcEagerDependencyParser = JClass('com.hankcs.hanlp.dependency.perceptron.parser.KBeamArcEagerDependencyParser') parser = KBeamArcEagerDependencyParser() tree = parser.parse("电池非常棒,机身不长,长的是待机,但是屏幕分辨率不高。") print(tree)
运行结果如下:
电池 电池 N NN _ 3 nsubj _ _ 非常 非常 A AD _ 3 advmod _ _ 棒 棒 V VA _ 0 ROOT _ _ , , P PU _ 3 punct _ _ 机身 机身 N NN _ 7 nsubj _ _ 不 不 A AD _ 7 neg _ _ 长 长 V VA _ 3 conj _ _ , , P PU _ 7 punct _ _ 长 长 V VA _ 11 top _ _ 的 的 D DEC _ 9 cpm _ _ 是 是 V VC _ 7 conj _ _ 待机 待机 N NN _ 11 attr _ _ , , P PU _ 3 punct _ _ 但是 但是 A AD _ 18 advmod _ _ 屏幕 屏幕 N NN _ 16 nn _ _ 分辨率 分辨率 N NN _ 18 nsubj _ _ 不 不 A AD _ 18 neg _ _ 高 高 V VA _ 3 conj _ _ 。 。 P PU _ 3 punct _ _
进行可视化后:
仔细观察,不难发现“电池”与“棒”、“机身”与“长”、“分辨率”与“高”之间的依存关系都是 nsubj (名词性主语)。
-
利用这一规律, 不难写出第一版遍历算法, 也就是用个for 循环去遍历树中的每个节点。对于算法遍历树中的每一个词语, 如果其词性为名词且作为某个形容词的名词性主语,则认为该名词是属性,而形容词是意见。运行代码如下:
def extactOpinion1(tree): for word in tree.iterator(): if word.POSTAG == "NN" and word.DEPREL == "nsubj": print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA)) print("第一版") extactOpinion1(tree)
结果如下:
第一版 电池 = 棒 机身 = 长 分辨率 = 高
-
虽然的确提取出了一些意见,然而后两个都是错误的。这一版算法存在的问题之一是没有考虑到“机身不长””“分辨率不高”等否定修饰关系。否定修饰关系在依存句法中的标记为 neg,于是我们只需检查形容词是否存在否定修饰的支配词即可。于是得出第二版算法:
def extactOpinion2(tree): for word in tree.iterator(): if word.POSTAG == "NN" and word.DEPREL == "nsubj": if tree.findChildren(word.HEAD, "neg").isEmpty(): print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA)) else: print("%s = 不%s" % (word.LEMMA, word.HEAD.LEMMA)) print("第二版") extactOpinion2(tree)
结果如下:
第二版 电池 = 棒 机身 = 不长 分辨率 = 不高
-
接下来思考如何提取“待机”的意见,“待机”与“长”之间的公共父节点为“是”,于是我们得到第三版算法如下:
def extactOpinion3(tree): for word in tree.iterator(): if word.POSTAG == "NN": # 检测名词词语的依存弧是否是“属性关系”, # 如果是,则寻找支配词的子节点中的主题词 # 以该主题词作为名词的意见。 if word.DEPREL == "nsubj": # ①属性 if tree.findChildren(word.HEAD, "neg").isEmpty(): print("%s = %s" % (word.LEMMA, word.HEAD.LEMMA)) else: print("%s = 不%s" % (word.LEMMA, word.HEAD.LEMMA)) elif word.DEPREL == "attr": top = tree.findChildren(word.HEAD, "top") # ②主题 if not top.isEmpty(): print("%s = %s" % (word.LEMMA, top.get(0).LEMMA)) print("第三版") extactOpinion3(tree)
结果如下:
第三版 电池 = 棒 机身 = 不长 待机 = 长 分辨率 = 不高
至此,4 个属性被完整正确地提取出来了,读者可以尝试搜集更多的句子,通过分析句法结构总结更多的提取规则。
-
依存句法分析总结
2020-04-28 16:40:59依存句法分析(Dependency Parsing,DP)通过分析语言单位内成分之间的依存关系,揭示其句法结构。直观来讲,就是分析句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分的关系。对句法结构进行分析,一方面...1. 基本概念
依存句法分析(Dependency Parsing,DP)通过分析语言单位内成分之间的依存关系,揭示其句法结构。直观来讲,就是分析句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分的关系。对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言理解的基础,另外一方面,句法分析也为其他自然语言处理任务提供支持。比如:句法驱动的统计机器翻译需要对源语言或目标语言进行句法分析。
1.1 谓词
依存句法认为“谓词”中的动词是一个句子的核心,其他成分与动词直接或者间接的产生联系。
1.2 依存理论
依存理论中,“依存”指的是词与词之间处于支配与被支配的关系,这种关系具有方向性。处于支配地位的词称之为支配者(head),处于被支配地位的成分称之为从属者(dependency)。
依存语法存在一个基本假设,句法分析核心是词与词的依存关系,一个依存关系连接两个词:head和dependency。依存关系可以细分为不同类型,表示具体的两个词的依存关系。
1.3 依存关系
关系类型 Tag Description Example 主谓关系 SBV subject-verb 我送她一束花 (我 <– 送) 动宾关系 VOB 直接宾语,verb-object 我送她一束花 (送 –> 花) 间宾关系 IOB 间接宾语,indirect-object 我送她一束花 (送 –> 她) 前置宾语 FOB 前置宾语,fronting-object 他什么书都读 (书 <– 读) 兼语 DBL double 他请我吃饭 (请 –> 我) 定中关系 ATT attribute 红苹果 (红 <– 苹果) 状中结构 ADV adverbial 非常美丽 (非常 <– 美丽) 动补结构 CMP complement 做完了作业 (做 –> 完) 并列关系 COO coordinate 大山和大海 (大山 –> 大海) 介宾关系 POB preposition-object 在贸易区内 (在 –> 内) 左附加关系 LAD left adjunct 大山和大海 (和 <– 大海) 右附加关系 RAD right adjunct 孩子们 (孩子 –> 们) 独立结构 IS independent structure 两个单句在结构上彼此独立 核心关系 HED head 指整个句子的核心 2. 基本方法
-
基于转移的方法
基于转移的方法通过shift-reduce两个基本动作,将序列转为树结构。首先用一个 buffer 来存储所有未处理的输入句子,并用一个栈来存储当前的分析状态。动作可以分为:
- shift,即将 buffer 中的一个词移到栈中;
- l e f t _ a r c ( x ) left\_arc(x) left_arc(x),即栈顶两个词 a,b 为 a<-b 的依赖关系,关系种类为 x;
- r i g h t _ a r c ( x ) right\_arc(x) right_arc(x),即栈顶两个词 a,b 为 a->b 的依赖关系,关系种类为 x。后两种动作为 reduce 动作。
目前,基于转移的方法最好模型是stack lstm。 通过三个 LSTM 来分别建模栈状态、待输入序列和动作序列。 其中因为栈需要入栈和出栈,因此作者提出了一个 Stack LSTM 来建模栈状态。
论文地址: https://arxiv.org/pdf/1505.08075.pdf
-
基于图的方法
目前的依存句法分析中,最流行的方法是基于图的方法经典的方法是 Biaffine 模型。直接用神经网络来预测每两个词之间存在依存关系的概率,这样我们就得到一个全连接图,图上每个边代表了节点 a 指向节点 b 的概率。然后使用MST等方法来来将图转换为一棵树。
Biaffine 模型其实和我们目前全连接自注意力模型非常类似。Biaffine 模型十分简单,并且容易理解,并且在很多数据集上都取得了目前最好的结果。
论文地址:https://arxiv.org/pdf/1611.01734.pdf
-
联合模型(深度学习)
-
词性标注&句法分析
联合词性标注和句法分析的模型有很多,可以是基于转移的方法,也可以是基于图的方法,这里介绍一个简单思路。首先利用lstm来预测词性,然后联合词性信息和词信息一起用另外一个lstm来建模,并用Biaffine模型来做句法分析。
-
论文地址: https://arxiv.org/pdf/1807.03955.pdf
-
中文分词&句法分析
中文的句法分析是基于词级别的,所以在句法分析之前,会做分词。为了避免流水线模式的错误积累,很容易想到的就是分词和词法分析联合建模。
这里主要介绍一下邱希鹏教授实验室提出的模型:joint CWS。
其中两个关键点:
- biaffine parsing
- ‘app’ 作为特殊的依赖关系
其实方法很简单,只需要将词内部的字之间加上一个特殊的依赖关系“app”,然后将词级别的依存关系转换为字级别的依存关系。并且用 biaffine 模型来进行同时预测。
论文地址:https://arxiv.org/pdf/1904.04697.pdf
3. 常用工具
https://www.jianshu.com/p/867bd48cd9ad
3.1 LTP
-
安装
pip install pyltp
-
下载数据包
ltp_data_v3.4.0: 链接: https://pan.baidu.com/s/1aDrb95ylZHoTPKJY6K1Slw 密码: ehe2
-
测试代码
from pyltp import Parser, Postagger, Segmentor text = 'HanLP是一系列模型与算法组成的自然语言处理工具包,目标是普及自然语言处理在生产环境中的应用。' # 分词 segmentor = Segmentor() segmentor.load("/home/sunshine/datasets/other/ltp_data_v3.4.0/cws.model") tokens = segmentor.segment(text) # 词性 postagger = Postagger() postagger.load('/home/sunshine/datasets/other/ltp_data_v3.4.0/pos.model') postags = postagger.postag(tokens) # 依存句法分析 parser = Parser() parser.load('/home/sunshine/datasets/other/ltp_data_v3.4.0/parser.model') arcs = parser.parse(tokens, postags) i = 1 result = zip(tokens, postags, arcs) for item in result: print(i, item[0], item[1], item[2].head, item[2].relation) i += 1
1 HanLP ws 2 SBV 2 是 v 0 HED 3 一 m 4 ATT 4 系列 q 5 ATT 5 模型 n 8 SBV 6 与 c 7 LAD 7 算法 n 5 COO 8 组成 v 12 ATT 9 的 u 8 RAD 10 自然 n 11 ATT 11 语言 n 12 SBV 12 处理 v 2 VOB 13 工具包 n 12 VOB 14 , wp 2 WP 15 目标 n 16 SBV 16 是 v 2 COO 17 普及 v 16 VOB 18 自然 n 19 ATT 19 语言 n 20 ATT 20 处理 v 17 VOB 21 在 p 26 ATT 22 生产 v 23 ATT 23 环境 n 24 ATT 24 中 nd 21 POB 25 的 u 21 RAD 26 应用 v 20 VOB 27 。 wp 2 WP
3.2 stanfordNLP
3.2.1 StanordCoreNLP
Github地址:https://github.com/Lynten/stanford-corenlp
官网:https://stanfordnlp.github.io/CoreNLP/
-
安装
pip install stanfordcorenlp
-
安装java环境(略)
-
下载数据包
链接: https://pan.baidu.com/s/1kD3gaxVwvxZGaEN3EDedvA 提取码: m72n
数据包下载之后,解压stanford-corenlp-full-2018-02-27.zip,将stanford-chinese-corenlp-2018-02-27-models.jar拷贝至stanford-corenlp-full-2018-02-27.zip解压目录。
-
测试代码
from stanfordcorenlp import StanfordCoreNLP text = 'HanLP是一系列模型与算法组成的自然语言处理工具包,目标是普及自然语言处理在生产环境中的应用。' nlp = StanfordCoreNLP("/home/sunshine/datasets/other/standfordCoreNLP/stanford-corenlp-full-2018-02-27", lang='zh') tokens = nlp.word_tokenize(text) postags = nlp.pos_tag(text) result = nlp.dependency_parse(text) i = 1 for item in zip(tokens, postags, result): print(i, item[0], item[1][1], item[2][1], item[2][2]) i += 1
1 HanLP NR 0 12 2 是 VC 12 1 3 一 CD 12 2 4 系列 M 11 3 5 模型 NN 3 4 6 与 CC 7 5 7 算法 NN 7 6 8 组成 VV 8 7 9 的 DEC 11 8 10 自然 NN 8 9 11 语言 NN 11 10 12 处理 VV 12 11 13 工具包 NN 12 13 14 , PU 12 14 15 目标 NN 17 15 16 是 VC 17 16 17 普及 VV 12 17 18 自然 NN 19 18 19 语言 NN 17 19 20 处理 VV 17 20 21 在 P 23 21 22 生产 NN 23 22 23 环境 NN 26 23 24 中 LC 23 24 25 的 DEG 23 25 26 应用 NN 20 26 27 。 PU 12 27
-
依存句法解释
> > ROOT:要处理文本的语句 > > IP:简单从句 > > NP:名词短语 > > VP:动词短语 > > PU:断句符,通常是句号、问号、感叹号等标点符号 > > LCP:方位词短语 > > PP:介词短语 > > CP:由‘的’构成的表示修饰性关系的短语 > > DNP:由‘的’构成的表示所属关系的短语 > > ADVP:副词短语 > > ADJP:形容词短语 > > DP:限定词短语 > > QP:量词短语 > > NN:常用名词 > > NR:固有名词 > > NT:时间名词 > > PN:代词 > > VV:动词 > > VC:是 > > CC:表示连词 > > VE:有 > > VA:表语形容词 > > AS:内容标记(如:了) > > VRD:动补复合词 > > CD: 表示基数词 > > DT: determiner 表示限定词 > > EX: existential there 存在句 > > FW: foreign word 外来词 > > IN: preposition or conjunction, subordinating 介词或从属连词 > > JJ: adjective or numeral, ordinal 形容词或序数词 > > JJR: adjective, comparative 形容词比较级 > > JJS: adjective, superlative 形容词最高级 > > LS: list item marker 列表标识 > > MD: modal auxiliary 情态助动词 > > PDT: pre-determiner 前位限定词 > > POS: genitive marker 所有格标记 > > PRP: pronoun, personal 人称代词 > > RB: adverb 副词 > > RBR: adverb, comparative 副词比较级 > > RBS: adverb, superlative 副词最高级 > > RP: particle 小品词 > > SYM: symbol 符号 > > TO:”to” as preposition or infinitive marker 作为介词或不定式标记 > > WDT: WH-determiner WH限定词 > > WP: WH-pronoun WH代词 > > WP$: WH-pronoun, possessive WH所有格代词 > > WRB:Wh-adverb WH副词 > > > > 关系表示 > > abbrev: abbreviation modifier,缩写 > > acomp: adjectival complement,形容词的补充; > > advcl : adverbial clause modifier,状语从句修饰词 > > advmod: adverbial modifier状语 > > agent: agent,代理,一般有by的时候会出现这个 > > amod: adjectival modifier形容词 > > appos: appositional modifier,同位词 > > attr: attributive,属性 > > aux: auxiliary,非主要动词和助词,如BE,HAVE SHOULD/COULD等到 > > auxpass: passive auxiliary 被动词 > > cc: coordination,并列关系,一般取第一个词 > > ccomp: clausal complement从句补充 > > complm: complementizer,引导从句的词好重聚中的主要动词 > > conj : conjunct,连接两个并列的词。 > > cop: copula。系动词(如be,seem,appear等),(命题主词与谓词间的)连系 > > csubj : clausal subject,从主关系 > > csubjpass: clausal passive subject 主从被动关系 > > dep: dependent依赖关系 > > det: determiner决定词,如冠词等 > > dobj : direct object直接宾语 > > expl: expletive,主要是抓取there > > infmod: infinitival modifier,动词不定式 > > iobj : indirect object,非直接宾语,也就是所以的间接宾语; > > mark: marker,主要出现在有“that” or “whether”“because”, “when”, > > mwe: multi-word expression,多个词的表示 > > neg: negation modifier否定词 > > nn: noun compound modifier名词组合形式 > > npadvmod: noun phrase as adverbial modifier名词作状语 > > nsubj : nominal subject,名词主语 > > nsubjpass: passive nominal subject,被动的名词主语 > > num: numeric modifier,数值修饰 > > number: element of compound number,组合数字 > > parataxis: parataxis: parataxis,并列关系 > > partmod: participial modifier动词形式的修饰 > > pcomp: prepositional complement,介词补充 > > pobj : object of a preposition,介词的宾语 > > poss: possession modifier,所有形式,所有格,所属 > > possessive: possessive modifier,这个表示所有者和那个’S的关系 > > preconj : preconjunct,常常是出现在 “either”, “both”, “neither”的情况下 > > predet: predeterminer,前缀决定,常常是表示所有 > > prep: prepositional modifier > > prepc: prepositional clausal modifier > > prt: phrasal verb particle,动词短语 > > punct: punctuation,这个很少见,但是保留下来了,结果当中不会出现这个 > > purpcl : purpose clause modifier,目的从句 > > quantmod: quantifier phrase modifier,数量短语 > > rcmod: relative clause modifier相关关系 > > ref : referent,指示物,指代 > > rel : relative > > root: root,最重要的词,从它开始,根节点 > > tmod: temporal modifier > > xcomp: open clausal complement > > xsubj : controlling subject 掌控者 > > 中心语为谓词 > > subj — 主语 > > nsubj — 名词性主语(nominal subject) (同步,建设) > > top — 主题(topic) (是,建筑) > > npsubj — 被动型主语(nominal passive subject),专指由“被”引导的被动句中的主语,一般是谓词语义上的受事 (称作,镍) > > csubj — 从句主语(clausal subject),中文不存在 > > xsubj — x主语,一般是一个主语下面含多个从句 (完善,有些) > > 中心语为谓词或介词 > > obj — 宾语 > > dobj — 直接宾语 (颁布,文件) > > iobj — 间接宾语(indirect object),基本不存在 > > range — 间接宾语为数量词,又称为与格 (成交,元) > > pobj — 介词宾语 (根据,要求) > > lobj — 时间介词 (来,近年) > > 中心语为谓词 > > comp — 补语 > > ccomp — 从句补语,一般由两个动词构成,中心语引导后一个动词所在的从句(IP) (出现,纳入) > > xcomp — x从句补语(xclausal complement),不存在 > > acomp — 形容词补语(adjectival complement) > > tcomp — 时间补语(temporal complement) (遇到,以前) > > lccomp — 位置补语(localizer complement) (占,以上) > > — 结果补语(resultative complement) > > 中心语为名词 > > mod — 修饰语(modifier) > > pass — 被动修饰(passive) > > tmod — 时间修饰(temporal modifier) > > rcmod — 关系从句修饰(relative clause modifier) (问题,遇到) > > numod — 数量修饰(numeric modifier) (规定,若干) > > ornmod — 序数修饰(numeric modifier) > > clf — 类别修饰(classifier modifier) (文件,件) > > nmod — 复合名词修饰(noun compound modifier) (浦东,上海) > > amod — 形容词修饰(adjetive modifier) (情况,新) > > advmod — 副词修饰(adverbial modifier) (做到,基本) > > vmod — 动词修饰(verb modifier,participle modifier) > > prnmod — 插入词修饰(parenthetical modifier) > > neg — 不定修饰(negative modifier) (遇到,不) > > det — 限定词修饰(determiner modifier) (活动,这些) > > possm — 所属标记(possessive marker),NP > > poss — 所属修饰(possessive modifier),NP > > dvpm — DVP标记(dvp marker),DVP (简单,的) > > dvpmod — DVP修饰(dvp modifier),DVP (采取,简单) > > assm — 关联标记(associative marker),DNP (开发,的) > > assmod — 关联修饰(associative modifier),NP|QP (教训,特区) > > prep — 介词修饰(prepositional modifier) NP|VP|IP(采取,对) > > clmod — 从句修饰(clause modifier) (因为,开始) > > plmod — 介词性地点修饰(prepositional localizer modifier) (在,上) > > asp — 时态标词(aspect marker) (做到,了) > > partmod– 分词修饰(participial modifier) 不存在 > > etc — 等关系(etc) (办法,等) > > 中心语为实词 > > conj — 联合(conjunct) > > cop — 系动(copula) 双指助动词???? > > cc — 连接(coordination),指中心词与连词 (开发,与) > > 其它 > > attr — 属性关系 (是,工程) > > cordmod– 并列联合动词(coordinated verb compound) (颁布,实行) > > mmod — 情态动词(modal verb) (得到,能) > > ba — 把字关系 > > tclaus — 时间从句 (以后,积累) > > — semantic dependent > > cpm — 补语化成分(complementizer),一般指“的”引导的CP (振兴,的) > > ``` > ```
3.2.2 stanza
github: https://github.com/stanfordnlp/stanza
stanza同样是stanford发布的版本。
-
安装
pip install stanza
-
下载模型
import stanza stanza.download('zh')
我这里提供一份中文的模型包供大家下载。
链接: https://pan.baidu.com/s/1hb9ATqpOGC9sHBHZ2hNdeg 提取码: fqdm
-
测试代码
import stanza nlp = stanza.Pipeline('zh') # This sets up a default neural pipeline in English doc = nlp("HanLP是一系列模型与算法组成的自然语言处理工具包,目标是普及自然语言处理在生产环境中的应用。") doc.sentences[0].print_dependencies()
('HanLP', '14', 'nsubj') ('是', '14', 'cop') ('一', '4', 'nummod') ('系列', '5', 'clf') ('模型', '8', 'nsubj') ('与', '7', 'cc') ('算法', '5', 'conj') ('组成', '14', 'acl:relcl') ('的', '8', 'mark:relcl') ('自然', '12', 'nmod') ('语言', '12', 'compound') ('处', '13', 'nmod') ('理工', '14', 'nsubj') ('具包', '0', 'root') (',', '14', 'punct') ('目标', '17', 'nsubj') ('是', '14', 'parataxis') ('普及', '17', 'xcomp') ('自然', '20', 'nmod') ('语言', '21', 'nsubj') ('处理', '18', 'ccomp') ('在', '27', 'det') ('生产', '24', 'nmod') ('环境', '22', 'nmod') ('中', '24', 'acl') ('的', '22', 'case:dec') ('应用', '18', 'obj') ('。', '14', 'punct')
3.3 HaNLP
官网:http://hanlp.linrunsoft.com/
在线演示:http://hanlp.com/
3.3.1 pyhanlp(hanlp1.x)
Github地址:https://github.com/hankcs/pyhanlp
-
安装
pip install pyhanlp
-
下载数据包
data:链接: https://pan.baidu.com/s/169Fgb6vhfsx10O2xEomY1Q 提取码: r4zv
将下载的数据包解压至%python_lib%/site-packages/pyhanlp/static文件夹。我这里提供的是1.7.5版本,同样支持1.7.7版本的pyhanlp。
默认会自动下载相关的jar包。
-
测试代码
from pyhanlp import HanLP print(HanLP.parseDependency("HanLP是一系列模型与算法组成的自然语言处理工具包,目标是普及自然语言处理在生产环境中的应用"))
1 HanLP HanLP ws nx _ 2 主谓关系 _ _ 2 是 是 v v _ 0 核心关系 _ _ 3 一系列 一系列 n n _ 4 定中关系 _ _ 4 模型 模型 n n _ 7 主谓关系 _ _ 5 与 与 p p _ 7 状中结构 _ _ 6 算法 算法 n n _ 5 介宾关系 _ _ 7 组成 组成 v v _ 10 定中关系 _ _ 8 的 的 u u _ 7 右附加关系 _ _ 9 自然语言处理 自然语言处理 nz nz _ 10 定中关系 _ _ 10 工具包 工具包 n n _ 2 动宾关系 _ _ 11 , , wp w _ 2 标点符号 _ _ 12 目标 目标 n n _ 13 主谓关系 _ _ 13 是 是 v v _ 2 并列关系 _ _ 14 普及 普及 v v _ 13 动宾关系 _ _ 15 自然语言处理 自然语言处理 nz nz _ 19 主谓关系 _ _ 16 在 在 p p _ 19 状中结构 _ _ 17 生产环境 生产环境 n n _ 16 介宾关系 _ _ 18 中的 中的 v v _ 19 状中结构 _ _ 19 应用 应用 v vn _ 14 动宾关系 _ _
3.3.2 hanlp2.0
-
安装
pip install hanlp
hanlp2.0是基于tensorflow2.1训练的网络模型,线上提供了很多训练好的预训练模型,问题在于基本上不可能自动下载成功,需要手动下载模型并存放到相应的位置。
-
查看已经提供的模型
import hanlp for k,v in hanlp.pretrained.ALL.items(): print(k, v)
-
测试代码
tokenizer = hanlp.load('CTB6_CONVSEG') tagger = hanlp.load('CTB5_POS_RNN') syntactic_parser = hanlp.load('CTB7_BIAFFINE_DEP_ZH') pipeline = hanlp.pipeline() \ .append(hanlp.utils.rules.split_sentence, output_key='sentences') \ .append(tokenizer, output_key='tokens') \ .append(tagger, output_key='part_of_speech_tags') \ .append(syntactic_parser, input_key=('tokens', 'part_of_speech_tags'), output_key='syntactic_dependencies', conll=False) text = 'HanLP是一系列模型与算法组成的自然语言处理工具包,目标是普及自然语言处理在生产环境中的应用' doc = pipeline(text) tokens = doc.tokens[0] pos = doc.part_of_speech_tags[0] dependencies = doc.syntactic_dependencies[0] for i in range(len(tokens)): print(i, tokens[i], pos[i], dependencies[i][0], dependencies[i][1])
0 HanLP NN 2 top 1 是 VC 0 root 2 一系列 NN 6 nn 3 模型 NN 6 conj 4 与 CC 6 cc 5 算法 NN 7 nsubj 6 组成 VV 10 rcmod 7 的 DEC 7 cpm 8 自然 NN 10 nn 9 语言 NN 11 nsubj 10 处理 VV 2 ccomp 11 工具包 PU 11 punct 12 , PU 2 punct 13 目标 NN 15 top 14 是 VC 2 conj 15 普及 VV 15 ccomp 16 自然 NN 18 nn 17 语言 NN 16 dobj 18 处理 VV 16 conj 19 在 P 25 assmod 20 生产 NN 22 nn 21 环境 NN 23 lobj 22 中 LC 20 plmod 23 的 DEG 20 assm 24 应用 NN 19 dobj
4. 数据集
-
Penn Treebank
Penn Treebank是一个项目的名称,项目目的是对语料进行标注,标注内容包括词性标注以及句法分析。
-
SemEval-2016 Task 9
中文语义依存图数据:http://ir.hit.edu.cn/2461.html
下载地址:https://github.com/HIT-SCIR/SemEval-2016
-
evsam05
链接: https://pan.baidu.com/s/1cFQBNcd-HnuTPUlGT7h9wg 提取码: tjdx
-
CoNLL任务
- http://universaldependencies.org/conll18/
- http://ufal.mff.cuni.cz/conll2009-st/
- https://www.clips.uantwerpen.be/conll2008/
- https://www.clips.uantwerpen.be/conll2007/
5. 可视化工具
-
conllu.js
-
DependencyViewer.exe
参考:
-
-
.依存句法分析--提取用户评论
2020-09-08 11:05:25依存句法分析--提取用户评论 2020-02-252020-02-25 15:18:28阅读 1940笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP12. 依存句法分析语法分析(syntactic parsing )是自然语言处理中一个重要... -
依存句法分析:原理、应用
2018-11-23 16:14:38句法:句子的各个组成部分的排列以及相互关系,研究句子类型和句子成分。 语法:词法和句法合称为语法。 词性(词类):词的类型。具有相同句法功能、能在同样的组合位置中出现的词,聚合成一个词类(词性)。 ... -
依存分析:基于序列标注的中文依存句法分析模型实现
2018-02-13 14:20:341、中文依存句法分析 二、实战 1、数据源 数据采用清华大学语义依存网络语料作为训练集,同时在开发集上进行测试。 (1)语料预处理 原语料库如下: 1 坚决 坚决 a ad _ 2 方式 2 惩治 惩治 v v _ 0 ... -
百度中文依存句法分析工具DDParser重磅开源
2020-08-14 19:21:00继百度词法分析工具LAC 2.0开源之后,8月4日,百度NLP又重磅发布了中文依存句法分析工具—DDParser!相较于目前的其他句法分析工具,DDParser基于大规模标注数据进行模型... -
Stanford CoreNLP超简单安装及简单使用,句法分析及依存句法分析
2021-05-07 08:20:06Stanford CoreNLP超简单安装及简单使用,句法分析及依存句法分析,使用jupyter notebook 今天我们来使用Stanford CoreNLP进行简单的句法分析,我使用的是jupyter notebook。网上关于Stanford CoreNLP工具的安装... -
《自然语言处理入门》12.依存句法分析--提取用户评论
2020-02-18 20:07:13依存句法分析12.1 短语结构树12.2 依存句法树12.3 依存句法分析12.4 基于转移的依存句法分析12.5 依存句法分析 API12.6 案例: 基于依存句法分析的意见抽取12.7 GitHub 笔记转载于GitHub项目:... -
典型相关分析matlab实现代码-HanlpNet:HanLp在dotNet平台的调用,中文分词词性标注命名实体识别依存句法...
2021-05-20 12:07:43依存句法分析 语义依存分析 新词发现 关键词短语提取 自动摘要 文本分类聚类 拼音简繁转换 自然语言处理 HanLP: Han Language Processing | | | 面向生产环境的多语种自然语言处理工具包,基于 TensorFlow 2.0,目标... -
百度开源的依存句法分析系统
2020-09-06 20:05:00向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx依存句法分析是自然语言处理核心技术之一,旨在通过分析句子中词语之间的依存关系来确定句... -
一文轻松理解依存句法分析
2020-02-12 22:39:28点击上方蓝色字体,关注AI小白入门哟跟着博主的脚步,每天进步一点点本文简要介绍了自然语言处理中极其重要的句法分析,并侧重对依存句法分析进行了重点总结,包括定义、重要概念、基本方法、性能评... -
基于CRF序列标注的中文依存句法分析器的Java实现
2021-04-12 14:02:47这是一个基于CRF的中文依存句法分析器,内部CRF模型的特征函数采用双数组Trie树(DoubleArrayTrie)储存,解码采用特化的维特比后向算法。相较于《最大熵依存句法分析器的实现》,分析速度翻了一倍,达到了1262.8655 ... -
HanLP:中文分词词性标注命名实体识别依存句法分析语义依存分析新词发现用自动生成的摘要进行文本分类聚类...
2021-02-03 15:10:59MSRA,OntoNotes三套规范),依存句法分析(SD,UD规范),成分法分析,语义依存分析(SemEval16,DM,PAS,PSD四套规范),语义角色标注,词干提取,词法语法特征提取,抽象意义(AMR)。 量体裁衣,HanLP提供... -
自然语言处理(三)——句法分析与依存句法分析
2019-05-24 21:56:07文章目录一、StanfordCoreNLP对英文进行处理二、StanfordCoreNLP对中文进行处理三、LTP对中文进行处理四、结论附录 · 本文所使用工具代码与中英文文本下载 一、StanfordCoreNLP对英文进行处理 在使用... -
别说还不懂依存句法分析
2019-04-08 19:11:00本文简要介绍了自然语言处理中极其重要的句法分析,并侧重对依存句法分析进行了重点总结,包括定义、重要概念、基本方法、性能评价、依存分析数据集,最后,分享了一些流行的工具以及... -
【一分钟知识】依存句法分析
2019-07-07 18:01:14来自 AI小白入门本文简要介绍了自然语言处理中极其重要的句法分析,并侧重对依存句法分析进行了重点总结,包括定义、重要概念、基本方法、性能评价、依存分析数据集,最后,分享了一些流行的工具以... -
使用stanford nlp进行依存句法分析
2018-04-04 15:35:10本文主要研究下如何使用stanford nlp进行依存句法分析 maven <dependency> <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp<... -
NLP词性分析,实体分析,句法树构造(依存句法树分析)
2021-07-26 21:49:47core_web_sm') doc = nlp("小猴子吃了5根香蕉") for token in doc: print('{0}({1}) ({4})'.format(token.text, token.tag_, token.dep_, token.head.text, token.head.tag_)) doc = nlp("依存句法分析作为底层技术... -
[Python知识图谱] 二.哈工大pyltp词性标注、命名实体识别、依存句法分析和语义角色标注
2019-06-17 10:26:07本系列文章主要结合Python语言实现知识图谱构建相关工程,具有一定创新性和实用性,非常希望各位博友...第二篇文章主要讲解词性标注、实体识别、依存句法分析和语义角色标注。希望基础性文章对你有所帮助,一起加油~ -
利用好手头的资源解决海量语料资源收集以及利用哈工大的LTP云平台解决依存句法和语义依存分析
2018-07-09 11:44:07上面得到的仅是搜索结果,它只是一种索引,真正的内容需要进入到每一个链接才能拿到,下面我们尝试提取出每一个链接并继续抓取里面的内容,那么如何提取链接呢,我们来分析一下result.html这个抓取百度搜索结果文件 ... -
EACL 2021 | 基于依存句法增强的方面情感分析
2021-05-10 00:04:16©PaperWeekly 原创 ·作者|李东明学校|香港中文大学(深圳)本科生研究方向|文本生成论文标题:Enhancing Aspect-level Sentiment Analysi... -
golang知识图谱NLP实战第二节——解析依存句法分析结果
2018-07-29 00:41:18golang知识图谱NLP实战第一节——整体思路 ...基于依存句法分析的开放式中文实体关系抽取https://blog.csdn.net/heuguangxu/article/details/80088489 基于神经网络的高性能依存句法分析器http://www....