基于依存句法分析的实体关系提取

基于依存句法分析的实体关系提取

1.概述

概述
句法分析是自然语言处理中的关键技术之一,其基本任务是确定句子的句法结构或者句子中词汇之间的依存关系。 主要包括两方面的内容,一是确定语言的语法体系,即对语言中合法的句子的语法结构给与形式化的定义;另一方面是句法分析技术,即根据给定的语法体系,自动推导出句子的句法结构,分析句子所包含的句法单位和这些句法单位之间的关系。

原理
在基于依存句法分析的实体关系提取的实验中,首先,我们要通过依存句法分析分析出句子的依存关系,然后通过句子之间的依存关系根据中文之间的句子结构分析出句子之间具有的关系。
HanLP提供了最大熵依存句法分析器和CRF依存句法分析器进行句法分析。
在实验中我们采用了HanLP提供的最大熵依存句法分析器来实现对需要提取关系的句子进行依存句法分析。下面将介绍HanLP的安装和使用。

2.句法分析

HanLP简介
HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
HanLP提供下列功能:中文分词、词性标注、命名实体识别、关键词提取、自动摘要、短语提取、拼音转换、简繁转换、文本推荐、依存句法分析、文本分类、word2vec、语料库工具。

HanLP组成
HanLP将数据与程序分离,给予用户自定义的自由。 HanLP由三部分组成:HanLP = .jar + data + .properties 。
其中data部分包括dictionary和model。 dictionary部分是词法分析必需的,model是语法分析必需的。HanLP支持用户添加自定义词典。
properties配置文件的作用是告诉HanLP词典的位置在哪里,以及添加用户自定义词典,只需要将添加词典的位置添加到properties文件中就可以。
Jar中包含了HanLP所有的文本处理的类和方法。

HanLP安装
如果是在java环境下运行,需要去官网下载jar、data、hanlp.properties文件。
如果是在python环境下运行,则只需要在命令行输入如下命令即可。

pip install pyhanlp

HanLP几乎所有的功能都可以通过工具类HanLP快捷调用,如果要调用方法时,只需键入HanLP.,IDE应当会给出提示,并展示HanLP完善的文档。

句法分析
HanLP的句法分析命令为parseDependency。

sentence = HanLP.parseDependency(“海洋由水组成")

通过上述语句,可以分析出句子之间的依存关系。

海洋	前置宾语	组成
由	状中结构	组成
水	介宾关系	由
组成	核心关系	##核心##

3.关系提取

关系提取
经过句法分析,可以得到句子之间的依存关系,但是并不能得到句子中哪些实体之间具有联系,因此我们需要对中文语法规则进行分析。下面举几个例子进行说明。

  1. 主谓宾关系:张三 喜欢 跑步
    通过这个句子,可以分析出三元组(张三,喜欢,跑步)。
  2. 动补结构:张三 洗 干净 了 衣服
    如果只考虑主谓宾关系,则可以提取出(张三,洗,衣服),但如果考虑动补结构,“干净”是“洗”的补语,因此可以提取出新的三元组(张三,洗干净了,衣服)。
  3. 并列关系:张三 和 李四 是 朋友
    如果只考虑主谓宾关系,则会得出(张三,是,朋友)的关系,但这是错误的,因此需要考虑“张三”和”李四“的并列关系,则可以得到三元组(张三,朋友,李四)。
  4. 介宾关系:张三 就职 于 学校
    这里“于”和“学校”是介宾关系,因此可以得到三元组(张三,就职于,学校)。

与之类似的还有前置宾语,右附加关系,定中关系,状中关系等关系,因此,只要分析出中文的语法规则,就可以对句子中的关系进行提取。

for i in range(len(word_array)):
	if (isexistSBV(i) and isexistVOB(i)):  # 判断是否有主谓和动宾关系
		print(entity1, relation, entity2)

如上所示,首先循环句子中的每个词,判断这个词是否具有主谓和动宾关系,如果有则可以形成一个三元组(e1,rel,e2).在“张三喜欢跑步”这个例子中,“喜欢”具有主谓结构和动宾关系,所以可以得到三元组(张三,跑步,喜欢)。

你可能感兴趣的:(信息提取,知识图谱,实体关系提取)