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

时间:2020-03-05 18:41:56  来源:igfitidea点击:

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

像Zemanta这样的服务如何知道例如建议给一条文本显示哪些图像?

解决方案

回答

Open Calais可能使用语言解析技术和语言静态方法来猜测哪些单词或者短语是名称,位置,公司等。然后,这只是对这些实体进行某种搜索并返回元数据的又一步骤。

Zementa可能做类似的事情,但是将短语与添加到图像的元数据进行匹配,以获取相关结果。

这当然不容易。

回答

我不熟悉列出的特定服务,但是自然语言处理领域已经开发了许多技术,可以从普通文本中提取此类信息。正如肖恩(Sean)所述,一旦有了候选词,就不难与上下文中的其他一些实体一起搜索这些词,然后使用搜索结果来确定我们对所提取的词是一个真实实体的信心度。兴趣。

如果我们想体验自然语言处理,那么OpenNLP是一个很棒的项目。我们命名的功能可能最好通过命名实体识别器(NER)(通常可以定位专有名词,有时还包括日期的算法)和/或者词义歧义消除(WSD)(例如:单词" bank")来实现。根据上下文的不同,含义也不同,这在从文本中提取信息时可能非常重要。给定这样的句子:"飞机向左倾斜","雪堤过高"和"他们抢劫了堤岸",我们将看到如何歧义消除可以在语言理解中发挥重要作用)

技术通常是相互依赖的,而NER是较复杂的任务之一,因此要成功完成NER,通常需要准确的标记器(自然语言标记器,请注意-统计方法趋向于最佳),字符串提取器(算法)将类似的单词混入共同词根:因此,对告密者和告密者之类的词语进行同等对待),句子检测("琼斯先生个子很高。"只是一个句子,因此我们不能仅检查标点符号)语音标记器(POS标记器)和WSD。

OpenNLP(的一部分)有一个称为NLTK的python端口(http://nltk.sourceforge.net),但是我还没有很多经验。我的大部分工作是在Java和Cports上进行的,效果很好。

当然,所有这些算法都是特定于语言的,它们可能需要花费大量时间才能运行(尽管通常比读取要处理的材料要快)。由于最新技术很大程度上基于统计技术,因此还需要考虑相当多的错误率。此外,由于错误率会影响所有阶段,并且像NER之类的东西需要处理的多个阶段,(错误识别->句子检测-> POS标签-> WSD-> NER)会导致错误率复合。

回答

来自OpenCalais的Michal Finkelstein在这里。

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

现在来回答:

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

我们支持完整的" NLP堆栈"(我们喜欢这样称呼):
从文本标记化,形态分析和POS标记到浅层分析和识别名词短语和口头短语。

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

对于最杰出的实体(例如人,公司),我们还在文章级别执行回指解析,交叉引用和名称规范化/标准化,因此我们将知道" John Smith"和" Mr. Mr."。例如,史密斯(Smith)可能指的是同一个人。
因此,对问题的简短回答是"不",这不仅仅是与大型数据库进行匹配。

事件/事实真的很有趣,因为它们使我们的发现规则更深一层。我们找到实体之间的关系,并用适当的类型标记它们,例如M&A(两个或者多个公司之间的关系),雇佣变更(公司和人员之间的关系)等等。不用说,事件/事实提取对于仅基于词典的系统是不可能的。
在大多数情况下,我们的系统已调整为面向精度,但我们始终尝试在精度和整体性之间保持合理的平衡。

顺便说一下,本月晚些时候将推出一些很酷的新元数据功能,请继续关注。

问候,

米哈尔