作者: 明天依旧可好 | 柯尊柏 邮箱: ke.zb@qq.com 编译器: jupyter notebook 创作时间: 2020.3.1
文章目录
- 一、什么是指代消解
- 二、案例展示
- 三、进入正题:配置环境
- 四、neuralcoref有哪些函数可以用
neuralcoref与spaCy的配合使用,目前版本上存在不兼容现象(今天是2020.3.1),需要将spaCy降解到2.1.0版本才可以正常使用
代码语言:javascript复制pip install spaCy==2.1.0
如果事前已经安装过了,可以使用下面的语句来卸载
代码语言:javascript复制pip uninstall spaCy
一、什么是指代消解
举个例子
A 来自湖北,他喜欢吃橘子。B来自湖南,她喜欢吃苹果。
我们将这段语料输入到电脑,电脑会就认为这段文字描述的四个人(分别是“A”,“他”,“B”,“她”),实际上文字中的“A”与“他”均是指A,但是电脑是无法理解这个的。
假如我们使用指代消解,电脑就会知道
A 来自湖北,A喜欢吃橘子。B来自湖南,B喜欢吃苹果。
二、案例展示
先看例子
代码语言:javascript复制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_sm
、spacy2.1.0
、neuralcoref
,在命令行中直接使用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有哪些函数可以用
我们借用上面的例子,然后一一调用它们,来看看结果
代码语言:javascript复制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官网】