有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字典上的java部分匹配

我正在使用GATE(基于Java的NLP框架),希望找到与字典部分匹配的单词。 例如,我有一本包含以下术语的疾病词典

Congestive cardiac failure
Congestive Heart Failure
Colon Cancer
      .
      . 
      .
Thousands of more terms

让我们假设我有一个字符串"Father had cardiac failure last year",从这个字符串中,我想将“心衰”标识为部分匹配,因为它是作为字典中一个术语的一部分出现的

我在Python、JS和C#中看到过一些关于类似主题的讨论,但我不确定在这种情况下有什么帮助。 我想知道我能不能利用这里的阿霍·科拉西克


共 (3) 个答案

  1. # 2 楼答案

    出现的一个问题是要在搜索中包含哪些子字符串。如果你包括了所有的子串,那么“心脏”也将是一个匹配项,但这并不是一个真正的疾病。 可能所有正确对齐的(字)子字符串(可能长度大于1)都是可以接受的

    因此,您可以做的一件事是使用您想要包含的子字符串来训练Aho Corrasick模式匹配器。要保留子字符串来自哪个词典术语的信息,您可能需要稍微修改算法(如果保留该信息很重要),或者构建另一个数据结构以在以后查找它

    在任何情况下,我都会在训练/匹配之前将疾病列表和要搜索的文档转换为小写。如果有可能拼写错误,也有关于模糊aho-corasick自动机的论文

  2. # 3 楼答案

    也许你应该用Lucene。将词典的每一行视为文档,将文本中的每一句视为查询