从文本中提取关系

时间:2013-10-24 19:11:01

标签: python nlp data-mining nltk

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

例如,

“这个男孩坐在桌子上吃鸡肉”

会给我,

(男孩,鸡,吃)
(男孩,表,LOCATION)

等。

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

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

1 个答案:

答案 0 :(得分:6)

如果你的句子没有比你所展示的例子复杂得多(例如,关于回指),那么Stanford parser会得到很好的结果,基于你会probabilistic context-free grammar,很容易就能转换成你想要的格式。有demo available online.对于您的示例,它会提供类似

的内容
  

nsubj(坐着,男孩)

     

prep_on(坐着,桌子)

     

如果您的句子变得更加复杂,您可能有兴趣尝试基于概率Boxer,从C& C解析构建discourse representation structurescombinatory categorial grammars.这些结构可能更难以适应您想要的格式,但会让您更灵活。还有一个demo available online.对于你的例子,它看起来像

  

静坐(x)的

     

男孩(y)的

     

表(z)的

     

剂(X,Y)

     

在(X,Z)

     

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

在你的例子中,两者都没有给你一个关于“boy”和“table”之间关系的特征 - 你需要更强大的语义推理工具,我不确定这样的东西是否存在。

修改

It has now become once more possible to obtain the source code for C&C and Boxer, along with a collection of models.