我需要提取句子中单词的关系。我最感兴趣的是识别主语,谓语和对象。例如,对于以下句子:
She gave him a pen
我想要:
She_subject gave_predicate him a pen_object.
斯坦福NLP能做到吗?我试过他们的relation
注释器,但它似乎没有像我预期的那样工作?也许有其他软件可以产生这个结果?
答案 0 :(得分:7)
根据http://nlp.stanford.edu/software/lex-parser.shtml,斯坦福NLP确实有一个解析器,可以识别句子的主语和谓词。您可以在线试用http://nlp.stanford.edu:8080/parser/index.jsp。您可以使用类型化的依赖项来标识主题,谓词和对象。
从示例页面开始,句子我的狗也喜欢吃香肠会给你这个解析:
(ROOT
(S
(NP (PRP$ My) (NN dog))
(ADVP (RB also))
(VP (VBZ likes)
(S
(VP (VBG eating)
(NP (NN sausage)))))
(. .)))
解析器还可以生成依赖项:
poss(dog-2, My-1)
nsubj(likes-4, dog-2)
advmod(likes-4, also-3)
root(ROOT-0, likes-4)
xcomp(likes-4, eating-5)
dobj(eating-5, sausage-6)
依赖关系nsubj
显示主谓词和主题 - 在这种情况下,喜欢和 dog 。数字给出了句子中单词的位置(由于某种原因,一个索引)。 dobj
依赖关系显示谓词和对象的关系。 xcomp
依赖项提供有关谓词的内部信息。
当谓词不是动词时,这也有效:我的狗很大并且负责给出:
poss(dog-2, My-1)
nsubj(large-4, dog-2)
cop(large-4, is-3)
root(ROOT-0, large-4)
cc(large-4, and-5)
conj(large-4, in-6)
pobj(in-6, charge-7)
这告诉我们large
是主谓词(nsubj(large-4, dog-2)
),但有一个copula(cop(large-4, is-3)
),以及与对象的连词和介词。
我不熟悉API,所以我无法提供准确的代码。也许知道API的其他人可以做到这一点。解析器记录在the Stanford NLP doc site。您可能还会发现Tools for text simplification (Java)的答案很有帮助。有关The Stanford Dependency Manual中依赖关系格式的更多信息。
答案 1 :(得分:2)
斯坦福解析器可以做到:)你需要查看依赖解析器。请查看此页面的底部:http://nlp.stanford.edu/software/lex-parser.shtml:
subject: nsubj(snapped, rain),
or direct object: dobj(shut, hub))
...
或者看一下这个页面(Stanford Dependencies): http://nlp.stanford.edu/software/stanford-dependencies.shtml
要了解注释,请看一下: http://nlp.stanford.edu/software/dependencies_manual.pdf
答案 2 :(得分:0)
在这种情况下,我更喜欢使用spaCy,使用spaCy置换的可视化效果如下:
,您可以轻松访问他们的官方网站:
您可以确定主题词将具有“ nsubj”或“正常主题”的依赖关系,并且谓词是具有依赖关系的词是“ root”,这意味着对其他单词没有依赖关系。