【问题标题】:Tool or API needed to find text contain any word from a large dictionary of words查找文本所需的工具或 API 包含大量单词词典中的任何单词
【发布时间】:2011-07-13 05:56:36
【问题描述】:

我正在寻找一个工具(理想情况下),或者找不到一个 API 来从大量文本文件中的大型单词词典中搜索文本以查找任何单词的实例。在我的情况下,“单词”实际上是文件名,但不会包含空格。

一种快速算法可能会通过读取字典来构建 DFA(确定性有限自动机),然后能够使用单次遍历在任意数量的文件中查找字典单词的实例。

注意:我想要精确的文本匹配而不是像这样的 SO 问题的模糊匹配: - Algorithm wanted: Find all words of a dictionary that are similar to words in a free text

【问题讨论】:

    标签: algorithm search full-text-search


    【解决方案1】:

    你看过 lucene 吗?有一个 java 和一个 .net 版本

    http://lucene.apache.org/java/docs/index.html

    【讨论】:

      【解决方案2】:

      我会将单词字典加载到 HashMap 或“字典”中,然后逐行或逐字读取文件,检查地图是否包含该单词。

      【讨论】:

      • 对不起,这太慢了。我正在寻找一种可以读取文本流并且搜索成本恒定的算法(不会随着单词数量的增加而增加)。我想我可能正在寻找的是一个完美的哈希函数。 en.wikipedia.org/wiki/Perfect_hash_function
      • 这仍然不如可以简单地将文本流作为字节序列读取并发出匹配事件的 DFA 方法。
      • 啊,看起来fgrep 完成了这项工作。它实现了Aho and Corasick string match alg.
      猜你喜欢
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多