Java 计算文本相似度

这篇具有很好参考价值的文章主要介绍了Java 计算文本相似度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接受一个字符串和一个字符串列表作为参数的 Java 方法,用于计算两个字符串之间的相似度。

方法

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class StringSimilarity {
    /**
     * 计算两个字符串之间的相似度
     * @param str1 第一个字符串
     * @param list1 第一个字符串列表
     * @return 与传入的字符串最相似的字符串
     */
    public static String findMostSimilarString(String str, List<String> list1) {
        // 将字符串列表转换为集合,以便进行快速查找
        Set<String> set1 = new HashSet<>(list1);
        // 从集合中移除第一个字符串,因为我们要比较的是它与其他字符串的相似度
        set1.remove(str);

        // 计算第一个字符串与其他字符串的交集大小
        long intersectionSize = set1.stream().filter(s -> s.equals(str)).count();
        // 计算第一个字符串的长度
        long strLength = str.length();
        // 计算所有字符串的总长度
        long unionSize = set1.size() + strLength - intersectionSize;

        // 计算相似度值(0-1之间)
        double similarity = (double) intersectionSize / unionSize;

        // 找到与传入的字符串最相似的字符串
        String mostSimilarString = null;
        double maxSimilarity = Double.MIN_VALUE;
        for (String s : list1) {
            // 计算当前字符串与传入的字符串的相似度
            double currentSimilarity = calculateSimilarity(str, s, list1);
            // 如果当前相似度大于最大相似度,则更新最大相似度和最相似的字符串
            if (currentSimilarity > maxSimilarity) {
                maxSimilarity = currentSimilarity;
                mostSimilarString = s;
            }
        }

        return mostSimilarString;
    }

    /**
     * 计算两个字符串之间的相似度
     * @param str1 第一个字符串
     * @param str2 第二个字符串
     * @param list2 第二个字符串列表
     * @return 相似度值(0-1之间)
     */
    private static double calculateSimilarity(String str1, String str2, List<String> list2) {
        // 将字符串列表转换为集合,以便进行快速查找
        Set<String> set2 = new HashSet<>(list2);
        // 从集合中移除第二个字符串,因为我们要比较的是它与第一个字符串的相似度
        set2.remove(str2);

        // 计算第一个字符串与第二个字符串的交集大小
        long intersectionSize = set2.stream().filter(s -> s.equals(str2)).count();
        // 计算第一个字符串的长度
        long strLength = str1.length();
        // 计算所有字符串的总长度
        long unionSize = set2.size() + strLength - intersectionSize;

        // 返回相似度值(0-1之间)
        return (double) intersectionSize / unionSize;
    }
}

使用示例

List<String> list1 = Arrays.asList("apple", "banana", "orange");
String str = "banana";
String mostSimilarString = StringSimilarity.findMostSimilarString(str, list1);
System.out.println("Most similar string: " + mostSimilarString); // 输出:banana

文章来源地址https://www.toymoban.com/news/detail-669220.html

到了这里,关于Java 计算文本相似度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch学习篇9_文本相似度计算方法现状以及基于改进的 Jaccard 算法代码实现

    XOP亿级别题库的试题召回以及搜题的举一反三业务场景都涉及使用文本相似搜索技术,学习此方面技术以便更好的服务于业务场景。 目前基于集合的Jaccard算法以及基于编辑距离的Levenshtein在计算文本相似度场景中有着各自的特点,为了优化具体的计算时间抖动超时问题,需要

    2024年02月03日
    浏览(30)
  • 集成多元算法,打造高效字面文本相似度计算与匹配搜索解决方案,助力文本匹配冷启动[BM25、词向量、SimHash、Tfidf、SequenceMatcher]

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目

    2024年02月05日
    浏览(46)
  • Java 计算两个字符的相似度

    在Java中,要计算两个字符的相似度,可以借助一些字符串相似度算法。以下是几种常见的字符串相似度算法: Levenshtein距离:也称为编辑距离,用于计算两个字符串之间的最小编辑操作次数(插入、删除、替换)来转换一个字符串为另一个字符串。编辑距离越小,表示两个字

    2024年02月05日
    浏览(36)
  • Java实现两字符串相似度算法

    编辑距离:是衡量两个字符串之间差异的度量,它表示 将一个字符串转换为另一个字符串所需的最少编辑操作次数 (插入、删除、替换)。 计算方法可以有多种,其中一种 常见 的方法是 将编辑距离归一化为0到1之间的范围 (归一化编辑距离(Normalized Edit Distance)), 将编

    2024年02月05日
    浏览(64)
  • scala 短文本相似度计算

    simHash类的算法更适合长文本的相似度判断,而短文本可考虑一下几种方法: 一、编辑距离+jacard距离 对于dataframe,getLevenshtein可利用原生的levenshtein函数 二、md5 三、语义向量模型 其他思路 python的difflib使用

    2024年02月15日
    浏览(29)
  • python实现文本相似度排名计算

       项目中,客户突然提出需要根据一份企业名单查找对应的内部系统用户信息,然后根据直接的企业社会统一信用号和企业名称进行匹配,发现匹配率只有2.86%,低得可怜。所以根据客户的要求,需要将匹配率提高到70-80%左右,于是开始了折腾之路。     上网一查,各种相

    2024年02月12日
    浏览(29)
  • 自然语言处理14-基于文本向量和欧氏距离相似度的文本匹配,用于找到与查询语句最相似的文本

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目14-基于文本向量和欧氏距离相似度的文本匹配,用于找到与查询语句最相似的文本。NLP中的文本匹配是指通过计算文本之间的相似度来找到与查询语句最相似的文本。其中一种常用的方法是基于文本向量和欧氏

    2024年02月15日
    浏览(38)
  • Python中的文本相似度计算方法

    在自然语言处理(NLP)领域,文本相似度计算是一个常见的任务。本文将介绍如何使用Python计算文本之间的相似度,涵盖了余弦相似度、Jaccard相似度和编辑距离等方法。 1. 余弦相似度 余弦相似度是一种衡量两个向量夹角的方法,用于衡量文本的相似度。首先,将文本转换为

    2024年02月13日
    浏览(29)
  • Python文本分析 | 余弦相似度的计算

    本文首发于微信公众号:Python for Finance 链接:https://mp.weixin.qq.com/s/i74pct7a4NBRSN39kg2NXA 余弦相似性通过计算两个向量的余弦角来测量两个向量之间的相似性。 D1 = ‘the best data science course’ D2 = ‘data science is popular’ 基于词袋法构造文本向量: D1:[1,1,1,1,1,0,0] D2:[0,

    2023年04月11日
    浏览(31)
  • LLM - LLaMA-2 获取文本向量并计算 Cos 相似度

    目录 一.引言 二.获取文本向量 1.hidden_states 与 last_hidden_states ◆ hidden_states ◆ last_hidden_states  2.LLaMA-2 获取 hidden_states ◆ model config  ◆ get Embedding 三.获取向量 Cos 相似度 1.向量选择 2.Cos 相似度 3.BERT-whitening 特征白化 4.评估指标对比 四.总结 前面提到了两种基于统计的机器翻

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包