java文本相似度【余弦相似度】

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

为了实现文本相似度对比,我们可以使用余弦相似度算法。首先,我们需要将文本转换为向量,然后计算两个向量之间的余弦相似度。以下是一个简单的Java实现:

import java.util.HashMap;
import java.util.Map;

public class TextSimilarity {

    public static void main(String[] args) {
        String text1 = "这是一个关于计算机编程的文章";
        String text2 = "这篇文章讲述了计算机编程的基础知识";
        double similarity = calculateCosineSimilarity(text1, text2);
        System.out.println("文本相似度: " + similarity);
    }

    public static double calculateCosineSimilarity(String text1, String text2) {
        Map<Character, Integer> wordCount1 = getWordCount(text1);
        Map<Character, Integer> wordCount2 = getWordCount(text2);

        double dotProduct = 0.0;
        double magnitude1 = 0.0;
        double magnitude2 = 0.0;

        for (Character word : wordCount1.keySet()) {
            int count1 = wordCount1.get(word);
            int count2 = wordCount2.getOrDefault(word, 0);
            dotProduct += count1 * count2;
            magnitude1 += Math.pow(count1, 2);
        }

        for (Integer count : wordCount2.values()) {
            magnitude2 += Math.pow(count, 2);
        }

        magnitude1 = Math.sqrt(magnitude1);
        magnitude2 = Math.sqrt(magnitude2);

        if (magnitude1 == 0.0 || magnitude2 == 0.0) {
            return 0.0;
        }

        return dotProduct / (magnitude1 * magnitude2);
    }

    private static Map<Character, Integer> getWordCount(String text) {
        Map<Character, Integer> wordCount = new HashMap<>();
        for (char c : text.toCharArray()) {
            wordCount.put(c, wordCount.getOrDefault(c, 0) + 1);
        }
        return wordCount;
    }
}

这个代码示例首先定义了一个TextSimilarity类,其中包含一个main方法用于测试文本相似度计算。calculateCosineSimilarity方法是计算余弦相似度的核心方法,它接受两个字符串参数,分别表示要比较的文本。getWordCount方法用于将文本转换为字符计数的映射。

main方法中,我们定义了两个要比较的文本,并调用calculateCosineSimilarity方法计算它们的相似度。最后,我们将结果输出到控制台。文章来源地址https://www.toymoban.com/news/detail-684059.html

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

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

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

相关文章

  • 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日
    浏览(45)
  • React实现字符串首字母大写、翻转字符串、获取用户选定的文本

    在这个React的案例中,我们首先导入了React和useState钩子函数。 然后,我们定义了一个函数组件 App ,它包含了两个状态变量 inputText 和 outputText ,分别用于存储输入文本和输出文本。 我们使用 useState 钩子函数来创建这两个状态变量,并通过数组解构赋值的方式获取它们的当前

    2024年01月24日
    浏览(62)
  • iOS链式编程风格 -- 富文本字符串

            链式编程风格是一种将多个函数调用连接起来,形成一条函数调用链的编程风格。这种风格的代码可以通过返回 self 或某个适当的对象来实现。 代码简洁、连贯、易于阅读。 可以将一个方法的输出直接作为下一个方法的输入,降低中间变量的使用。 链式调用过长

    2024年02月14日
    浏览(40)
  • 深入了解字符串处理算法与文本操作技巧

    引言 字符串处理是计算机科学和数据处理的核心领域之一。本博客将深入介绍一些常见的字符串处理算法和文本操作技巧,包括字符串匹配、搜索、正则表达式、字符串操作和文本标准化等。 暴力匹配算法 什么是暴力匹配? 暴力匹配算法是一种最简单的字符串匹配方法,它

    2024年02月10日
    浏览(53)
  • IDE /字符串 /字符编码与文本文件(如cpp源代码文件)

    前期在整理 《IDE/VS项目属性中的 <字符集> 配置项》 和 《IDE /Qt Creator 文本编辑器之文件编码设置》和 《IDE /C4819: 该文件包含不能在当前代码页(936)中表示的字符》等文章的过程中,做了不少关于字符编码的测试,解决了一些问题,但是也让我有了些新的问题和思考。简单

    2024年02月16日
    浏览(34)
  • 百度OCR识别图片文本字符串——物联网上位机软件

            根据项目需求,我们需要完成LED显示屏实时显示歌词的效果。最优的方法是调用歌曲播放器的API获取歌词,但是由于这个开发资格不是很好申请,因此我们采用其他方案,即通过OCR识别获取歌词,并投射到LED显示屏上。本项目使用 IDEA 开发。         本文将跳过对歌

    2024年02月06日
    浏览(43)
  • pg使用sql将文本字符串转换成时间格式

    使用 PostgreSQL 数据库的 SQL 查询语句将文本字符串转换为时间格式,可以使用 to_timestamp 函数。 假设您的文本字符串时间格式为 “yyyy-MM-dd HH:mm:ss”,您可以使用以下 SQL 查询来转换: 这将返回一个时间戳类型的结果,其中包含从文本字符串转换而来的时间。 您可以在您的

    2024年02月12日
    浏览(60)
  • 查找目录中所有内容文本中不含某个特定字符串的文件列表

    查找目录中所有内容中不含某个特定字符串的文件的列表 -type f 表示只查找文件; !表示对匹配条件进行取反,即不含特定字符串; {} ;  将每个被找到的文件作为参数传递给find后面的grep命令,其中: 花括号是 find 命令使用的占位符,用于知道在何处插入当前正在使用的文

    2024年02月19日
    浏览(43)
  • java 字符串中插入字符串

    一、使用 StringBuilder 进行字符串处理,效率最高 输出: aaaa123abbbbcccc 效率比较高,整个过程只会产生2个对象 二、直接对字符串进行处理 此方法效率比较低,整个过程会产生4个对象 三、直接对字符串进行处理 将字符串转成数组,然后对数组进行处理,不推荐,这里就不展

    2024年02月16日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包