可能重复:
Java 中的相似性字符串比较
大家好
我正在尝试使用Java找到两个字符串之间的部分匹配,当然,stackoverflow 上有很多问题和答案,但是,这些都不能满足我的要求。我有两个字符串(句子),例如“强大的 Java 编程”和“强大的编程技能”。现在我想测量这两个句子之间的相似度,例如25%而不仅仅是部分匹配= ture或false。
谢谢
可能重复:
Java 中的相似性字符串比较
大家好
我正在尝试使用Java找到两个字符串之间的部分匹配,当然,stackoverflow 上有很多问题和答案,但是,这些都不能满足我的要求。我有两个字符串(句子),例如“强大的 Java 编程”和“强大的编程技能”。现在我想测量这两个句子之间的相似度,例如25%而不仅仅是部分匹配= ture或false。
谢谢
您可以使用Levenshtein distance或Jaro-Winkler等字符串距离确定算法。
只需使用 String API 和您自己的算法。像这样的东西:
public static double similarity(String a, String b) {
double count = 0;
String[] words = a.split();
for(String word : words) {
if(b.indexOf(word) != -1) {
count++;
}
}
return count / words.length;
}
问题是这不太正确——你想更好地查看 B 中的单词。我只是想让你大致了解你可能想要拥有的方法和结构。你还想清理你的输入——把它全部小写,删除标点符号,谁知道呢。
你可以看看这个库:SimMetrics。
SimMetrics 是一个相似度度量库,例如从编辑距离(Levenshtein、Gotoh、Jaro 等)到其他度量(例如 Soundex、Chapman)。