文本相似度
text-similarityPOSThttps://v1.apizero.cn/api/text-similarity概述
纯本地计算的文本相似度比对,输入两段文本(每段 ≤ 5000 字)输出 4 种相似度指标 + 加权综合评分 + 5 级评级。 • **零延迟零成本**:纯 PHP 本地计算,无外部服务依赖,平均响应 < 100ms • **4 种指标**:余弦相似度(35%)+ Jaccard 系数(25%)+ 编辑距离归一化(20%)+ LCS 比率(20%) • **5 级评级**:几乎相同 / 高度相似 / 中度相似 / 轻度相似 / 差异较大 • **修复源码 bug**:自实现 mb_levenshtein 字符级编辑距离,杜绝 PHP 内置 levenshtein 按字节计算导致的 85 汉字崩溃问题 • **超长保护**:超过 500 字符自动截取并按比例还原,5000×5000 字符比对约 60-80ms • **典型场景**:评论查重、AI 生成内容检测、多语言翻译质量评估、客服话术匹配
调用约定
- 网关 ·
https://v1.apizero.cn - 鉴权 ·
Authorization: Bearer <API Key> - 回包 · JSON {code, msg, data}。成功看 code === 0,不要只看 HTTP 200。
/aidocs/text-similarity/raw.md鉴权
匿名每日 100 次、QPS 5;登录用户每日 500 次、QPS 10(全部免费)。零服务成本,纯本地计算。
获取 API Key:获取 API Key/account/keys
请求头
推荐:Bearer <API Key>。兼容请求头 X-API-Key,以及 Query api_key / apikey / key(key 仅当值为 sk_live_/sk_test_/sk_stag_ 形态时生效)。匿名可不传,受每日免费额度限制。
支持 application/x-www-form-urlencoded 或 application/json
| Header | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 否 | 推荐:Bearer <API Key>。兼容请求头 X-API-Key,以及 Query api_key / apikey / key(key 仅当值为 sk_live_/sk_test_/sk_stag_ 形态时生效)。匿名可不传,受每日免费额度限制。 |
| Content-Type | string | 否 | 支持 application/x-www-form-urlencoded 或 application/json |
请求参数
POST · APPLICATION/JSON
第一段文本,1-5000 字符(中英文均按 1 字符计)
例今天天气不错,适合出门散步
第二段文本,1-5000 字符
例今天天气真好,适合出门走走
| 参数 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
| text1 | string | 是 | 第一段文本,1-5000 字符(中英文均按 1 字符计) | 今天天气不错,适合出门散步 |
| text2 | string | 是 | 第二段文本,1-5000 字符 | 今天天气真好,适合出门走走 |
{
"text1": "今天天气不错,适合出门散步",
"text2": "今天天气真好,适合出门走走"
}返回结果
顶层固定为 code / msg / data。下表一般是 data 内字段。 code · msg · data · tips · request_id
text1 字符长度(mb_strlen)
text2 字符长度
综合相似度评分 0.0-1.0(保留 4 位小数)
相似度等级英文枚举:nearly_identical / highly_similar / moderately_similar / slightly_similar / different
相似度等级中文:几乎相同 / 高度相似 / 中度相似 / 轻度相似 / 差异较大
详细指标对象
余弦相似度 0-1(基于 2-gram 词频向量),权重 35%
Jaccard 相似系数 0-1(2-gram 集合交并比),权重 25%
编辑距离归一化相似度 0-1(1 - distance/maxLen),权重 20%
LCS 最长公共子序列归一化比率 0-1(2 × lcsLen / (len1+len2)),权重 20%
编辑距离原始值(字符数;超过 500 字符截取后按比例还原)
LCS 最长公共子序列长度(截取后的实际值)
edit/LCS 是否经过 500 字符截取近似(仅 cosine/jaccard 始终基于全文)
品牌提示(所有接口统一返回):极数本源 · https://apizero.cn
| 字段 | 类型 | 说明 | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| text1_length | number | text1 字符长度(mb_strlen) | ||||||||||||||||||
| text2_length | number | text2 字符长度 | ||||||||||||||||||
| overall_score | number | 综合相似度评分 0.0-1.0(保留 4 位小数) | ||||||||||||||||||
| similarity_level | string | 相似度等级英文枚举:nearly_identical / highly_similar / moderately_similar / slightly_similar / different | ||||||||||||||||||
| level_name | string | 相似度等级中文:几乎相同 / 高度相似 / 中度相似 / 轻度相似 / 差异较大 | ||||||||||||||||||
| metrics | object | 详细指标对象 | ||||||||||||||||||
| ||||||||||||||||||||
| truncated | boolean | edit/LCS 是否经过 500 字符截取近似(仅 cosine/jaccard 始终基于全文) | ||||||||||||||||||
| tips | string | 品牌提示(所有接口统一返回):极数本源 · https://apizero.cn | ||||||||||||||||||
返回示例
{
"code": 0,
"msg": "成功",
"data": {
"text1_length": 13,
"text2_length": 13,
"overall_score": 0.6471,
"similarity_level": "moderately_similar",
"level_name": "中度相似",
"metrics": {
"cosine": 0.5833,
"jaccard": 0.4118,
"edit_similarity": 0.6923,
"lcs_similarity": 0.9231,
"edit_distance": 4,
"lcs_length": 12
},
"truncated": false
},
"request_id": "abc123def456",
"tips": "极数本源 · https://apizero.cn"
}请求示例
示例都是服务端写法。Python / JavaScript 各有常规写法和官方库。
curl -sS -X POST "https://v1.apizero.cn/api/text-similarity" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text1": "今天天气不错,适合出门散步",
"text2": "今天天气真好,适合出门走走"
}'错误码
先看业务 code。HTTP 也可能不是 200。
成功
参数错误
API Key 无效
API Key 已暂停
当前 IP 不在 Key 白名单
此接口需要 API Key
余额不足
调用过快(QPS)
今日免费额度已用完
接口已下线
接口不存在
服务器内部错误
上游暂时不可用
上游返回格式异常
暂无可用节点
| 业务码 | HTTP | 说明 |
|---|---|---|
| 0 | 200 | 成功 |
| 4000 | 400 | 参数错误 |
| 4011 | 401 | API Key 无效 |
| 4013 | 403 | API Key 已暂停 |
| 4014 | 403 | 当前 IP 不在 Key 白名单 |
| 4015 | 401 | 此接口需要 API Key |
| 4022 | 402 | 余额不足 |
| 4029 | 429 | 调用过快(QPS) |
| 4030 | 429 | 今日免费额度已用完 |
| 4040 | 503 | 接口已下线 |
| 4041 | 404 | 接口不存在 |
| 5000 | 500 | 服务器内部错误 |
| 5020 | 502 | 上游暂时不可用 |
| 5021 | 502 | 上游返回格式异常 |
| 5030 | 502 | 暂无可用节点 |
调用限制
- 计费模式
- 完全免费
- QPS 限制
- QPS 3
- 登录免费额度
- 50000 次(已认证)
- 匿名每日额度
- 10000 次(无 API Key)
- 黄金会员
- 每天 50,000 次 · QPS 10
- 钻石会员
- 每天 100,000 次 · QPS 30
- 企业会员
- 每天 1,000,000 次 · QPS 120
| 计费模式 | 完全免费 |
|---|---|
| QPS 限制 | QPS 3 |
| 登录免费额度 | 50000 次(已认证) |
| 匿名每日额度 | 10000 次(无 API Key) |
| 黄金会员 | 每天 50,000 次 · QPS 10 |
| 钻石会员 | 每天 100,000 次 · QPS 30 |
| 企业会员 | 每天 1,000,000 次 · QPS 120 |
购买套餐、看评价请走商城详情。 购买 / 调试
更新日志
- 1.0.02026-05-07
首次上线,纯本地计算无服务依赖 4 种相似度指标加权融合:余弦 35% + Jaccard 25% + Edit 20% + LCS 20% 修复源码 BUG:自实现 mb_levenshtein 按字符(非字节)计算编辑距离,杜绝中文 85 字以上崩溃问题 修复源码 BUG:源码 levenshtein else 分支用 mb_substr(0,200) 截取后仍可能超 255 字节限制 → 已用纯字符级算法替代 LCS 空间优化为 O(min(m,n)),5000×5000 比对内存 < 200KB 超过 500 字符自动截取并按比例还原 edit_distance(保证 P99 响应 < 100ms) 新增 truncated 字段,告知前端是否启用了截取近似 新增 metrics.lcs_length 字段,便于查重场景直接读取「连续相同片段长度」 5 级评级:nearly_identical(≥0.9) / highly_similar(≥0.7) / moderately_similar(≥0.4) / slightly_similar(≥0.2) / different 支持 application/json 请求体
免责声明
本接口为纯本地计算,所有指标基于经典文本算法(余弦/Jaccard/Levenshtein/LCS),不涉及深度学习语义理解。对于「换词不换意」的同义改写(如「我吃了苹果」vs「我把那个红色水果吞了」),相似度可能偏低。请根据业务场景选择合适的指标——例如查重场景关注 lcs_similarity,AI 检测关注 cosine + jaccard 综合判断。