在文本中执行语义分析

Performing semantic analysis in text

我想对一些类似于YAGO[1]. But I have no structure in the text to identify entities and relationships. One way is I use POS tagging and then identify subject and predicates in the sentences[2]的文本进行语义分析。但我仍然无法确定它们之间存在什么关系。 我该怎么办?

例如:

Albert Einstein was born in 1879.

应该导致:

AlbertEinstein BORNIN   1879
subject        relation predicate

我的目标是寻找更好的方法在原始文本中查找主语、谓语和关系。

您尝试解决的任务称为 relation extraction,而语义分析具有更广泛的含义(老实说,我现在不能确定它是什么意思)。

关系提取是一个开放的研究问题,因此我建议复习该领域 - 例如,从 Mining text data book or A Review of Relation Extraction 论文(稍早 - 2007 年)的第 2.3 章开始。然后通过引用或引用链接继续研究;最后,尝试实施看起来最有希望的方法:例如,如果您知道您的数据相当正式(所有句子都很短并且具有相似的严格结构),那么尝试类似基于模式的方法;等等。

Stanford 解析器可以做到 :) 不过您需要查看依赖解析器。看看这个页面的底部:http://nlp.stanford.edu/software/lex-parser.shtml:

主题:nsubj(快照,下雨), 或直接宾语:dobj(shut, hub)) ...

或查看此页面(斯坦福依存关系):http://nlp.stanford.edu/software/stanford-dependencies.shtml

要了解注释请看这个:http://nlp.stanford.edu/software/dependencies_manual.pdf

对于您的特定示例,请使用 Stanford“collapsed”依赖解析器,对于给定的句子将生成像 [=27 这样的谓词=](Einstein,1879),和你想要的很像。

您尝试做的本质上是自然语言理解,自然语言处理的一个子领域,它又是计算语言学的一个子领域 ~ 通常被认为是工程分支。

您可以进行语义解析或关系抽取。两者都适合这项任务。我决定通读 Suchanek et al (2007),你会意识到它是基于 ontology 的,其中关系被提取到预定义的本体模板中,其中预定义了 aixoms (例如 BORNIN)。我个人认为这对一般智能的限制远远不够,但对于弱人工智能问题 [窄域] 效果很好。多年来发生了更多有趣的工作,例如 ontology 驱动的信息提取,其中算法是在 ontology 上训练的,而不是用 ontology 注释的语料库。想到的一项博士研究是 McDowell 论文和 Yildiz & Miksch (2007) paper.

不管怎样也不偏离主题,有一个非常有趣的开源 Python GUI 驱动项目叫做 iepy 目前正在由一家名为 Machinalis 基于 django。它允许基于规则和基于机器学习的信息提取。我强烈建议您检查一下 -> 亲自尝试和测试。另外,我不隶属于这家公司。

https://github.com/machinalis/iepy

根据文档:

IEPY is an open source tool for Information Extraction focused on Relation Extraction.

To give an example of Relation Extraction, if we are trying to find a birth date in:

"John von Neumann (December 28, 1903 – February 8, 1957) was a Hungarian and American pure and applied mathematician, physicist, inventor and polymath." then IEPY's task is to identify "John von Neumann" and "December 28, 1903" as the subject and object entities of the "was born in" relation.

It's aimed at: users needing to perform Information Extraction on a large dataset. scientists wanting to experiment with new IE algorithms.