StanfordNLP,CoreNLP,spaCy-不同的依赖图

时间:2019-05-23 03:04:45

标签: nlp stanford-nlp spacy dependency-parsing

我正在尝试使用在依赖关系图上定义的简单规则/模式从句子中提取非常基本的信息(例如,三元组,例如主语->谓语->宾语)。我开始使用StanfordNLP,因为它易于设置并使用GPU以获得更好的性能。但是,我注意到对于某些句子,所得到的依存关系图看起来不像我期望的那样-尽管我不是专家。因此,我尝试了另外两个解决方案:spaCyStanford CoreNLP(我知道它们是由不同的小组维护的吗?)

对于例句“汤姆让山姆相信爱丽丝患有癌症。” 我已经打印了这三种方法的依赖性。 CoreNLP和spaCy产生相同的依赖关系,并且与StanfordNLP的依赖关系不同。因此,我倾向于使用CoreNLP和spaCy(另一个优点是它们与NER一起提供)。

有没有人有更多的经验或反馈可以帮助您从这里走到哪里?我不希望CoreNLP和spaCy总是会在相同的依赖关系图中产生,但是在示例语句中,将StandfordNLP所做的Sam视为obj,而不是nsubj(CoreNLP ,spaCy)似乎有很大的不同

Format:
token   dependency_tag   parent_token

StanfordNLP
Tom     nsubj   made
made    ROOT    ROOT
Sam     obj     made
believe ccomp   made
that    mark    has
Alice   nsubj   has
has     ccomp   believe
cancer  obj     has
.       punct   made

CoreNLP
Tom     nsubj   made
made    ROOT    ROOT
Sam     nsubj   believe
believe ccomp   made
that    mark    has
Alice   nsubj   has
has     ccomp   believe
cancer  dobj    has
.       punct   made

spaCy
Tom     nsubj   made
made    ROOT    ROOT
Sam     nsubj   believe
believe ccomp   made
that    mark    has
Alice   nsubj   has
has     ccomp   believe
cancer  dobj    has
.       punct   made

1 个答案:

答案 0 :(得分:1)

不确定如何解决您的问题,但我建议您仔细阅读Stanford CoreNLP的文档:https://nlp.stanford.edu/software/lex-parser.shtml

在程序包中,可以使用几个语法和依赖项解析器。仅查看语法分析,就有一个检索k最佳分析的选项,并且如果您处理对它们的依赖性,则很可能会获得每种依赖性。

这与解析器中的错误和自然语言中的歧义有关。