我想使用命名实体识别(NER)为数据库中的文本找到足够的标签。
我知道维基百科有一篇关于此内容的文章以及许多描述NER的其他页面,我最好从你那里听到关于这个主题的文章:
示例:
“去年,我在伦敦见过巴拉克奥巴马。” =>标签:伦敦,巴拉克奥巴马
我希望你能帮助我。非常感谢你提前!
答案 0 :(得分: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美元。
干杯,
答案 1 :(得分:3)
这取决于你是否想要:
实施最佳解决方案: 在这里,您需要寻找最先进的技术。看看TREC中的出版物。更专业的会议是Biocreative(适用于狭窄领域的NER的一个很好的例子)。
实现最简单的解决方案:在这种情况下,您基本上只想做简单的标记,并拉出标记为名词的单词。您可以使用nltk中的标记器,甚至只需查找PyWordnet中的每个单词,并使用最常用的单词标记它。
大多数算法都需要进行某种培训,并且在对内容进行培训时表现最佳,这些内容代表了您要求标记的内容。
答案 2 :(得分:1)
那里有一些工具和API。
在DBPedia之上构建了一个名为DBPedia Spotlight(https://github.com/dbpedia-spotlight/dbpedia-spotlight/wiki)的工具。您可以使用他们的REST界面或下载并安装您自己的服务器。最棒的是它将实体映射到他们的DBPedia存在,这意味着您可以提取有趣的链接数据。
AlchemyAPI(www.alchemyapi.com)有一个API也可以通过REST执行此操作,并使用免费增值模式。
我认为大多数技术都依赖于一些NLP来查找实体,然后使用像维基百科,DBPedia,Freebase等基础数据库来消除歧义和相关性(例如,试图决定提到Apple的文章是否是关于水果或公司...我们会选择公司,如果该文章包括与苹果公司相关的其他实体)。
答案 3 :(得分:0)
您可能想尝试雅虎研究院最新的快速实体链接系统 - 该论文还使用基于神经网络的嵌入更新了对NER新方法的参考:
https://research.yahoo.com/publications/8810/lightweight-multilingual-entity-extraction-and-linking
答案 4 :(得分:0)
可以使用人工神经网络来执行命名实体识别。
以下是TensorFlow(python)中双向LSTM + CRF网络的实现,用于执行命名实体识别:https://github.com/Franck-Dernoncourt/NeuroNER(适用于Linux / Mac / Windows)。
它在几个命名实体识别数据集上提供最先进的结果(或接近它)。正如Ale提到的,每个命名实体识别算法都有其自身的缺点和优势。
ANN架构:
在TensorBoard中查看:
答案 5 :(得分:-10)
我真的不知道NER,但从这个例子来看,你可以制作一个搜索大写字母的算法或类似的东西。为此,如果你想的话,我会推荐正则表达式作为最容易实现的解决方案。
另一种选择是将文本与数据库进行比较,将您预先标识为感兴趣的标签的字符串匹配。
我的5美分。