neuralcoref使用教程-指代消解


作者: 明天依旧可好 | 柯尊柏
邮箱: [email protected]
编译器: jupyter notebook
创作时间: 2020.3.1



neuralcoref与spaCy的配合使用,目前版本上存在不兼容现象(今天是2020.3.1),需要将spaCy降解到2.1.0版本才可以正常使用

pip install spaCy==2.1.0

如果事前已经安装过了,可以使用下面的语句来卸载

pip uninstall spaCy

一、什么是指代消解

举个例子

A 来自湖北,他喜欢吃橘子。B来自湖南,她喜欢吃苹果。

我们将这段语料输入到电脑,电脑会就认为这段文字描述的四个人(分别是“A”,“他”,“B”,“她”),实际上文字中的“A”与“他”均是指A,但是电脑是无法理解这个的。

假如我们使用指代消解,电脑就会知道

A 来自湖北,A喜欢吃橘子。B来自湖南,B喜欢吃苹果。

二、案例展示

先看例子

import en_core_web_sm
import spacy
nlp = spacy.load('en')

import neuralcoref
neuralcoref.add_to_pipe(nlp)

#我们输入文本:My sister has a dog. She loves him.
doc = nlp(u'My sister has a dog. She loves him.')
doc._.coref_resolved

'''
输出:'My sister has a dog. My sister loves a dog.'
'''

三、进入正题:配置环境

需要安装的包有:en_core_web_smspacy2.1.0neuralcoref,在命令行中直接使用pip安装。

1.安装neuralcoref语句:

pip install neuralcoref

2.安装spacy2.1.0,如果安装速度过慢建议F墙,不要安装最新版本,会出现问题的(为你们节约了三天时间)

pip install spacy==2.1.0

3.安装en_core_web_sm语句:

pip install en_core_web_sm

安装后可使用上面的案例来检查,看自己是否成功。

四、neuralcoref有哪些函数可以用

我们借用上面的例子,然后一一调用它们,来看看结果

import en_core_web_sm
import spacy
nlp = spacy.load('en')

import neuralcoref
neuralcoref.add_to_pipe(nlp)

#我们输入文本:My sister has a dog. She loves him.
doc = nlp(u'My sister has a dog. She loves him.')
doc._.coref_resolved

我们用下面的方法替换代码中的最后一行,对比一下输出结果。

方法 返回结果 解释
doc._.has_coref True 返回boolean,判断是否解决了文档中的指代问题
doc._.coref_clusters [My sister: [My sister, She], a dog: [a dog, him]] 返回列表,说明指代关系
doc._.coref_resolved ‘My sister has a dog. My sister loves a dog.’ 返回消除指代后的结果
doc._.coref_scores {My sister: {My sister: 1.3110305070877075},a dog: {a dog: 1.804752230644226, My sister:-1.6715972423553467},She: {She: -0.10834205150604248,My sister: 8.058426856994629,a dog: -1.0625176429748535},him: {him: -1.870743989944458,My sister: 3.1147186756134033,a dog: 4.356405258178711,She: -3.1379528045654297}} 互指消解分数,简单来说就是相关性系数

官网:neuralcoref的GitHub官网

猜你喜欢

转载自blog.csdn.net/qq_38251616/article/details/104590169
今日推荐