【一分钟知识】依存句法分析
来自 AI小白入门
本文简要介绍了自然语言处理中极其重要的句法分析,并侧重对依存句法分析进行了重点总结,包括定义、重要概念、基本方法、性能评价、依存分析数据集,最后,分享了一些流行的工具以及工具实战例子。
句法分析
句法分析(syntactic parsing)是自然语言处理中的关键技术之一,它是对输入的文本句子进行分析以得到句子的句法结构的处理过程。对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言理解的重要一环,另一方面也为其它自然语言处理任务提供支持。例如句法驱动的统计机器翻译需要对源语言或目标语言(或者同时两种语言)进行句法分析。
语义分析通常以句法分析的输出结果作为输入以便获得更多的指示信息。根据句法结构的表示形式不同,最常见的句法分析任务可以分为以下三种:
句法结构分析(syntactic structure parsing),又称短语结构分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing)。作用是识别出句子中的短语结构以及短语之间的层次句法关系。
依存关系分析,又称依存句法分析(dependency syntactic parsing),简称依存分析,作用是识别句子中词汇与词汇之间的相互依存关系。
深层文法句法分析,即利用深层文法,例如词汇化树邻接文法(Lexicalized Tree Adjoining Grammar,LTAG)、词汇功能文法(Lexical Functional Grammar,LFG)、组合范畴文法(Combinatory Categorial Grammar,CCG)等,对句子进行深层的句法以及语义分析。
依存句法定义
维基百科是这样描述的:The dependency-based parse trees of dependency grammars see all nodes as terminal, which means they do not acknowledge the distinction between terminal and non-terminal categories. They are simpler on average than constituency-based parse trees because they contain fewer nodes.
依存句法是由法国语言学家L.Tesniere最先提出。它将句子分析成一颗依存句法树,描述出各个词语之间的依存关系。也即指出了词语之间在句法上的搭配关系,这种搭配关系是和语义相关联的。
在自然语言处理中,用词与词之间的依存关系来描述语言结构的框架称为依存语法(dependence grammar),又称从属关系语法。利用依存句法进行句法分析是自然语言理解的重要技术之一。
重要概念
依存句法认为“谓语”中的动词是一个句子的中心,其他成分与动词直接或间接地产生联系。
依存句法理论中,“依存”指词与词之间支配与被支配的关系,这种关系不是对等的,这种关系具有方向。确切的说,处于支配地位的成分称之为支配者(governor,regent,head),而处于被支配地位的成分称之为从属者(modifier,subordinate,dependency)。
依存语法本身没有规定要对依存关系进行分类,但为了丰富依存结构传达的句法信息,在实际应用中,一般会给依存树的边加上不同的标记。
依存语法存在一个共同的基本假设:句法结构本质上包含词和词之间的依存(修饰)关系。一个依存关系连接两个词,分别是核心词(head)和依存词(dependent)。依存关系可以细分为不同的类型,表示两个词之间的具体句法关系。
常见方法
基于规则的方法: 早期的基于依存语法的句法分析方法主要包括类似CYK的动态规划算法、基于约束满足的方法和确定性分析策略等。
基于统计的方法:统计自然语言处理领域也涌现出了一大批优秀的研究工作,包括生成式依存分析方法、判别式依存分析方法和确定性依存分析方法,这几类方法是数据驱动的统计依存分析中最为代表性的方法。
基于深度学习的方法:近年来,深度学习在句法分析课题上逐渐成为研究热点,主要研究工作集中在特征表示方面。传统方法的特征表示主要采用人工定义原子特征和特征组合,而深度学习则把原子特征(词、词性、类别标签)进行向量化,在利用多层神经元网络提取特征。
依存分析器的性能评价
通常使用的指标包括:无标记依存正确率(unlabeled attachment score,UAS)、带标记依存正确率(labeled attachment score, LAS)、依存正确率(dependency accuracy,DA)、根正确率(root accuracy,RA)、完全匹配率(complete match,CM)等。这些指标的具体意思如下:
无标记依存正确率(UAS):测试集中找到其正确支配词的词(包括没有标注支配词的根结点)所占总词数的百分比。
带标记依存正确率(LAS):测试集中找到其正确支配词的词,并且依存关系类型也标注正确的词(包括没有标注支配词的根结点)占总词数的百分比。
依存正确率(DA):测试集中找到正确支配词非根结点词占所有非根结点词总数的百分比。
根正确率(RA):有二种定义,一种是测试集中正确根结点的个数与句子个数的百分比。另一种是指测试集中找到正确根结点的句子数所占句子总数的百分比。
完全匹配率(CM):测试集中无标记依存结构完全正确的句子占句子总数的百分比。
数据集
Penn Treebank:Penn Treebank是一个项目的名称,项目目的是对语料进行标注,标注内容包括词性标注以及句法分析。
SemEval-2016 Task 9中文语义依存图数据:http://ir.hit.edu.cn/2461.html
下载地址:https://github.com/HIT-SCIR/SemEval-2016
CoNLL经常开放句法分析的学术评测,比如:
2018年的通用句法分析评测任务:
http://universaldependencies.org/conll18/
2009年多语言多语言的句法依存和语义角色联合评测任务:
http://ufal.mff.cuni.cz/conll2009-st/2008年英语的依存句法-语义角色联合评测任务:
https://www.clips.uantwerpen.be/conll2008/2007年多语言依存分析评测:
https://www.clips.uantwerpen.be/conll2007/
工具推荐
StanfordCoreNLP
斯坦福大学开发的,提供依存句法分析功能。
Github地址:https://github.com/Lynten/stanford-corenlp
官网:https://stanfordnlp.github.io/CoreNLP/
# 安装:pip install stanfordcorenlp
# 国内源安装:pip install stanfordcorenlp -i https://pypi.tuna.tsinghua.edu.cn/simple
# 使用stanfordcorenlp进行依存句法分析
# 先下载模型,下载地址:https://nlp.stanford.edu/software/corenlp-backup-download.html
from stanfordcorenlp import StanfordCoreNLP
# 对中文进行依存句法分析
zh_model = StanfordCoreNLP(r'stanford-corenlp-full-2018-02-27', lang='zh')
s_zh = '我爱自然语言处理技术!'
dep_zh = zh_model.dependency_parse(s_zh)
print(dep_zh)[('ROOT', 0, 4), ('nsubj', 4, 1), ('advmod', 4, 2), ('nsubj', 4, 3), ('dobj', 4, 5), ('punct', 4, 6)]# 对英文进行依存句法分析
eng_model = StanfordCoreNLP(r'stanford-corenlp-full-2018-02-27')
s_eng = 'I love natural language processing technology!'
dep_eng = eng_model.dependency_parse(s_eng)
print(dep_eng)[('ROOT', 0, 2), ('nsubj', 2, 1), ('amod', 6, 3), ('compound', 6, 4), ('compound', 6, 5), ('dobj', 2, 6), ('punct', 2, 7)]
HanLP
HanLP是一系列模型与算法组成的NLP工具包。提供了中文依存句法分析功能。
Github地址:https://github.com/hankcs/pyhanlp
官网:http://hanlp.linrunsoft.com/
# 安装:pip install pyhanlp
# 国内源安装:pip install pyhanlp -i https://pypi.tuna.tsinghua.edu.cn/simple
from pyhanlp import *
s_zh = '我爱自然语言处理技术!'
dep_zh = HanLP.parseDependency(s_zh)
print(dep_zh)1 我 我 r r _ 2 主谓关系 _ _
2 爱 爱 v v _ 0 核心关系 _ _
3 自然语言处理 自然语言处理 v v _ 4 定中关系 _ _
4 技术 技术 n n _ 2 动宾关系 _ _
5 ! ! wp w _ 2 标点符号 _ _
SpaCy
工业级的自然语言处理工具,遗憾的是目前不支持中文。
Gihub地址:https://github.com/explosion/spaCy
官网:https://spacy.io/
FudanNLP
复旦大学自然语言处理实验室开发的中文自然语言处理工具包,包含信息检索:文本分类、新闻聚类;中文处理:中文分词、词性标注、实体名识别、关键词抽取、依存句法分析、时间短语识别;结构化学习:在线学习、层次分类、聚类。
Github地址:https://github.com/FudanNLP/fnlp
代码已上传:https://github.com/yuquanle/StudyForNLP/blob/master/NLPbasic/Dependency.ipynb
参考:
1.统计自然语言处理
2.中文信息处理报告-2016
推荐阅读:
一大批历史精彩文章啦
【一分钟知识】七种损失函数
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】轻松解读Semi-supervised Sequence Learning半监督序列学习
详解Transition-based Dependency parser基于转移的依存句法解析器
干货 | 找工作的经验总结(一)
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
是时候研读一波导师的论文--一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作
【一分钟知识】依存句法分析相关推荐
- 知识图谱--实体关系抽取,依存句法分析
我爱自然语言处理 https://www.52nlp.cn/tag/%E4%BE%9D%E5%AD%98%E5%8F%A5%E6%B3%95%E5%88%86%E6%9E%90 基于Hanlp的依存句 ...
- 句法依存分析_恭喜 | 黑龙江大学自然语言处理实验室获得NLPCC2019跨领域移植中文依存句法分析封闭测试第一名!...
点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要3分钟 跟随小博主,每天进步一丢丢 欢送师兄师姐毕业 任务介绍 我们做的实验为Task1的closed任务 任务设置 任务描述: 输入一个自然语 ...
- 语义角色标注视为依存句法分析任务:探索论元内部的隐式树结构
©作者 | 张宇 单位 | 苏州大学博士生 研究方向 | 句法分析/语义分析 语义角色标注(SRL)是 NLP 中一个基础且重要的任务,主要涉及谓词和论元的识别,以及相应的角色标签标注等等. 最近主流 ...
- 百度开源的依存句法分析系统
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 依存句法分析是自然语言处理核心技术之一,旨在通过分析句子中词语之间的依存关系来确定句子的句法结 ...
- 基于依存句法分析的开放式中文实体关系抽取
参考: HanLP自然语言处理 基于依存分析的开放式中文实体关系抽取方法 命名实体三元组抽取参考自fact_triple_extraction 这一段时间一直在做知识图谱,卡在实体关系抽取这里几个月了 ...
- NLP笔记之依存句法分析
一.语法分析 语法分析是自然语言处理中一个重要的任务,其目的是分析句子的语法结构并将其表示为容易理解的结构.语法分析是所有工具性NLP任务中较为高级.较为复杂的一种任务. 二.短语结构树 短语结构语法 ...
- 【ChatGPT4】 NLP(自然语言处理)第六课 基于统计和基于深度学习的依存句法分析方法
我在起,点更新NLP自然语言处理==><王老师带我成为救世主> (1)-------------------------------------------------------- ...
- 自然语言处理(NLP)之依存句法分析的可视化及图分析
依存句法分析的效果虽然没有像分词.NER的效果来的好,但也有其使用价值,在日常的工作中,我们免不了要和其打交道.如何分析依存句法分析的结果,一个重要的方面便是其可视化和它的图分析. 我们使用的NLP工 ...
- 自然语言处理(NLP)之pyltp的介绍与使用(中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注)
pyltp的简介 语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...
- 句法分析是什么?成分句法分析、依存句法分析又是什么?他们之间有什么区别?
句法分析是什么?成分句法分析.依存句法分析又是什么?他们之间有什么区别? 目录
最新文章
- javascript 事件对象
- Linux初学(CnetOS7 Linux)之切换命令模式和图形模式的方法
- 3项目里面全局用less变量 cli vue_vue-cli3 如何全局引入less变量
- [洛谷P1074] 靶形数独
- button点击后变色_炒丝瓜怎么不变色?鹏厨教你制作小窍门,健康美味、颜色碧绿...
- react的导出是怎么实现的_不到一百行代码,我们来实现一个简简简简简简简简简简版react库...
- python制作翻译器代码_翻译器(3)
- webrtc学习--websocket服务器(二) (web端播放h264)
- Maven-仓库概念,下载与配置
- 安卓机更新系统会卡吗_安卓手机系统会不会越更新越卡?
- 第七章 本源时空(补充)
- 用html代码制作一个歌单,歌单.html · 李岢恩/MusicClub - Gitee.com
- python实现QQ邮件的自动收发
- Java根据多个文件URL打包成一个压缩包下载
- HDU2550 百步穿杨【打印图案】
- Mac macOs Big Sur 版本11.2.3 解决安装了思科AnyConnect开机总是弹框提示安全移动客户端通知的问题
- vue scroll 监听,点击按钮自动滚动到相应的信息展示
- 高级软件工程第三次大作业(周帅)
- 图形化界面扫雷(C语言+easyx实现,多图教学)
- 算法(笔试题) : 城市天际线