赞
踩
本文将总结句法分析的相关内容。
自然语言处理的分析技术,可以大致分为三个层面。
第一层是词法分析,包括分词(Word Segmentation)、词性标注(Part-of-speech Tagging)、命名实体识别(Named Entity Recognition)、词义消歧(Word Sense Disambiguation)。
第二层为句法分析(syntactic parsing),句法分析将输入句子从序列形式变为树状结构,从而可以捕捉到句子内部词语之间的远距离搭配或修饰关系。目前研究界存在两种主流的句法标注体系:
1)句法结构分析(syntactic structure parsing),又称短语结构分析(phrase structure parsing),也叫成分句法分析(constituent syntactic parsing)。作用是识别出句子中的短语结构以及短语之间的层次句法关系。
2)依存句法分析(dependency syntactic parsing),作用是识别句子中词汇与词汇之间的相互依存关系。最常见也是最常用的。
3)更深一层次的语义分析,也会包含句法的信息在里面,例如AMR,语义角色标注(Semantic Role Labeling,SRL)是目前比较成熟的浅层语义分析技术[6, 7]。给定句子中一个谓词,语义角色标注的任务是从句子中标注出这个谓词的施事、受事、时间、地点等参数(argument)。
延伸 目前语义分析在智能系统中仍然是一个瓶颈问题。句法依存能够预测出句子完整的语法结构,并能给出各个结构之间的句法关系。但是句法依存能够表达的语义信息还是不够的。比如“手机在屏幕尺寸方面很受欢迎”,句法依存能够给出“手机”是句子主语,“受”是核心动词,“欢迎”是宾语,“在手机屏幕方面”是状中结构,语义信息全无。通过语义依存分析可以给出“在尺寸方面”是“手机受欢迎”的范围。而“尺寸”是指“手机屏幕”的尺寸。这些完整的信息都是语义依存的研究目标。因此语义依存区别于句法依存而存在。
可以参考的不错的文章:
码农场-汉语树库 https://www.hankcs.com/nlp/corpus/chinese-treebank.html#h3-6
目录
与短语结构语法相比,依存语法有以下优势:
目前,依存句法分析是主流,本人推荐使用哈工大开发的LTP平台或HanLP的开源项目。
依存句法是由法国语言学家L.Tesniere最先提出。依存语法的含义是用词与词之间的依存关系来描述语言结构,主张句子中核心动词是支配其它成分的中心成分,而它本身却不受其它任何成分的支配,所有受支配成分都以某种依存关系从属于支配者。它将句子分析成一颗依存句法树,描述出各个词语之间的依存关系。
计算语言学家Robinson总结了依存语法的4条公理:
(1) 一个句子中只有一个独立成分不依存于其他任何成分;
(2) 句子的其他成分都必须依存于某一成分;
(3) 任何一个成分都不能依存于两个或两个以上的其他成分;
(4) 如果成分A直接依存于成分B,而成分C位于A和B之间,则C依存于A或者B,或者依存于A和B之间的某一成分。
依存句法分析可以反映出句子各成分之间的语义修饰关系,它可以获得长距离的搭配信息,并与句子成分的物理位置无关。
LTP依存分析模块所使用的依存关系标记含义 (http://www.ltp-cloud.com/demo/) (共14种) 如下:
关系类型 | 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 | 指整个句子的核心 |
为了直观描述句子的形式模型,可根据句法模型将一个句子中各成分之间的关系显式表达为某种句法结构图(有向图或依存树)形式,
树库语料都是CoNLL格式的,CoNLL格式的语料以.conll结尾。CONLL标注格式包含10列,分别为:
ID FORM LEMMA CPOSTAG POSTAG FEATS HEAD DEPREL PHEAD PDEPREL _ _
依存句法分析是针对给定的句子序列应用某一依存语法体系对自然语言进行自动分析构建句子对应的依存树的一种方法。一般来说,句法分析方法可分为基于规则的分析方法、基于统计的分析方法以及统计与规则相结合的方法。
3.1 基于规则的依存句法分析方法
基于规则方法的基本思路是由人工组织语法规则,建立语法知识库,通过条件约束和检查来实现句法结构歧义的消除。例如,基于上下文无关文法的分析方法、基于约束依存文法Constraint dependency grammar, CDG)的分析方法。
3.2 基于统计的依存句法分析方法
由于大规模语料库的构建,目前依存分析方法中以统计分析方法为主流。
给定输入句子x,依存句法分析的目标是给出分值最大的依存树ˆd,如公式所示
依存分析的两个基本问题:
(1)如何定义Score(x,d),即计算句子和对应的依存树的分值。这是建模问题。
(2)给定模型参数,即特征权重,如何建立满足依存树约束的d。这是解码问题。
依存句法分析两个主流的方法分别是:一种是基于图的方法,将依存句法分析看成从完全有向图中寻找最大生成树的问题。另一种是基于转移的方法,通过一个移进规约转移动作序列构建一棵依存句法树,将依存分析问题建模为寻找最优动作序列的问题。
基于图的依存句法分析方法
McDonald等(2005)首先提出基于图的依存句法分析方法,将问题建模为从一个有向多重图(完全依存图)中找到概率(分值)最大的依存树的问题。
基于图的方法是一种全局优化的算法,它将句子中的每个词看作一个节点,任意两个词可以有一条加权边,算法的目的就是寻找一颗最大生成树,使得最终边的权重总和最大。
该方法将依存句法分析问题归结为在一个有向图中寻找最大生成树(Maximum Spanning Tree)的问题;边权重使用 Online 算法来学习获得,搜索算法采用 Eisner 算法。特征选择是决定该算法性能的重要因素。本文使用的特征将由两部分构成,一部分为依存弧本身构成的特征,另一部分为语义关系构成的特征。其中弧特征用来计算两个节点之间构成一条弧的概率;关系特征计算了节点 k 作为儿子节点(is-child)或者核心节点(not-child),依存弧方向为 dir 时,对应依存关系为 t 的概率。
基于转移的依存句法分析方法
基于转移的方法,该算法一般事先定义多种转移操作,如:检验、归约、插入、删除等。然后计算新加入的词应该采用何种操纵。该分析方法在决定对当前待分析的词采取何种操作时,可以利用已经分析的结果,即更宽泛的上下文,但是其分析过程不能够回溯,是一种贪心的算法。
基于转移的方法将依存树的搜索过程建模为一个动作序列,依存分析问题转化为寻找最优动作序列的问题。
依存句法分析器的简单实现 https://www.hankcs.com/nlp/to-achieve-a-simple-generative-dependency-parsing.html
最大熵依存句法分析器的实现 https://www.hankcs.com/nlp/parsing/to-achieve-the-maximum-entropy-of-the-dependency-parser.html
3.3 依存句法分析的评价方法
目前最常用的两个评价指标都以词为单位。
• 只考虑依存骨架,不考虑依存关系类型
• 同时考虑依存骨架和关系类型
1. StanfordCoreNLP
英文最为经典的tool,当然也提供中文的分析功能,斯坦福大学开发的,提供依存句法分析功能。
Github 地址:https://github.com/TJUNLP/stanford-corenlp
官网:https://stanfordnlp.github.io/CoreNLP/
2. HanLP
提供了中文依存句法分析功能。支持多种自然语言处理基本功能。
Github 地址:https://github.com/hankcs/pyhanlp
参考 HanLP自然语言处理包开源- https://www.hankcs.com/nlp/hanlp.html
3. SpaCy
工业级的自然语言处理工具,目前不支持中文。支持多种自然语言处理基本功能。
Gihub 地址:https://github.com/explosion/spaCy
官网:https://spacy.io/
4. FudanNLP
复旦大学自然语言处理实验室开发的中文自然语言处理工具包。支持多种自然语言处理基本功能。
Github 地址:https://github.com/FudanNLP/fnlp
如有侵权,请联系本人(779806081@qq.com),将诚意修改或删除。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。