SharEDITor

自己动手做聊天机器人 十二-教你如何利用强大的中文语言技术平台做依存句法和语义依存分析

大数据 自己动手做聊天机器人 发表于 2016-07-04 16:42:24 阅读14229次


句法分析是自然语言处理中非常重要的环节,没有句法分析是无法让计算机理解语言的含义的,依存句法分析由法国语言学家在1959年提出,影响深远,并且深受计算机行业青睐,依存句法分析也是做聊天机器人需要解决的最关键问题之一,语义依存更是对句子更深层次的分析,当然,有可用的工具我们就不重复造轮子,本节介绍如何利用国内领先的中文语言技术平台实现句法分析

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

什么是依存句法分析呢?

叫的晦涩的术语,往往其实灰常简单,句法就是句子的法律规则,也就是句子里成分都是按照什么法律规则组织在一起的。而依存句法就是这些成分之间有一种依赖关系。什么是依赖:没有你的话,我存在就是个错误。“北京是中国的首都”,如果没有“首都”,那么“中国的”存在就是个错误,因为“北京是中国的”表达的完全是另外一个意思了。

 

什么是语义依存分析呢?

“语义”就是说句子的含义,“张三昨天告诉李四一个秘密”,那么语义包括:谁告诉李四秘密的?张三。张三告诉谁一个秘密?李四。张三什么时候告诉的?昨天。张三告诉李四什么?秘密。

 

语义依存和依存句法的区别

依存句法强调介词、助词等的划分作用,语义依存注重实词之间的逻辑关系

另外,依存句法随着字面词语变化而不同,语义依存不同字面词语可以表达同一个意思,句法结构不同的句子语义关系可能相同。

 

依存句法分析和语义依存分析对我们的聊天机器人有什么意义呢?

依存句法分析和语义分析相结合使用,对对方说的话进行依存和语义分析后,一方面可以让计算机理解句子的含义,从而匹配到最合适的回答,另外如果有已经存在的依存、语义分析结果,还可以通过置信度匹配来实现聊天回答。

 

依存句法分析到底是怎么分析的呢?

依存句法分析的基本任务是确定句式的句法结构(短语结构)或句子中词汇之间的依存关系。依存句法分析最重要的两棵树:

依存树:子节点依存于父节点

依存投射树:实线表示依存联结关系,位置低的成分依存于位置高的成分,虚线为投射线

 

依存关系的五条公理

1. 一个句子中只有一个成分是独立的

2. 其他成分直接依存于某一成分

3. 任何一个成分都不能依存于两个或两个以上的成分

4. 如果A成分直接依存于B成分,而C成分在句子中位于A和B之间,那么C或者直接依存于B,或者直接依存于A和B之间的某一成分

5. 中心成分左右两面的其他成分相互不发生关系

 

什么地方存在依存关系呢?比如合成词(如:国内)、短语(如:英雄联盟)很多地方都是

 

LTP依存关系标记

主谓关系

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

指整个句子的核心

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

那么依存关系是怎么计算出来的呢?

是通过机器学习和人工标注来完成的,机器学习依赖人工标注,那么都哪些需要我们做人工标注呢?分词词性、依存树库、语义角色都需要做人工标注,有了这写人工标注之后,就可以做机器学习来分析新的句子的依存句法了

 

 

LTP云平台怎么用?

首先注册用户,得到每月免费20G的流量,在http://www.ltp-cloud.com/注册一个账号,注册好后登陆并进入你的dashboard:http://www.ltp-cloud.com/dashboard/,可以看到自己唯一的api_key,我的保密,就不贴出来了,在dashboard里还可以查询自己流量使用情况

具体使用方法如下(参考http://www.ltp-cloud.com/document):

curl -i "http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=dp&format=plain"

把这里的YourApiKey换成你自己的api_key,得到结果如下:

我_0 是_1 SBV
是_1 -1 HED
中国_2 人_3 ATT
人_3 是_1 VOB
。_4 是_1 WP

通过这个接口修改pattern参数可以做很多工作,比如:

分词(pattern=ws):

GET http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=ws&format=plain
我 是 中国 人 。

 

词性标注(pattern=pos):

GET http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=pos&format=plain
我_r 是_v 中国_ns 人_n 。_wp

 

命名实体识别(pattern=ner):

GET http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=ner&format=plain
我 是 [中国]Ns 人 。

 

语义依存分析(pattern=sdp):

GET http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=sdp&format=plain
我_0 是_1 Exp
是_1 -1 Root
中国_2 人_3 Nmod
人_3 是_1 Clas
。_4 是_1 mPunc

语义角色标注(pattern=srl):

GET http://api.ltp-cloud.com/analysis/?api_key=YourApiKey&text=我是中国人。&pattern=srl&format=plain
[我]A0 [是]v [中国 人]A1 。

 

免费终究会有限制,无论是流量还是速度还是一次性分析文本大小,LTP平台有有一定限制,这也是可以理解的,毕竟为大家开放了科研必备的资源和技术,成本也是需要控制的。