从文本中提取关系

wol*_*ang 4 python nlp data-mining nltk

我想以(SUBJECT,OBJECT,ACTION)关系的形式从非结构化文本中提取关系,

例如,

"那个男孩坐在桌子上吃鸡肉"

会给我,

(男孩,鸡,吃)
(男孩,桌子,位置)

等等..

虽然python程序+ NLTK可以处理如上所述的简单句子.

我想知道你是否有人使用工具或库优选开源来从更广泛的领域中提取关系,例如大量的文本文档或网络.

sco*_*ozy 6

如果你的句子没有比你所展示的例子复杂得多(例如,关于回指),斯坦福大学的解析器将根据概率上下文无关语法给出好的结果,你很容易就能够转换进入你想要的格式.有一个在线可用演示.对于你的例子,它会给出类似的东西

nsubj(坐着,男孩)

prep_on(坐,桌子)

等等

如果你的句子变得更加复杂,你可能会有兴趣尝试Boxer,它基于概率组合分类语法从C&C解析构建语篇表达结构.这些结构可能更难以适应您想要的格式,但可以让您更灵活.还有一个在线可用演示.对于你的例子,它看起来像

坐(X)

男孩(Y)

表(Z)

剂(X,Y)

上(X,Z)

等等

Stanford解析器是用Java编写的,可以在GPL下使用.C&C是用SWI Prolog中的C++和Boxer编写的.这两个版本不是在真正免费的许可下发布的,但您可以获取源代码,修改它,并将其用于任何非商业项目.

在你的例子中,你也不会给你一个关于"boy"和"table"之间关系的特征 - 你需要更强大的语义推理工具,我不确定这样的东西是否存在.

编辑

现在,我们再次有可能获得C&C和Boxer的源代码以及一系列模型.