2015-11-02 78 views
3

我需要解析非结构化文本并将相关概念转换为格式,以便可以合并所有三元组以形成图。 例如如果我有2个句子像A改进B和B改善C,我应该能够创建一个图形,如使用NLP技术从非结构化文本创建简单的概念图

A ---> B(改进) B -----> C(改进)。

,稍后如果问这样有什么用A的问题,系统应提供一个类似的答案改善B和C.

据我所知,目前对此没有直接的库。 我尝试使用Standford OpenNLP库进行POS标记,然后进行三元组形成以及它们的组合。然而它导致了很多情况。

这样做的最好方法是什么?本体是基于分析的帮助吗?

回答

2

这是一个有趣的问题....我的最爱之一:)

我做了这样的事情一次,我参加了一个混合的方法。混合的含义是NLP,其他则是简单的规则。在我的特殊情况下,我正在根据组织实体(使用NER提取)生成图形,然后使用动词短语分类程序(不基于规则和正则表达式)。所以本质上,我在每个句子上都运行了NER,并得到了一些坚实的组织名称。然后,我在同一个句子上运行句子chunker并解析出动词短语。然后我用一个简单的关键字 - >概念正则表达式对动词短语进行分类。我没有试图用句子中的每个位置来推断任何类型的图形方向性,所以我最终写了一个三元组{EntityA,EntityB,VerbPhrases [],VerbCategories []}给一个索引。显然,我必须确保我的组织实体与嘈杂句子中的动词短语不同​​,并且我认为句子内的共存足以证明两个实体之间存在边界。这只是我做的一个具体的例子,它有缺陷,但实际上它实际上运行得非常好,并启用了非常强大的搜索。我的方法没有考虑到相邻的句子相关性(我使用的数据源一般都有冗长的句子),但我的确考虑使用基于邻近性的评分技术来指定实际相关的概率,以便将来自附近句子的实体结合起来,可能利用段落边界以及另一种启发式来帮助验证。

有很多方法可以“尝试”做到这一点,所有这些方法都会以某种方式吸引人,而边缘案例将会丰富而有趣,它是关于实用主义和您试图启用的。事实上,我预测共识解决方案将成为你的下一个问题(当句子A中的实体在后续句子中被称为他或她......等)时,那么你的下一个问题将是跨文件实体分辨率(DocA中的Bob可能是也可能不是DocB中的Bob)。另外,我非常怀疑任何会产生三重格式的东西,你将不得不使用NER从句子给你的令牌来创建它。

HTH

+0

Beautiful Answer!应该已经投了100倍;) – Yavar