NeuralCoref: python的共指消解工具教程

转载地址

https://blog.csdn.net/blmoistawinde/article/details/81782971

共指消解

首先简要地说说共指消解是什么,有什么用处。假设机器正在阅读一个这样的文本:

克劳德·莫奈是印象派代表人物和创始人之一。
他最重要的风格是改变了阴影和轮廓线的画法。

如果机器想要从这段话中了解到关于莫奈风格的知识,它首先必须知道,第二句话中的“他”指的就是莫奈。弄清代词的指代就是共指消解中的一个典型任务。

关于共指消解,更详细的概念可以参照:
https://blog.csdn.net/qjc937044867/article/details/51694547

下面直接引出解决这个问题的一个开源工具——NeuralCoref。

NeuralCoref

Github官网:https://github.com/huggingface/neuralcoref
NeuralCoref是使用时下先进神经网络技术完成指代消解任务的一个工具。它不是一个独立的python库, 而是另一个高速强大的python自然语言处理库——spaCy的一个拓展包,因此,要使用这个工具首先要安装spaCy:

pip install spacy

然后,再安装NeuralCoref支持的几个模型,下面的例子中,我会使用面向英语的小模型,安装方法如下:

pip install https://github.com/huggingface/neuralcoref-models/releases/download/en_coref_sm-3.0.0/en_coref_sm-3.0.0.tar.gz

如果需要更大的词汇量和准确率,把链接中的sm改成md/lg就可以下载对应的中模型和大模型。

基本用法

下面用jupyter notebook展示其基本用法:

height="2000" src="https://nbviewer.jupyter.org/github/blmoistawinde/hello_world/blob/master/NeuralCoref_basic.ipynb" width="720">

下一篇文章里,我会再尝试共指消解的一个有趣应用:
NeuralCoref: 用指代消解来做一个“能多轮对话的问答对话机器人”

共指消解是自然语言处理中的一个重要任务,即在文本中找到代同一实体的词语并将其链接起来。Spacy和Neuralcoref是两种常用的Python库,它们都提供了共指消解的功能。 Spacy是一个开源的自然语言处理库,提供了丰富的功能,包括分词、词性标注、命名实体识别、句法分析等。Spacy提供了一个名为“displacy”的可视化工具,可以帮助用户更直观地理解句子的结构。Spacy还提供了一个名为“Matcher”的工具,可以用来按照一定的规则匹配文本中的词语或短语。 Neuralcoref是一个基于神经网络的共指消解工具,是Spacy的一个插件。它使用神经网络模型来识别文本中的共指关系,可以处理跨句子的共指关系,并且支持多种语言。 使用Spacy和Neuralcoref进行共指消解的一般步骤如下: 1. 首先,使用Spacy对文本进行分句和分词,并进行词性标注和命名实体识别。 2. 然后,使用Neuralcoref对文本中的共指关系进行识别和链接。Neuralcoref会在Spacy的文档对象上添加一个名为“neuralcoref”的扩展,可以使用这个扩展来进行共指消解。 下面是一个使用Spacy和Neuralcoref进行共指消解的示例代码: ```python import spacy import neuralcoref # 加载Spacy模型 nlp = spacy.load("en_core_web_sm") # 添加Neuralcoref扩展 neuralcoref.add_to_pipe(nlp) # 处理文本 doc = nlp("John saw Mary. He waved to her.") # 输出共指消解结果 for cluster in doc._.coref_clusters: print(cluster.mentions) ``` 这段代码中,我们首先加载了Spacy的英文模型,并添加了Neuralcoref扩展。然后,我们处理了一个包含两个句子的文本,并使用Neuralcoref进行了共指消解。最后,我们打印出了共指消解结果。 输出结果为: ``` [John] [Mary, her] ``` 可以看到,Neuralcoref成功地将“John”和“he”、“Mary”和“her”链接起来,表示它们代同一个实体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值