NLP-关系抽取方法

目录

一、基于规则

1.举例

2.优缺点

二、监督学习

1.准备工作

2.使用分类模型训练

三、半监督

1.bootstrap

2.bootstrap(snowball)


一、基于规则

目前基于规则是主流并且见效快的方法。

1.举例

提取具体的水果名字

规则:apple is a fruit, fruit such as apple, fruit including banana

以上的is a, such as, including都可以帮助我们找到水果这一类下面的具体的水果名字,像这样的规则我们可以定义非常多,只要文章中出现了规则,那么就可以把对应的数据放到库中。

比如文章中出现:...... apple is a fruit.....

先用实体识别分类器把实体识别出来,发现中间正好是is a ,那么把这两个实体放到数据表里。

NLP-关系抽取方法_第1张图片

中间可能会有不同类型的内容,因为我们定的只是规则,而没有其他条件过滤掉比如“car”,因此需要在规则集上面,定义规则的类别。

NLP-关系抽取方法_第2张图片

2.优缺点

基于规则的方法的优点:准确、不需要训练数据

基于规则的方法的缺点:召回率低(人能想到的关系少),人力成本高,规则本身难设计

二、监督学习

1.准备工作

①定义关系类型

②定义实体类型

③训练数据准备:实体的类型标记、实体之间的关系标记

④特征工程,可以使用:

bag-of-words

词性

实体类别

stemming

位置相关的信息特征:两个实体间包含了多少个单词?这句话在本文里的位置?

句法分析相关特征:两个词节点之间最短路径(使用树结构画出来语法的分析,可能需要图算法去提取特征)

依存文法相关特征:最短路径,是否相互依存等

据说上面的句法分析和依存文法分析效果一般。

NLP-关系抽取方法_第3张图片

2.使用分类模型训练

由于在分类的类别中,除了我们需要的分类,还可能会有一类“不属于任何类别”,因此我们可以将训练分为两部分,先使用一个简单的二分类器,把数据分为有类别和无类别,之后再进行分类。

NLP-关系抽取方法_第4张图片

三、半监督

1.bootstrap

首先在库中准备一个表格,包含几条真实的,正确的样本记录。

①基于样本,生成规则:

给定文本,根据库中的数据,如果匹配到了,那么文本中,两个实体中间的内容就可以作为规则,比如:

x写了y

y是由x写的

②生成三元组

有了上面生成的规则之后,给定新的文章,扫描是否有存储的规则,如果匹配上了对应的规则,那么就把规则左右的实体,填入到记录表中,作为新的记录。

③重复上两步

使用新的记录继续扫描文章,生成新的规则,使用新的规则,扫描文章,生成新的记录。

NLP-关系抽取方法_第5张图片

④bootstrap的关键缺点:

错误累积:当开头出现误差的时候,后面由于自动去生成,会慢慢误差越来越大。

于是提出了改进版:snowball

2.bootstrap(snowball)

见下一篇文章

你可能感兴趣的:(NLP,自然语言处理,人工智能,nlp)