java文本相似度

在 Java 中,可以使用一些现成的库来比较文本的相似度。这里,我将为您提供一个使用 Jaccard 相似度算法(集合相似度)比较文本相似度的方法。首先,请确保将 commons-collections4-4.4.jar 添加到项目的类路径中。您可以从 Maven Central 仓库下载这个 JAR 文件。

  1. 添加 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>

  1. 使用 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 方法负责将输入字符串分解为单词。您可以根据需要替换为您喜欢的分词器。

请注意,这个示例仅提供了一个基本的文本相似度比较方法。实际上,有许多其他相似度指标和算法,如余弦相似度、编辑距离等,您可以根据实际需求进行选择。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值