1

我正在为我的一个项目试验 apache Open NLP,我的要求是从电子邮件内容中检测名词并检查我们的客户数据库(该数据库由个人姓名、组织名称等组成,我的搜索引擎是 Solr 库)。

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

例如 1) “寄一些物品给 LET,请注意延迟付款” 2) “让我们去参加派对吧”

在#1中,我想将LET视为名词,而在#2中,LET不是名词。

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

非常感谢任何帮助。

4

1 回答 1

2

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

字典查找的实现方面:

  • 只要所讨论的实体是单个标记(或仅由预定义的、每个最大数量 M 的标记组成),将字典实现为HashSet<String>,标记文本并在哈希中查找每个标记(以及最多 M 个令牌)应该工作得很好

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

最后,与 NLP 一样,您将需要查看大量结果样本以识别任何进一步的问题。根据实体列表中的歧义程度,您可能需要通过在区分大小写的字典查找之上添加启发式或基于统计/ML 的决策机制来进一步改进检测方法。

于 2012-04-23T04:29:40.440 回答