2012-04-23 28 views
1

我正在为我的一个项目尝试apache打开NLP,我的要求是从电子邮件内容中检测名词并检查我们的客户数据库(此数据库由个人名称,组织名称等组成和我的搜索引擎是Solr基地)。apache openNLP chuker/POS名词检测

对于普通英语名词,默认训练模型可以正常工作(对于大多数情况),但 其中一个棘手的要求是,我们的企业组织有缩写,如OK,LET等,因此在少数情况下我需要考虑OK,LET等作为名词。

举个例子 1)“发送一些项目让,请期待延误付款” 2)“让我们去聚会”

在#1我会考虑让尽可能名词和#2例LET不是名词。

如果我能达到这个要求,我可以在搜索引擎中减少大量的误报。

任何帮助,高度赞赏。

+0

为什么不在处理后过滤掉坏的东西呢? – dfb 2012-04-23 03:06:43

+0

我的客户数据索引在Solr和传入的电子邮件内容搜索索引作为自由文本搜索,客户数据每天都在变化....我不知道我是否完全得到您的建议....但我想建立一些规则就像在扫描后只考虑名词基础命中(忽略非名词基础命中) – Rushik 2012-04-23 03:28:23

+0

在你的例子中,尽管LET仍然是一个名词。你希望它被认为不是一个名词,因为它是大写的? – dfb 2012-04-23 03:50:54

回答

2

制作一个字典的特殊名词,并执行字典为基础的提取作为后处理步骤。基于字典的提取应考虑小写字母和大写字母之间的区别,特别是对于那些为缩写词的条目。

实施词典查找的术语:

  • 只要所讨论的实体是单个令牌(或仅由每个令牌的预定义,小的最大数目M),实施字典作为HashSet<String>,tokenising文本,使查找窗口中的散列每个令牌(和最多M个令牌组)应该很好地工作

  • 如果你正在处理的很长的实体,或者如果标记化一个问题,使用一个搜索关系o r有限状态机实现字典是明智的。

最后,一如既往地与NLP,你将需要看看效果的显著样品,以确定任何进一步的问题。根据实体列表中的歧义级别,您可能需要通过在区分大小写的字典查询之上添加启发式或统计/基于ML的决策机制来进一步优化检测方法。

+0

谢谢,但我认为我的主要问题不是大写/小写,问题是在各种情况下考虑”让“的含义(类似于”让“我有很多其他条款).....我仍然不确定字典库方法在这里会有帮助,但让我阅读一些关于字典的更多细节,然后再回来....再次感谢。 – Rushik 2012-04-23 05:25:45

+1

@Rushik我明白,你想要使用一种复杂的方法来“理解”(不管那意味着什么)上下文,并根据它来决定“let”是动词还是专有名词。但这不仅非常复杂,而且还需要大量的评估和改进。获得准确性最直接的方法是利用这样一个事实,即首字母缩写词大部分时间*是大写的,动词不会。 – jogojapan 2012-04-23 05:35:31

+0

是的,我认为你是对的,我只是尝试了NLP的standford版本,正如你所提到的那样,它可以把“LET”当作名词和“let”作为动词......但是我没有得到与apache POS相同的结果,可能是我会创建词典,因为你建议实现相同...谢谢 – Rushik 2012-04-23 06:09:31