1、句法结构(syntactic structure)分析
- 主要有两种方式:成分句法分析(Constituent Parsing)与依存句法分析(Dependency Parsing)
- 主要包括两方面的内容,一是确定语言的语法体系,即对语言中合法的句子的语法结构给与形式化的定义;另一方面是句法分析技术,即根据给定的语法体系,自动推导出句子的句法结构,分析句子所包含的句法单位和这些句法单位之间的关系。
- 推荐的学习资料:《Natural Language Processing-Lecture Slides from the 2012 Stanford Coursera course by Dan Jurafsky and Christopher Manning》
数据集
- 相对于词性标注,句法分析的数据集要复杂很多,其是一种树形标注结构,称为树库。
- 中文宾州树库、清华树库、台湾中研院树库
- 每周树库都有自己的标记体系,不能混用
2、成分句法分析(Constituent Parsing)
Constituency Parsing主要用phrase structure grammer即短语语法来不断的将词语整理成嵌套的组成成分,又被称为context-free grammers,简写做CFG。
其主要步骤是先对每个词做词性分析part of speech, 简称POS,然后再将其组成短语,再将短语不断递归构成更大的短语。
举个例子
- 对于 the cuddly cat by the door, 先做POS分析,the是限定词,用Det(Determiner)表示,cuddly是形容词,用Adj(Adjective)代表,cat和door是名词,用N(Noun)表示, by是介词,用P(Preposition)表示。
- 然后the cuddly cat构成名词短语NP(Noun Phrase),这里由Det(the)+Adj(cuddly)+N(cat)构成,by the door构成介词短语PP(Preposition Phrase), 这里由P(by)+NP(the door)构成。
- 最后,整个短语the cuddly cat by the door 是NP,由NP(the cuddly cat)+ PP(by the door)构成。
3、依存句法分析(Dependency Parsing)
- 依存句法展示了词语之前的依赖关系,通常用箭头表示其依存关系,有时也会在箭头上标出其具体的语法关系,如是主语还是宾语关系等。
- 依存语法的结构没有非终结点,词与词之间直接发生依存关系,构成一个依存对,其中一个是核心词,也叫支配词,另一个叫修饰词,也叫从属词。
- 依存关系用一个有向弧表示,叫做依存弧。依存弧的方向为由从属词指向支配词,当然反过来也是可以的,按个人习惯统一表示即可。
- 依存句法有两种表现形式,一种是直接在句子上标出依存关系箭头及语法关系,另一种是将其做成树状机构(Dependency Tree Graph)。
DEP遵循的五条公理
在20世纪70年代,Robinson提出依存语法中关于依存关系的四条公理,在处理中文信息的研究中,中国学者提出了依存关系的第五条公理,如下:
1、一个句子中只有一个成分是独立的;
2、其它成分直接依存于某一成分;
3、任何一个成分都不能依存与两个或两个以上的成分;
4、如果A成分直接依存于B成分,而C成分在句中位于A和B之间,那么C或者直接依存于B,或者直接依存于A和B之间的某一成分;
5、中心成分左右两面的其它成分相互不发生关系。
句法分析的应用
句法分析是自然语言处理领域的一个关键问题,如能将其有效解决:
- 一方面,可对相应树库构建体系的正确性和完善性进行验证;
- 另一方面,也可直接服务于各种上层应用,比如搜索引擎用户日志分析和关键词识别,比如信息抽取、自动问答、机器翻译等其他自然语言处理相关的任务。
- 工业界百度和雅虎都有尝试,百度的query分析,雅虎利用句法信息做多粒度切词等等。
依存句法分析能做什么
其实许多人都有一个疑问,依存句法分析究竟可以用来干什么。
句法分析可以对语言进行深层次的理解,用来消除歧义。还可以根据分析的结果对特定的内容进行提取(信息抽取)。
本节就来利用依存句法分析实现一个意见抽取的例子,提取下列商品评论中的属性和买家评价。
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')
def main(

本文介绍了句法分析的基础概念,包括成分句法分析和依存句法分析两种主要方法,并探讨了它们的应用场景和技术细节。
最低0.47元/天 解锁文章
858

被折叠的 条评论
为什么被折叠?



