java - 如何比较Java中几乎相似的字符串? (字符串距离测量)

标签 java string comparison levenshtein-distance string-metric

我想比较两个字符串并得到一些分数,它们看起来有多相似。 例如“句子很相似”“句子很相似”

我不熟悉 Java 中的现有方法,但对于 PHP,我知道 levenshtein function .

Java中有更好的方法吗?

最佳答案

以下 Java 库提供多种比较算法(Levenshtein、Jaro Winkler、...):

  1. Apache Commons Lang 3:https://commons.apache.org/proper/commons-lang/
  2. Simmetrics:http://sourceforge.net/projects/simmetrics/

这两个库都有一个 java 文档(Apache Commons Lang JavadocSimmetrics Javadoc)。

//Usage of Apache Commons Lang 3
import org.apache.commons.lang3.StringUtils;   
public double compareStrings(String stringA, String stringB) {
    return StringUtils.getJaroWinklerDistance(stringA, stringB);
}

 //Usage of Simmetrics
import uk.ac.shef.wit.simmetrics.similaritymetrics.JaroWinkler    
public double compareStrings(String stringA, String stringB) {
    JaroWinkler algorithm = new JaroWinkler();
    return algorithm.getSimilarity(stringA, stringB);
}

关于java - 如何比较Java中几乎相似的字符串? (字符串距离测量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2084730/

相关文章:

java - 将 Streaming Flux 的 WebClient Post 拆分为 JSON 数组

c# - 基于文件系统的读取与简单的数据库查询?

python - 如何测试多个变量与单个值的相等性?

java - SSL 握手异常 : Received fatal alert: access_denied

java - 如何使用 okHttpClient 执行 graphql 查询?

java - EntityManager.persist() 不保存到数据库

c - 快速C比较

c# - C++ dll 返回的字符串在 C# 调用程序中已损坏,为什么?

c - 为什么两个元素从字符串(从 char 到 int)的转换不能相加?

iphone - Objective-C:NSMutableString replaceCharactersInRange 引发异常