【问题标题】:Scan texts for keyword list, tolerate spelling mistakes, determine a matching score for texts扫描文本以获取关键字列表,容忍拼写错误,确定文本的匹配分数
【发布时间】:2021-11-25 16:50:36
【问题描述】:

我有一个我现在无法自己解决的问题。 我的任务如下: 我有各种文本和字符串数组。 字符串数组可以包含单个单词或单词组合,如下所示:["apple", "orange fruit", "strawberry field", "ananas", "tomato plant"]

现在我需要扫描我的文本以查找数组中的元素并确定分数。 如果一个文本包含许多字符串(或它们的组合),它应该比其他文本产生更大的分数。 如果可能,结果还应该容忍拼写错误。

谁能给我一个提示,解决这个问题的最佳方法是什么? 有没有可以帮助解决这个问题的库? 我编码的语言是 Java。

提前谢谢你们。

【问题讨论】:

  • 您的第一步是获取一个文本和一个单词字符串数组,并创建一个包含每个单词及其频率的地图。下一步将是弄清楚如何为您的地图评分。例如,六个苹果比草莓地和一株番茄价值高还是低?最后,您将为每个单词创建 Soundex 值,将文本中的每个单词转换为其 Soundex 等效项,并以这种方式进行匹配。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java string text keyword textmatching


【解决方案1】:

Gilbert Le Blanc 提到的 Soundex 算法的替代方法是使用来自 Apache Commons Text libraryLevenshteinDistance。它只是查看将一个字符序列更改为另一个字符序列所需的更改次数,使用起来非常简单。

要接受需要两个或更少字符更改才能相同的单词,您可以执行以下操作

LevenshteinDistance ld = new LevenshteinDistance(2);
if(ld.apply(string1, string2) < 0){
    //Do something, e.g. add to map
}

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多