尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
余弦相似度计算文本相似度的原理是什么?它对向量长度敏感吗?
余弦相似度计算文本相似度一、原理余弦相似度通过衡量两个向量在多维空间中的夹角余弦值来判断相似度核心思想是方向一致即相似忽略向量长度。公式cos(A, B) (A · B) / (||A|| · ||B||) Σ(a_i · b_i) / ( √Σa_i² · √Σb_i² )A · B向量点积反映共同分量的累积||A||、||B||向量 L2 范数起归一化作用取值范围[-1, 1]文本相似度场景中通常[0, 1]词频非负文本向量化流程构建词表从语料统计所有不重复词每个词对应一个维度。向量化每篇文本表示为词表维度向量分量通常为词频TFTF-IDF抑制高频虚词词向量平均word2vec/BERT embedding计算余弦对两文本向量套用公式。示例文本A猫 喜欢 吃 鱼 文本B狗 也 喜欢 吃 鱼 词表[猫, 狗, 喜欢, 吃, 鱼] A向量[1, 0, 1, 1, 1] B向量[0, 1, 1, 1, 1] 点积 00111 3 ||A|| √4 2 ||B|| √4 2 cos 3 / (2·2) 0.75相似度 0.75判定为较相似。二、对向量长度是否敏感不敏感。这是余弦相似度区别于欧氏距离等度量最关键的特性。原因分母||A||·||B||将两个向量各自归一化为单位向量相当于只比较方向长度信息被完全消除。A [1, 1, 1] ||A|| √3 B [2, 2, 2] ||B|| √12 2√3 长度是 A 的 2 倍 cos(A, B) (1·21·21·2) / (√3 · 2√3) 6/6 1.0A 和 B 长度差 2 倍但方向完全一致余弦相似度为 1完全相似。对比欧氏距离欧氏距离 d(A, B) √[(1-2)²(1-2)²(1-2)²] √3 ≈ 1.732欧氏距离会因长度差异给出不相似的判断而余弦相似度正确识别出方向一致。三、长度不敏感的实际意义1. 长短文本可比一篇 1000 字新闻和一句 20 字摘要若主题一致余弦相似度仍可较高欧氏距离会因向量长度悬殊而失效2. 词频绝对值差异不影响文档 A 中AI出现 10 次文档 B 中AI出现 100 次但相对比例一致余弦相似度关注的是词项分布的形状而非绝对计数3. 适合稀疏高维文本向量文本向量通常是上万维稀疏向量词表大余弦相似度计算高效且符合语义直觉。四、何时长度不敏感是缺点场景问题文本长度本身携带信息如区分短评论与长论文余弦相似度会丢失该信号词频绝对值重要如 TF-IDF 中高频词的绝对权重差异被抹平Magnitude-aware 任务推荐系统中用户活跃度评分数量应影响相似度计算此时应改用欧氏距离、皮尔逊相关系数或对余弦相似度做长度加权修正。五、一句话总结余弦相似度通过夹角余弦衡量文本向量方向一致性对向量长度不敏感归一化消除长度这使其特别适合长短文本对比和稀疏高维文本向量但当文本长度本身携带语义信号时这种不敏感反而成为局限需结合其他度量使用。
RELATED

相关推荐

二维码技术深度解析:从原理到Python/Java实战应用

二维码技术深度解析:从原理到Python/Java实战应用

防你不知道他脑后的二维码是可以扫的:二维码技术深度解析与实战应用 在日常开发中,二维码已经成为连接线上线下、实现快速信息传递的重要工具。但你是否遇到过扫描某些二维码时无法识别的情况?或者想要在自己的项目中集成二维码生成与识别功能…

📅 2026/9/8 1:15:42
AI工作流引擎:自然语言驱动的自动化实践

AI工作流引擎:自然语言驱动的自动化实践

1. 项目背景与核心价值最近两年AI领域最显著的变化,就是自然语言交互正在从"炫技功能"变成真正的生产力工具。作为长期关注效率工具的技术从业者,我观察到DeepSeek这类AI平台正在经历从"问答机器人"到"工作流引擎"的质变。…

📅 2026/9/4 17:54:33
Docker监控实战:夜莺监控与Categraf配置指南

Docker监控实战:夜莺监控与Categraf配置指南

1. 项目概述 最近在帮客户部署一套基于Docker容器的监控系统,选择了夜莺监控(Nightingale,简称n9e)作为监控平台,搭配Categraf作为数据采集器。这套组合在实际生产环境中表现相当稳定,今天就把完整的配置过…

📅 2026/9/5 3:43:06
MORE NEWS

更多资讯

📰

稀疏landmark与稠密landmark下EKF SLAM性能对比实验,预测更新同时进行与非同时进行对比EKF SLAM性能对比实验EKF SLAM在有色噪声下性能

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

📰

如何免费让老Mac重获新生:OpenCore Legacy Patcher 完整升级指南

如何免费让老Mac重获新生:OpenCore Legacy Patcher 完整升级指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为 2017 年之前的老 Mac 无法…

📰

如何使用PHP Telegram Bot Api构建响应式聊天机器人?5个核心功能详解

如何使用PHP Telegram Bot Api构建响应式聊天机器人?5个核心功能详解 PHP Telegram Bot Api是一个专为PHP开发者设计的Telegram BOT API原生封装库,它提供了简洁易用的接口,帮助开发者快速构建功能丰富的聊天机器人。本文将详细介绍如何利用…

📰

daisyUI 无构建项目(HTMX、WordPress)如何用 CDN 微 CSS 文件只引入所需组件样式

daisyUI 无构建项目(HTMX、WordPress)如何用 CDN 微 CSS 文件只引入所需组件样式 【免费下载链接】daisyui 🌼 🌼 🌼 🌼 🌼  The most popular, free and open-source Tailwind CSS component …

📰

Bruno 开源 API 开发与测试客户端深度解析:基于 Bru 文件的本地存储、Git 协作与全平台安装指南

Bruno 开源 API 开发与测试客户端深度解析:基于 Bru 文件的本地存储、Git 协作与全平台安装指南 【免费下载链接】bruno Opensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia) 项目地址: https://gitcode.com/GitHub_Tr…

📰

LightGBM实战:基于LOL对局数据的胜负预测与可解释建模

简介:本资源是一个基于机器学习的英雄联盟(LOL)胜负预测实战项目,面向数据科学初学者与游戏数据分析爱好者,解决MOBA类游戏高维对局数据建模与胜率预测的实际问题。压缩包共79个文件,含26个核心Python脚本&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬