我想使用命名实体识别(NER)为数据库中的文本找到足够的标签。我没有使用像NLTK或Lingpipe这样的工具,而是想建立自己的工具。
所以我的问题是:
我应该使用哪种算法?
构建此工具有多难?
答案 0 :(得分:5)
前一段时间我研究马尔可夫链时,我做到了这一点。
无论如何,答案是:
例如,斯坦福NLP使用条件随机场(CRF)。如果你不是想有效地做这件事,你就像Jackass 3d那样的人我应该使用哪种算法?
pissing in the wind
。解析人类语言没有简单的方法,因为它的构造很复杂,并且有很多例外。
构建此工具有多难?
如果你知道自己在做什么,那就不那么难了。输入规则和逻辑的过程可能是烦人且耗时的,并且修复错误可能是非常重要的。但是在20年后,你可以做出一些对自己有用的东西。
答案 1 :(得分:3)
- 最容易实现 - 用于查找标签的算法将包含两个步骤:
在第一步中,您可以选择以下两种方法之一:
在第二步中,您应该使用tf-idf对文档语料库中的标签进行加权,并丢弃tf-idf权重低于给定垃圾箱的所有标签
如果您需要更强大的算法,请查找主题检测框架或research papers on this topic。在维基百科之后检查LSA:
潜在语义分析(LSA)是自然语言处理中的一种技术,特别是在矢量语义中,通过生成一组与文档和术语相关的概念来分析一组文档与它们包含的术语之间的关系。 / p>
答案 2 :(得分:2)
NLTK是一个开源项目。您可能想稍微探索一下 - 看看它是如何完成的,可能参与社区,而不是试图从头开始自己完全解决问题...
答案 3 :(得分:0)
寻找本文的副本:
使用Word群集进行名称标记 判别培训
斯科特米勒, Jethran Guinness,Alex Zamanian
答案 4 :(得分:0)
对于您的问题,这可能不是一个令人满意的答案,您仍然可以:您可能希望评估该任务的现有服务提供商,并包括他们的产品或通过Web服务集成一个。
我的经验是,对于某些明确定义且非常特定于域的任务(例如:识别维基百科网页中的药物名称),您可以手动构建NER解决方案。 LingPipe,OpenNLP等等是很好的工具。
但是对于通用任务(例如:在互联网上的任何网页中查找人名),您需要大量的经验,工具和人力才能获得满意的结果。因此,使用外部提供商可能更有效。例如,OpenCalais是免费服务;许多商业存在。