我需要解析非结构化文本并将相关概念转换为格式,以便可以合并所有三元组以形成图形。 例如如果我有两个句子,如A改进B和B改进C,我应该能够创建一个像
的图形A ---> B(改进) 乙-----> C(改进)。
如果问一个像A的使用是什么的问题,系统应该提供像A改善B和C的答案。
据我所知,没有直接的lib。 我尝试使用Standford OpenNLP lib进行POS标记,然后进行三联体形成及其组合。然而,它导致了许多情况。
最好的方法是什么?本体论是否会解析帮助?
答案 0 :(得分:2)
这是一个有趣的问题....我的最爱之一:)
我做过一次这样的事情,我采取了混合方法。混合意味着某些部分是NLP,其他部分是简单的规则。在我的特定情况下,我基于组织实体(使用NER提取)生成图表,然后使用动词短语分类程序(不基于规则和正则表达式)。所以从本质上讲,我在每个句子上都运行了NER,并获得了一些可靠的组织名称。然后我在同一个句子上运行句子chunker并解析出动词短语。然后我使用一个简单的关键字 - >概念正则表达式来对动词短语进行分类。我没有尝试使用句子中每个的位置来推断任何类型的图形方向性,所以我最终将{EntityA,EntityB,VerbPhrases [],VerbCategories []}的三元组写入索引。显然,我必须确保我的组织实体与嘈杂句子中的动词短语不同,并且我认为句子中的共存足以在两个实体之间创建边缘。这只是我所做的一个具体例子,它有缺陷,但在实践中它实际上工作得很好并且启用了非常强大的搜索。我的方法没有考虑到邻近的句子相关性(我使用的数据源通常都是长篇大论的句子),但我确实考虑过使用基于邻近度的评分技术来为附近句子中的联合实体分配实际相关概率,可能使用段落边界以及另一种启发式方法以帮助验证。
有许多方法可以尝试"要做到这一点,他们所有人都会以某种方式吮吸,边缘情况将是丰富而有趣的,它是关于实用主义和你想要实现的。事实上,我预测共同解决将是你的下一个问题(当句子A中的实体在后续句子中被称为他或她等等),然后你的下一个问题将是跨文档实体解决方案(DocA中的Bob可能是也可能不是来自DocB的Bob)。另外,我非常怀疑任何会产生三重格式的东西,你将不得不使用NER将从句子中给你的标记来创建它。
HTH