我正在尝试在 Lucene 中进行实体提取(更像是匹配)。这是一个示例工作流程:
给定一些文本(来自 URL)和人名列表,尝试从文本中提取人名。
笔记:
人名没有完全规范化。例如,有些是 X 先生、Y 夫人,有些只是 John Doe、X 和 Y。要考虑的其他前缀和后缀是 Jr.、Sr.、Dr.、I、II 等(别让我开始使用非美国名称)。
我正在使用 Lucene MemoryIndex从每个 Url(剥离 html 标记)创建文本的内存索引,并使用 StandardAnalyzer 查询所有名称的列表,一次一个(100k 个名称,还有其他方法吗?这个?平均而言,这大约需要 8 秒。在我拥有的平均文本上)。
一个主要问题是,为了消除噪音,我使用 0.01 作为基础分数,如果文本包含“John Doe”并且在许多案例都没有达到 0.01 的阈值。
另一个问题是,如果我规范化所有名称并开始删除所有出现的 Dr. Mr. Mrs. 等,那么我会开始错过像“Dr. John Edward II”这样的好匹配,并最终得到很多像“Mr. . 约翰·爱德华”。
我知道 Lucene 可能也不是适合这项工作的工具,但到目前为止它还没有被证明太糟糕。任何帮助表示赞赏。