【问题标题】:Natural Language to Binary Fact [closed]自然语言到二进制事实[关闭]
【发布时间】:2013-11-16 03:56:35
【问题描述】:

我想取一组英语句子并将它们转换为一组关系。例如

“飞行员驾驶飞机。”将映射到类似以下关系:

flies(pilot, airplane)

“鲍勃是爱丽丝和道格的父亲。”会映射到

father(Bob, Alice)
father(Bob, Doug)

我知道我以前见过一个 python 库来做这样的事情,但是尽管我进行了所有的搜索,但我还是找不到。我以前从未做过 NLP 编程,所以我可能会错误地使用术语。我很抱歉。

更新: 这不是生成 Prolog 的努力,而是生成关于话语世界的二进制(和其他)事实。然后可以将这些事实插入到对象角色模型中,并帮助生成数据库模式。上面的“苍蝇”事实只是为了说明,对输出的语法没有要求。它必须是常规输出。

在语言方面,我想我希望看到一个动词短语和两个名词短语来捕捉一个二元事实。这些结构的方式并不像能够以自动方式识别结构那么重要。

【问题讨论】:

标签: python nlp


【解决方案1】:

您似乎正在将自然语言转换为 Prolog(XSB?)。一般来说,没有简单(甚至相当困难)的方法来自动化这个过程。但是,对于像您问题中的那些简单句子,您需要使用类型化依赖解析。这将为您提供主语、宾语和动词。一旦你有了这些,你就可以编写一个简单的脚本来获取你的元组。

Python 的自然语言工具包 (NLTK) 不支持类型依赖。 (见this answer

Stanford 的解析器会帮助您解决这个问题(正如 Prateek 在评论中提到的那样)。请注意,您需要使用 typed 依赖项。

您的例句“飞行员驾驶飞机”。会产生

det(pilot-2, A-1)
nsubj(flies-3, pilot-2)
root(ROOT-0, flies-3)
det(airplane-5, an-4)
dobj(flies-3, airplane-5)

root 是谓语(主要动词),nsubj 表示主语,dobj 表示直接宾语。

希望这会有所帮助:-)

【讨论】:

  • 虽然这不是我想要的(我记得看到过更完善的解决方案),但它必须是我的起点。谢谢!
猜你喜欢
  • 2011-12-25
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 2014-08-14
  • 1970-01-01
相关资源
最近更新 更多