【发布时间】:2015-07-17 23:23:37
【问题描述】:
我正在尝试使用斯坦福核心 NLP :coref_chain 从某些文本中获取实体提及列表。当我运行这段代码时:
text = 'Angela Merkel met Nicolas Sarkozy on January 25th in ' +
'Berlin to discuss a new austerity package. Sarkozy ' +
'looked pleased, but Merkel was dismayed.'
pipeline = StanfordCoreNLP.load(:tokenize, :ssplit, :pos, :lemma, :parse, :ner, :dcoref)
text = StanfordCoreNLP::Annotation.new(text)
pipeline.annotate(text)
puts text.get(:coref_chain)
我得到这个输出:
{1=CHAIN1-["Angela Merkel" in sentence 1, "Merkel" in sentence 2], 3=CHAIN3-["January 25th" in sentence 1], 4=CHAIN4-["Berlin" in sentence 1], 5=CHAIN5-["Nicolas Sarkozy on January 25th" in sentence 1, "Sarkozy" in sentence 2], 6=CHAIN6-["a new austerity package" in sentence 1]}
这是一个哈希吗?根据斯坦福网站上的文档,我应该能够通过属性名称访问这些值,但没有任何组合对我有用。事实上,添加 to_s 以外的任何内容都会产生“找不到方法”错误。
有谁知道我如何从中得到名字?例如“安吉拉·默克尔”?在最好的情况下,我也会得到开头、结尾和正面。
【问题讨论】:
-
请提供输出:puts text.get(:coref_chain).class.name,但我想它是文本...哈希需要采用 { key 的格式=> value },如果您仔细查看文档 - 句子在数组(令牌)中。
-
但是您在文本上调用 coref_chain 而不是在令牌上,所以我不确定这是否有效?您的建议的输出是:Rjb::Rjb_JavaProxy
-
经过进一步修改,coref 功能似乎无法在 Stanford Core NLP gem 中工作。哦,好吧,继续尝试治疗(到目前为止,对于遇到此问题的其他人来说都很好)
标签: ruby nlp stanford-nlp