Stanford CoreNLP提供了coreference解析as mentioned here,还有this thread,this,提供了一些关于它在Java中实现的见解。
但是,我使用的是python和NLTK,我不确定如何在python代码中使用CoreNLP的Coreference解析功能。我已经能够在NLTK中设置StanfordParser,这是我目前的代码。
from nltk.parse.stanford import StanfordDependencyParser
stanford_parser_dir = 'stanford-parser/'
eng_model_path = stanford_parser_dir + "stanford-parser-models/edu/stanford/nlp/models/lexparser/englishRNN.ser.gz"
my_path_to_models_jar = stanford_parser_dir + "stanford-parser-3.5.2-models.jar"
my_path_to_jar = stanford_parser_dir + "stanford-parser.jar"
如何在python中使用CoreNLP的coreference解析?
相对较新的包装器stanfordcorenlp可能对您有用。
假设文本是“巴拉克奥巴马出生在夏威夷。他是总统。奥巴马于2008年当选。“
代码:
上面的每个“提到”都是这样一个Python命令:
正如@Igor所提到的,您可以尝试在这个GitHub repo中实现python包装器:https://github.com/dasmith/stanford-corenlp-python
此回购协议包含两个主要文件: corenlp.py公司 客户端.py
执行以下更改以使coreNLP正常工作:
在corenlp.py中,更改corenlp文件夹的路径。设置本地计算机包含corenlp文件夹的路径,并将该路径添加到corenlp.py的第144行
if not corenlp_path: corenlp_path = <path to the corenlp file>
“corenlp.py”中的jar文件版本号不同。根据您拥有的corenlp版本设置它。在corenlp.py的135行更改它
jars = ["stanford-corenlp-3.4.1.jar", "stanford-corenlp-3.4.1-models.jar", "joda-time.jar", "xom.jar", "jollyday.jar"]
在这个版本中,用您下载的jar版本替换3.4.1。
运行命令:
python corenlp.py
这将启动服务器
现在运行主客户端程序
python client.py
这提供了一个字典,您可以使用“coref”作为键来访问coref:
约翰是一位计算机科学家。他喜欢编码。
我在Ubuntu16.04上试过。使用java版本7或8。
斯坦福大学的CoreNLP现在有一个名为StanfordNLP的official Python binding,您可以在StanfordNLP website中阅读。
原生API doesn't seem支持coref处理器,但是您可以使用CoreNLPClient接口从Python调用“标准”CoreNLP(原始Java软件)。
因此,在按照说明设置Python包装器here之后,您可以得到这样的coreference链:
相关问题 更多 >
编程相关推荐