像Zemanta和Open Calais这样的内容发现引擎是如何工作的?

2024-09-30 02:15:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,像Zemanta这样的服务机构如何知道向文本推荐什么图像?在


Tags: 图像文本名称数据库概念人员机构语义
3条回答

来自OpenCalais的Michal Finkelstein。在

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

现在来回答:

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

我们支持完整的“NLP堆栈”(我们喜欢这样称呼它): 从文本标记化,形态分析和词性标注,到浅层句法分析和识别名词性和动词性短语。在

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

对于最突出的实体(如人、公司),我们也在文章级别执行回指解析、交叉引用和名称规范化/规范化,因此我们知道“John Smith”和“Mr.Smith”可能指的是同一个人。 所以你问题的简短回答是-不,这不仅仅是针对大型数据库的匹配。在

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

顺便说一句,本月晚些时候会有一些很酷的新元数据功能,所以请继续关注。在

谨致问候

米哈尔

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

如果您想玩自然语言处理,那么OpenNLP是一个很棒的项目。使用命名实体识别器(NER)(定位专有名词的算法,通常,有时也查找日期)和/或词义消歧(WSD)(例如:单词“bank”根据其上下文具有不同的含义,这在提取信息时非常重要)可能是最好的从文本。给出以下句子:“飞机向左倾斜”、“雪堆很高”、“他们抢了银行”,你可以看到歧义在语言理解中的重要作用)

技术通常建立在彼此的基础上,而NER是更复杂的任务之一,因此要成功地完成NER,通常需要准确的标记器(注意,统计方法往往是最好的),字符串词干分析器(将相似的单词与公共词根合并的算法:因此像informant和informer这样的单词被平等对待)、句子检测('Mr.Jones was hill.'只有一个句子,所以你不能只检查标点符号)、词性标记(POS tagers)和WSD。在

OpenNLP有一个python端口,名为NLTK(http://nltk.sourceforge.net),但我还没有太多的经验。我的大部分工作都是关于Java和C端口的,它们工作得很好。在

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

开放的加莱可能使用语言解析技术和语言静力学来猜测哪些单词或短语是名称、地点、公司等。然后,对这些实体进行某种搜索并返回元数据只是另一个步骤。在

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

这当然不容易。在

相关问题 更多 >

    热门问题