自然语言处理 - 依存句法分析

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 句法分析(syntactic parsing)是自然语言处理中的关键技术之一,它是对输入的文本句子进行分析以得到句子的句法结构的处理过程。对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言理解的重要一环,另一方面也为其它自然语言处理任务提供支持。例如句法驱动的统计机器翻译需要对源语言或目标语言(或者同时两种语言)进行句法分析;语义分析通常以句法分析的输出结果作为输入以便获得更多的指示信息。

句法分析(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)等,对句子进行深层的句法以及语义分析。

今天学习一波依存句法分析,依存句法分析属于浅层句法分析。

首先我们依旧来看看它的定义:
百度百科定义:依存句法是由法国语言学家L.Tesniere最先提出。它将句子分析成一颗依存句法树,描述出各个词语之间的依存关系。也即指出了词语之间在句法上的搭配关系,这种搭配关系是和语义相关联的。

维基百科定义: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.

在自然语言处理中,用词与词之间的依存关系来描述语言结构的框架称为依存语法(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/

Hanlp:HanLP是一系列模型与算法组成的NLP工具包。提供了中文依存句法分析功能。

Github地址:https://github.com/hankcs/pyhanlp

官网:http://hanlp.linrunsoft.com/

SpaCy:工业级的自然语言处理工具,遗憾的是不支持中文。

Gihub地址:https://github.com/explosion/spaCy

官网:https://spacy.io/

FudanNLP:复旦大学自然语言处理实验室开发的中文自然语言处理工具包,包含信息检索: 文本分类、新闻聚类;中文处理: 中文分词、词性标注、实体名识别、关键词抽取、依存句法分析、时间短语识别;结构化学习: 在线学习、层次分类、聚类。

Github地址:https://github.com/FudanNLP/fnlp

参考:

1.统计自然语言处理

2.中文信息处理报告-2016

作者:yuquanle
链接:https://www.jianshu.com/p/24e0d53b1ee2
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
过去,文本分析往往是依靠人工阅读、标注和分类。但随着自然语言处理(NLP)技术的发展,文本分析的方式也在发生变化。本文将探讨NLP在文本分析中的应用,介绍NLP技术在不同领域的具体应用案例,并探讨NLP技术未来的发展方向。
106 0
|
1月前
|
自然语言处理 算法 Python
自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
【10月更文挑战第9天】自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
48 4
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
47 2
|
3月前
|
自然语言处理 算法 数据可视化
NLP-基于bertopic工具的新闻文本分析与挖掘
这篇文章介绍了如何使用Bertopic工具进行新闻文本分析与挖掘,包括安装Bertopic库、加载和预处理数据集、建立并训练主题模型、评估模型性能、分类新闻标题、调优聚类结果的详细步骤和方法。
NLP-基于bertopic工具的新闻文本分析与挖掘
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--1 赛后总结与分析
参与讯飞英文学术论文分类挑战赛的经验,包括使用的多种模型和技术,如TextCNN、FastText、LightGBM和BERT,以及提分策略和遇到的问题。
42 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
Java中的自然语言处理应用案例分析
Java中的自然语言处理应用案例分析
|
6月前
|
机器学习/深度学习 自然语言处理 数据可视化
【数据分享】R语言对airbnb数据nlp文本挖掘、地理、词云可视化、回归GAM模型、交叉验证分析
【数据分享】R语言对airbnb数据nlp文本挖掘、地理、词云可视化、回归GAM模型、交叉验证分析
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI特征分析和自然语言处理有什么区别
AI特征分析和自然语言处理有什么区别
|
机器学习/深度学习 自然语言处理 算法
深度解析自然语言处理之篇章分析
深度解析自然语言处理之篇章分析
104 0
|
机器学习/深度学习 自然语言处理 网络架构
AIGC背后的技术分析 | 自然语言处理
本文主要介绍深度学习领域中自然语言处理部分。
208 1
AIGC背后的技术分析 | 自然语言处理