为什么当我在本地运行CoreNLP时,'corenlp.run'会产生不同的结果?

时间:2015-12-31 00:50:00

标签: nlp stanford-nlp

应该是CoreNLP演示站点的网站corenlp.run显示了与我在本地计算机上运行CoreNLP管道时截然不同的结果。

网站实际上显示的是正确的结果,而本地机器版本却没有。我想知道是否有人接近CoreNLP项目可以解释这些差异吗?

例证 - 当我使用它作为输入时会发生这种情况“在Soquel Drive上给我一家提供美味食物的餐厅”(这是来自RestQuery数据集)

在CoreNLP(本地机器上,使用斯坦福大学的默认模型)上,我得到了这个结果:

root(ROOT-0, Give-1)
iobj(Give-1, me-2)
det(restaurant-4, a-3)
dobj(Give-1, restaurant-4)
case(Drive-7, on-5)
compound(Drive-7, Soquel-6)
nmod:on(Give-1, Drive-7) <--- WRONG HEAD
nsubj(serves-9, that-8)
acl:relcl(Drive-7, serves-9) <--- WRONG HEAD
amod(food-12, good-10)
amod(food-12, french-11)
dobj(serves-9, food-12)

在corenlp.run上,我得到了这个结果:

root(ROOT-0, Give-1)
iobj(Give-1, me-2)
det(restaurant-4, a-3)
dobj(Give-1, restaurant-4)
case(Drive-7, on-5)
compound(Drive-7, Soquel-6)
nmod:on(restaurant-4, Drive-7) <--- CORRECT HEAD
nsubj(serves-9, that-8)
acl:relcl(restaurant-4, serves-9) <--- CORRECT HEAD
amod(food-12, good-10)
amod(food-12, french-11)
dobj(serves-9, food-12)

您会注意到本地计算机版本中有两个错误的磁头。我不知道为什么 - 特别是如果这是一个模型问题(我正在尝试调试每个注释器的输出以查看进程返回的内容)

这些是我使用的注释器:“tokenize,ssplit,pos,lemma,ner,parse,openie”。这些模型直接来自CoreNLP版本3.6.0

那么有谁可以帮助我理解为什么我的结果与演示网站的结果不同?

1 个答案:

答案 0 :(得分:3)

CoreNLP附带了多个解析器来获取选区和依赖树。默认解析器是PCFG constituency parser,它输出选区树,然后转换为依赖树。

另一方面,

corenlp.run使用neural net dependency parser直接输出可能与默认管道输出不同的依赖树。

要在本地计算机上获得相同的输出,请使用以下注释器:

tokenize,ssplit,pos,lemma,ner,depparse,openie

lemmaneropenie都是可选的,以防您只需要依赖解析。)