语言/图书馆转换句子的任何建议,如:
“X碰撞了Y,后者又踢了Z.”
到
答案 0 :(得分:7)
我建议你使用斯坦福分析器(http://nlp.stanford.edu/software/lex-parser.shtml),这是开源的,而且相对简单,就像这些事情一样。有了它,您可以提取类型化的依赖关系解析。句子的依赖解析基本上将句子分解为一组二元关系r(B, A)
,其中单词A在语法上依赖于单词B.
接受你的判决
X撞到了Y,后者反过来踢了Z。在这句话中,X和Y都依赖于碰撞以在这句话中得到他们的语法关系。斯坦福分析师将为他们提取以下关系:
nsubj(bumped, X)
dobj(bumped, Y)
这意味着碰撞的主体是X,碰撞的直接对象是Y.然后,您可以使用此信息来建立语法关系:bumped(X, Y)
。同样,斯坦福分析师为句子的其余部分提取以下关系:
nsubj(kicked, who)
rcmod(Y, kicked)
dobj(kicked, Z)
在这种情况下,你被踢为“who”,Y为rcmod
(相对子句修饰符)。我不确定你的系统的目标是什么,但你可能会发现你需要手动构建一堆规则以涵盖情况。在这种情况下,您的规则可以将rcmod
与nsubj
等同,以生成kicked(Y, Z)
。
有关使用Stanford Parser类型依赖项的更多信息,请参阅Stanford Parser网站(http://nlp.stanford.edu/software/dependencies_manual.pdf)上有关该主题的优秀教程。
答案 1 :(得分:2)
要公然扯掉this answer,为什么不试试Natural Language Toolkit?
答案 2 :(得分:1)
ealdent建议的Stanford Parser可以完成这项工作,我更愿意将其编码为:
POS标记器也可以工作,但你的句子很复杂(“谁反过来”)。
答案 3 :(得分:0)
除了斯坦福解析器之外,RASP也是可能的 - 它可以产生语法关系列表作为其输出的一部分。请参阅this question。
答案 4 :(得分:0)
多语言商业选择:GlobalNLP
答案 5 :(得分:0)
您似乎对确定句子中的语义角色感兴趣。 SRL工具使用相应的角色标记实体。您可以使用其中一个工具的demo。
在碰撞的关系中,X标记为A0(代理),Y标记为A1(患者)。