我要求工具(可能在 NLTK 中)或讨论以下内容的论文:
例如输入:Vase(Subject1) put(verb)
我要找的答案:花、水
有没有可以输出与这个动词相关联的主语(宾语)的工具?(我正在通过 VerbNet 但没有找到任何东西)
我要求工具(可能在 NLTK 中)或讨论以下内容的论文:
例如输入:Vase(Subject1) put(verb)
我要找的答案:花、水
有没有可以输出与这个动词相关联的主语(宾语)的工具?(我正在通过 VerbNet 但没有找到任何东西)
如果你想要快速的东西,我认为模式是完成这项工作的最佳工具。它提供了一个现成的多语言解析器,您可以通过以下方式使用它:
import pattern
from pattern.en import parse
s = 'I put water in the vase'
s = parse(s)
print s
# output = I/PRP/B-NP/O put/VBP/B-VP/O water/NN/B-NP/O in/IN/B-PP/B-PNP the/DT/B-NP/I-PNP vase/NN/I-NP/I-PNP
一旦你有一个像output上面这样的字符串,你只需要正则表达式解析来提取标记匹配序列 [B-NP,B-VP,B-NP] 的每个标记序列。
NP 代表“名词短语”,VP 代表“动词短语”。在英语中,几乎每个由名词短语、动词短语和第二个名词短语组成的序列都严格相邻,是一个主语-动词-宾语序列,所以这应该可以满足您的需求。
pattern的解析器还能够处理一些非严格的邻接关系(例如,在主-动词-宾语序列中的三个短语之间插入副词和形容词)。
然而,pattern它并不是非常复杂——这会给你一些精确度和一些召回率,但不是非常高的数字。如果您需要高质量的解析,您应该尝试斯坦福解析器的 Python 实现或spacy。
希望这可以帮助!