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

我知道维基百科上有一篇关于此问题的文章以及许多其他描述 NER 的页面,我更希望从您那里听到有关此主题的信息:

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

例子:

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

我希望你可以帮助我。预先非常感谢您!

有帮助吗?

解决方案

从结账开始 http://www.nltk.org/ 如果你计划使用 python,虽然据我所知代码不是“工业强度”,但它会让你开始。

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

另请检查一下 http://nlp.stanford.edu/software/CRF-NER.shtml. 。这是用java完成的,

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

我的 0.05 美元。

干杯,

其他提示

这取决于您是否想要:

了解 NER:一个很好的起点是 NLTK, ,以及相关的 .

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

实施最简单的解决方案:在这种情况下,您基本上只想进行简单的标记,并提取标记为名词的单词。您可以使用 nltk 中的标记器,甚至只是查找中的每个单词 PyWordnet 并用最常见的词感标记它。


大多数算法都需要某种训练,并且当它们针对代表您要要求其标记的内容进行训练时,它们的性能最佳。

有一些工具和 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 相关的其他实体(该公司),我们会选择该公司。

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

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

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

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

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

人工神经网络架构:

enter image description here

在 TensorBoard 中查看:

enter image description here

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

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

我的5美分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top