我有一个字符串列表(在本例中为公司名称)和一个 Java 程序,该程序从大多数非结构化文本中提取看起来像公司名称的内容列表。我需要将提取文本的每个元素与列表中的字符串相匹配。警告:非结构化文本有拼写错误,例如“Blah, Inc.”。称为“Blah”等。我尝试过 Levenshtein Edit Distance,但由于可预见的原因而失败。是否有解决此问题的已知最佳实践方法?还是我回到手动数据输入?
最佳答案
您可能想看看 Apache Stanbol ,它将 NER 引擎(我认为一个基于您提供的地名词典)和链接引擎连接在一起以解析您检测到的实体。我自己没有使用过它,它仍处于孵化阶段,但可能适合您的需求。
在 TAC 知识库人口轨道(实体链接)中也有一些这方面的研究。任务会在不同的地方弹出,你也应该在 ACL、EMNLP、SIGIR 等 session 上有运气(这个列表并不完整)。
TAC 系统链接到维基百科的一个子集,这可能有助于您的名称变化,因为页面具有“重定向”,本质上是特定页面的别名。
例如,以下页面重定向到“Apple Inc.”,但您可能希望从原始维基百科转储或干净来源(如 DBPedia)中提取重定向或 Freebase。
- 苹果
- 苹果公司
- 苹果电脑
- 苹果电脑公司
- 苹果电脑公司
- 苹果电脑公司
- 苹果电脑公司
- 苹果电脑公司
- 苹果公司
- 苹果公司
- 苹果公司
- 苹果电脑
- 苹果电脑公司
- 苹果公司
- 苹果公司
- ...
关于java - 在 Java 中消除命名实体的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007186/