-
06-07-2019 - |
题
我想使用命名实体识别(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 美元。
干杯,
其他提示
有一些工具和 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 提到的,每种命名实体识别算法都有其自身的缺点和优点。
人工神经网络架构:
在 TensorBoard 中查看:
我不太了解 NER,但从那个例子来看,你可以制作一个算法来搜索单词中的大写字母或类似的东西。为此,如果您的想法很小,我会推荐正则表达式作为最容易实现的解决方案。
另一种选择是将文本与数据库进行比较,其中您可以匹配预先标识为感兴趣标签的字符串。
我的5美分。