余弦相似度原理通俗版:中文文本相似度检测接口背后的"余弦定理与新闻分类"
# 余弦相似度原理通俗版:中文文本相似度检测接口背后的"余弦定理与新闻分类"
> 元信息:接口/接入点 中文文本相似度检测接口(294/1、294/2)· 免费 · 返回格式 JSON · 适用人群 想"知其所以然"的开发者 · 阅读时间 约 7 分钟
## 核心要点
- 本接口算法源于 Google 黑板报《数学之美(余弦定理和新闻分类)》,核心是把文本变成向量,用**向量夹角余弦**衡量相似度。
- 余弦值越接近 1,夹角越小,两文本越相似;等于 1 表示方向完全一致。
- 理解原理能帮你解释"为什么改写会被判相似""为什么短文本更敏感",从而更合理地设阈值。
## Why:懂原理才能用得稳
只看 `like` 数字,你永远在猜"0.8 算不算像"。懂了余弦相似度,你就知道它比的是"用词取向"而非"字面一致"——这直接解释了接口的很多行为:同义改写仍可能高分、乱序不影响、长度差异有讲究。知其所以然,阈值才设得有底气。
## What:一句话原理
把两段文本各自变成一个高维向量(每个维度代表某个词的出现情况),然后算这两个向量的**夹角余弦**。夹角越小 → 余弦越接近 1 → 文本越相似。
## How:从一句话到向量
### 步骤 1:分词与向量化(直觉版)
假设词典只有三个词 `[天气, 公园, 吃饭]`:
- 文本 A "今天天气好去公园" → 向量 `[1, 1, 0]`
- 文本 B "天气不错去公园走走" → 向量 `[1, 1, 0]`
两者向量方向一致,余弦 = 1,判定高度相似。
### 步骤 2:余弦公式
```
cos(θ) = (A · B) / (|A| × |B|)
```
- `A · B`:两向量对应维度相乘再求和(点积)
- `|A|`、`|B|`:向量长度(模)
点积大、模长适中 → 余弦接近 1。
### 步骤 3:和接口的关系
接口内部完成了"分词 → 向量化 → 算余弦"的全过程,对外只暴露 `like`/`likeValue`(即余弦值)。你无需自己实现向量化,理解了它比的是"用词取向"即可。
## 返回示例与解析
接口返回的 `like = 0.8164965809277261` 这类值,本质就是余弦值。越接近 1 越像,越接近 0 越不相关。
## 进阶 / 边界
- **同义改写仍可能高分**:"天气好去公园"与"气候不错逛公园"用词不同但取向接近,余弦可能不低——这是算法特性,不是缺陷。
- **短文本更敏感**:字数越少,向量维度越稀疏,少量词差异对夹角影响更大。
- **不区分语义真假**:它只衡量"像不像",不判断"对不对",别拿来做事实核验。
- **仅中文**:原理层也受语言限制约束,英文/数字不参与。
## FAQ
**Q1:like 值到底是怎么算出来的?**
接口内部把文本转成向量后计算向量夹角的余弦,返回值就是该余弦值,范围 0~1。
**Q2:为什么两段字面不同但 like 很高?**
余弦比的是用词取向而非字面一致;同义改写、换序不改变整体取向,所以仍可能高分。
**Q3:余弦相似度和编辑距离有什么区别?**
编辑距离看"改几个字",余弦看"用词向量夹角"。本接口用的是余弦思路,对同义改写更鲁棒,但对纯字面错别不敏感。
**Q4:值等于 1 一定代表完全相同吗?**
不一定。余弦=1 表示向量方向一致(用词取向相同),但不保证字面逐字相同,需结合业务判断。
## 下一步阅读
- [相似度阈值怎么定?用中文文本相似度检测接口做判重的工程实践](https://www.showapi.com/guides/text-similarity-threshold-294)
- [中文文本相似度检测接口返回字段全解:like / likeValue / mostLike / ret_code 一文读懂](https://www.showapi.com/guides/text-similarity-response-fields-294)
- [中文文本相似度检测接口:5 分钟从注册到第一条相似度结果](https://www.showapi.com/guides/text-similarity-quickstart-294)
- **本系列共 12 篇**:查看[中文文本相似度检测接口指南总目录](https://www.showapi.com/guides/text-similarity-guides-294)