首页 > 解决方案 > StanfordNLP、CoreNLP、spaCy - 不同的依赖图

问题描述

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

例如句子“Tom 让 Sam 相信 Alice 得了癌症”。我已经打印了所有三种方法的依赖关系。CoreNLP 和 spaCy 产生相同的依赖关系,但它们与 StanfordNLP 的依赖关系不同。因此,我倾向于切换到 CoreNLP 和 spaCy(另一个优势是它们带有开箱即用的 NER)。

有没有人有更多的经验或反馈可以帮助从这里去哪里?我不希望 CoreNLP 和 spaCy 总是在相同的依赖图中产生,但在例句中,考虑SamobjStandfordNLP 所做的与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

标签: nlpstanford-nlpspacydependency-parsing

解决方案


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

在包中,您可以使用几个语法和依赖项解析器。只需查看语法解析,就有一个检索 k-best 解析的选项,如果您处理对它们的依赖关系,您很可能会为每个解析获得不同的依赖关系。

这与解析器的不准确性和自然语言的歧义有关。


推荐阅读