我将opennlp用于一个小项目,我想知道是否有办法找出所有格表达、所有者和他们拥有的东西。例如,如果我问“一个用户应该有一封电子邮件”,那么我想获得关系对“用户”、“电子邮件”。
我现在能想到的方法是获取 POS 标签(使用 POSTagger),找出是否有标签表示拥有,并通过在 POS 标签输出中前后移动来获取它们链接的名词,以获取两个实体标签涉及。
最简洁的答案是不。更长的答案涉及了解人类语言的工作原理。有很多方式来描述所有格关系:“John's book”、“John has a book”、“the book that John has”,甚至“Bill give a book to John”(从中你可以推断出 John 拥有书)。为了可靠地提取这种关系,您需要考虑所有变化,例如,词性序列、词汇、非本地关系(“我很确定约翰拥有的书”)等。 ,还可以访问语义知识(例如知道如果您将一本书给某人,则意味着他们拥有它)。人们的整个职业生涯都在试图解决这样的问题;迄今为止最成功的方法只是部分成功。
像这样的一本书可能会让你更好地理解为什么这真的非常难:
http://www.amazon.com/Computational-Linguistics-Introduction-Language-Processing/dp/0521310385
或谷歌“语言学导论”或“自然语言处理导论”。