22

我想使用命名实体识别 (NER) 在数据库中为文本找到足够的标签。

我知道有一篇关于此的 Wikipedia 文章和许多描述 NER 的其他页面,我希望从您那里听到有关此主题的一些信息:

  • 您对各种算法有何经验?
  • 你会推荐哪种算法?
  • 哪种算法最容易实现(PHP/Python)?
  • 算法如何工作?是否需要手动培训?

例子:

“去年,我在伦敦见到了巴拉克奥巴马。” => 标签:伦敦,巴拉克奥巴马

我希望你能帮助我。非常感谢您!

4

6 回答 6

13

首先,如果您计划使用 python,请查看http://www.nltk.org/,尽管据我所知代码不是“工业实力”,但它会让您入门。

查看http://nltk.googlecode.com/svn/trunk/doc/book/ch07.html中的第 7.5 节,但要了解算法,您可能需要阅读大量书籍。

另请查看http://nlp.stanford.edu/software/CRF-NER.shtml。它是用java完成的,

NER 不是一个简单的主题,可能没有人会告诉你“这是最好的算法”,他们中的大多数都有自己的优点/缺点。

我的 0.05 美元。

干杯,

于 2009-06-22T13:53:39.320 回答
3

这取决于您是否想要:

要了解 NER: 一个很好的起点是NLTK和相关书籍

实施最佳解决方案:在这里,您将需要寻找最先进的技术。查看TREC中的出版物。更专业的会议是Biocreative(NER 应用于狭窄领域的一个很好的例子)。

实现最简单的解决方案:在这种情况下,您基本上只想进行简单的标记,然后取出标记为名词的单词。您可以使用来自 nltk 的标记器,或者甚至只是在PyWordnet中查找每个单词并使用最常见的词义对其进行标记。


大多数算法都需要某种形式的训练,并且当它们在代表您将要求它标记的内容的内容上进行训练时表现最佳。

于 2009-06-22T14:05:15.833 回答
1

那里有一些工具和 API。

有一个建立在 DBPedia 之上的工具,称为 DBPedia Spotlight ( https://github.com/dbpedia-spotlight/dbpedia-spotlight/wiki )。您可以使用他们的 REST 接口或下载并安装您自己的服务器。最棒的是它将实体映射到它们的 DBPedia 存在,这意味着您可以提取有趣的链接数据。

AlchemyAPI (www.alchemyapi.com) 有一个 API 也可以通过 REST 执行此操作,并且他们使用免费增值模式。

我认为大多数技术都依赖于一点 NLP 来查找实体,然后使用 Wikipedia、DBPedia、Freebase 等基础数据库来进行消歧和相关性(例如,尝试确定提及 Apple 的文章是否是关于水果的)或公司...如果文章包含与 Apple 公司相关的其他实体,我们将选择公司)。

于 2014-07-16T20:01:14.793 回答
0

您可能想尝试 Yahoo Research 最新的快速实体链接系统 - 该论文还更新了对使用基于神经网络的嵌入的 NER 新方法的参考:

https://research.yahoo.com/publications/8810/lightweight-multilingual-entity-extraction-and-linking

于 2016-12-08T21:56:15.920 回答
0

可以使用人工神经网络来执行命名实体识别。

这是在 TensorFlow (python) 中执行命名实体识别的双向 LSTM + CRF 网络的实现:https ://github.com/Franck-Dernoncourt/NeuroNER (适用于 Linux/Mac/Windows)。

它在几个命名实体识别数据集上给出了最先进的结果(或接近它)。正如 Ale 所提到的,每个命名实体识别算法都有自己的缺点和优点。

ANN架构:

在此处输入图像描述

如在 TensorBoard 中所见:

在此处输入图像描述

于 2017-05-04T23:48:24.013 回答
-11

我不太了解 NER,但从那个例子来看,你可以制作一个算法来搜索单词中的大写字母或类似的东西。为此,如果您的想法很小,我会推荐正则表达式作为最容易实现的解决方案。

另一种选择是将文本与数据库进行比较,您将匹配预先识别为感兴趣标签的字符串。

我的 5 美分。

于 2009-06-22T12:38:28.677 回答