内容发现引擎如Zemanta和Open Calais如何工作?

时间:2008-08-22 10:51:19

标签: python ruby semantics zemanta

我想知道像Open Calais这样的语义服务如何从一段文本中找出公司或人员,技术概念,关键字等的名称。是因为他们有一个大型数据库,他们匹配文本?

像Zemanta这样的服务如何知道对一段文字建议的图像?

3 个答案:

答案 0 :(得分:9)

来自OpenCalais的Michal Finkelstein。

首先,感谢您的关注。我会在这里回复,但我也鼓励您在OpenCalais论坛上阅读更多内容;那里有很多信息,包括但不限于: http://opencalais.com/tagging-information http://opencalais.com/how-does-calais-learn 也可以随时在Twitter上关注我们(@OpenCalais)或发送电子邮件至team@opencalais.com

现在回答:

OpenCalais基于自然语言处理和文本分析领域十年的研究和开发。

我们支持完整的“NLP Stack”(我们喜欢称之为): 从文本标记化,形态分析和POS标记,到浅层解析和识别名词和语言短语。

当我们寻找实体(a.k.a.实体提取,命名实体识别)时,语义就会发挥作用。为此,我们有一个复杂的基于规则的系统,它结合了发现规则以及词典/词典。这种组合使我们能够识别公司/人/电影等的名称,即使它们不存在于任何可用列表中。

对于最杰出的实体(例如人,公司),我们还在文章层面执行回指解决,交叉引用和名称封准/规范化,因此我们将知道'John Smith'和'Mr.例如,史密斯可能指的是同一个人。 所以对你的问题的简短回答是 - 不,它不只是与大型数据库匹配。

事件/事实非常有趣,因为它们将我们的发现规则更深一层;我们找到实体之间的关系并用适当的类型标记它们,例如M& As(两个或更多公司之间的关系),就业变化(公司和人之间的关系)等等。毋庸置疑,对于仅基于词典的系统,事件/事实提取是不可能的。 在大多数情况下,我们的系统被调整为精确导向,但我们总是试图在准确性和整体性之间保持合理的平衡。

顺便提一下,本月晚些时候会有一些很酷的新元数据功能,敬请关注。

此致

米甲

答案 1 :(得分:7)

我不熟悉列出的具体服务,但自然语言处理领域开发了许多技术,可以从一般文本中提取这种信息。正如Sean所说,一旦你有了候选术语,在上下文中与其他一些实体搜索这些术语并不困难,然后使用该搜索的结果来确定你对提取的术语是一个实际实体的信心。兴趣。

OpenNLP是一个很棒的项目,如果你想玩自然语言处理。您命名的功能可能最好通过命名实体识别器(NER)(一般定位专有名词的算法,有时也定义日期)和/或Word Sense Disambiguation(WSD)(例如:'bank'一词)来完成。根据它的上下文有不同的含义,这在从文本中提取信息时非常重要。给出句子:“飞机左岸”,“雪库高”,“他们抢银行”,你可以看到消歧可以在语言理解中发挥重要作用)

技术通常建立在彼此之上,而NER是更复杂的任务之一,所以要成功地做NER,你通常需要准确的标记器(自然语言标记器,请注意 - 统计方法倾向于最好),字符串词干分析器(将相似的单词与常见词根混为一谈的算法:所以像线人和线人这样的词语被平等对待),句子检测('琼斯先生很高。'只有一个句子,所以你不能只检查标点符号),词性标注器(POS标记器)和WSD。

有一个名为NLTK(http://nltk.sourceforge.net)的(部分)OpenNLP的python端口,但我对它没有多少经验。我的大部分工作都是使用Java和C#端口,这些端口运行良好。

当然,所有这些算法都是特定于语言的,并且它们可能需要很长时间才能运行(尽管它通常比阅读您正在处理的材料更快)。由于最先进的技术主要基于统计技术,因此还需要考虑相当大的错误率。此外,因为错误率会影响所有阶段,而像NER这样的事情需要多个处理阶段,(标记化 - >句子检测 - > POS标记 - > WSD - > NER)错误率复合。

答案 2 :(得分:0)

Open Calais可能会使用语言解析技术和语言静态来猜测哪些单词或短语是名称,地点,公司等。然后,这只是对这些实体进行某种搜索并返回元数据的另一个步骤。 / p>

Zementa可能会做类似的事情,但会将这些短语与附加到图像的元数据相匹配,以获得相关结果。

这当然不容易。