我想以(SUBJECT,OBJECT,ACTION)关系的形式从非结构化文本中提取关系,
例如,
“这个男孩坐在桌子上吃鸡肉”会给我,
(男孩,鸡,吃)
(男孩,表,LOCATION)
等。
虽然python程序+ NLTK可以处理如上所述的简单句子。
我想知道你是否有人使用工具或库,最好是开源来从更广泛的领域中提取关系,例如大量的文本文档或网络。
答案 0 :(得分:6)
如果你的句子没有比你所展示的例子复杂得多(例如,关于回指),那么Stanford parser会得到很好的结果,基于你会probabilistic context-free grammar,很容易就能转换成你想要的格式。有demo available online.对于您的示例,它会提供类似
的内容nsubj(坐着,男孩)
prep_on(坐着,桌子)
等
如果您的句子变得更加复杂,您可能有兴趣尝试基于概率Boxer,从C& C解析构建discourse representation structures的combinatory categorial grammars.这些结构可能更难以适应您想要的格式,但会让您更灵活。还有一个demo available online.对于你的例子,它看起来像
静坐(x)的
男孩(y)的
表(z)的
剂(X,Y)
在(X,Z)
等
斯坦福解析器是用Java编写的,可以在GPL下使用。 C& C用SWI Prolog中的C ++和Boxer编写。这两个版本不是在真正免费的许可下发布的,但您可以获取源代码,修改它,并将其用于任何非商业项目。
在你的例子中,两者都没有给你一个关于“boy”和“table”之间关系的特征 - 你需要更强大的语义推理工具,我不确定这样的东西是否存在。
修改强>