在 Java 中,可以使用一些现成的库来比较文本的相似度。这里,我将为您提供一个使用 Jaccard 相似度算法(集合相似度)比较文本相似度的方法。首先,请确保将 commons-collections4-4.4.jar
添加到项目的类路径中。您可以从 Maven Central 仓库下载这个 JAR 文件。
- 添加 Maven 依赖:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
- 使用 Jaccard 相似度算法比较文本相似度的 Java 方法:
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.Transformer;
import java.util.ArrayList;
import java.util.List;
public class TextSimilarity {
public static double jaccardSimilarity(String text1, String text2) {
List<String> words1 = tokenize(text1);
List<String> words2 = tokenize(text2);
List<String> union = new ArrayList<>(words1);
CollectionUtils.addAll(union, words2);
List<String> intersection = ListUtils.intersection(words1, words2);
return (double) intersection.size() / union.size();
}
private static List<String> tokenize(String text) {
// 您可以根据需要替换为您喜欢的分词器,例如:结巴分词等
String[] tokens = text.toLowerCase().split("\\s+");
return new ArrayList<>(List.of(tokens));
}
public static void main(String[] args) {
String text1 = "今天是个好天气。";
String text2 = "今天天气真好。";
double similarity = jaccardSimilarity(text1, text2);
System.out.println("文本相似度: " + similarity);
}
}
这个示例中的 jaccardSimilarity
方法使用 Jaccard 系数计算两个字符串之间的相似度。tokenize
方法负责将输入字符串分解为单词。您可以根据需要替换为您喜欢的分词器。文章来源:https://www.toymoban.com/news/detail-668059.html
请注意,这个示例仅提供了一个基本的文本相似度比较方法。实际上,有许多其他相似度指标和算法,如余弦相似度、编辑距离等,您可以根据实际需求进行选择。文章来源地址https://www.toymoban.com/news/detail-668059.html
到了这里,关于java文本相似度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!