用于预测文本的双元语法模型



我计划实现双元语法模型来预测搜索文本。如果用户经常搜索"测试搜索词",然后如果用户键入"测试",我希望自动建议"测试搜索词">

我有搜索文本的数据列表。我正在尝试使用双元语法,因为即使用户输入"Tast",它仍然应该提供"测试搜索词"。我正在用Java实现它。我正在寻找一个库来提供我拥有的数据,当我传递用户键入文本时,它应该提供预测。

经过研究,我发现了以下链接

  • https://www.javatips.net/api/Solbase-Lucene-master/contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ShingleFilter.java

  • https://opennlp.apache.org/docs/1.8.1/apidocs/opennlp-tools/opennlp/tools/ngram/NGramUtils.html

但他们对我的情况没有帮助。是否有适合我目的的 Java 库?

我正在考虑两种解决方案:

第一

  • 在 MARISA(使用递归实现的 StorAge 匹配算法(TRID 数据结构(针对关键字搜索和自动完成优化的数据结构(中为每个用户字符串查询编制索引。
  • 准备一个Levenshtein距离测量方法来容忍拼写错误。

现在,对于每个新用户查询q,获取在MARISA TRIE中索引的所有字符串,该字符串将您的查询q作为前缀(在拼写错误容错之后(。

第二

使用弹性搜索建议器

文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-suggesters.html#completion-suggester

请注意,建议功能的某些部分仍在开发中。

最新更新