当前位置: 首页 > news >正文

文本相似度 API 快速上手:参数解读、示例与注意事项

适用场景

文本相似度计算广泛用于内容审核、评论去重、AI 输出一致性校验、知识库匹配等场景。本文介绍的接口纯 PHP 本地运算,无外部上游依赖,平均响应低于 100 毫秒(根据素材 5000×5000 字符比对约 60-80 ms),适合对实时性要求较高的中小规模应用。

典型用例:

  • 论坛评论查重:检测用户是否反复粘贴相同内容。
  • AIGC 质量初筛:比对生成文本与 prompt 的语义相似度。
  • 翻译回译验证:将译文再译回原文,计算相似度评估翻译是否准确。
  • 客服话术匹配:用户输入与标准问句的近似程度判断。

接口能力边界

项目说明
请求地址https://v1.apizero.cn/api/text-similarity
请求方法POST
QPS 限制10 次/秒(素材给出)
每段文本长度1~5000 字符(中英文均按 1 字符计)
超长保护超过 500 字符自动截取前 500 字符计算,并按比例还原得分(见下方说明)
输出指标余弦相似度、Jaccard 系数、编辑距离归一化、LCS 比率,以及加权综合评分与 5 级评级

注意:接口为匿名调用时每日有 100 次调用次数限制(素材表述),但本教程聚焦技术接入,不讨论维护复杂度;开发者可自行查看官方文档获取最新限制。

请求参数与鉴权

Header 参数

参数是否必须类型说明示例
AuthorizationstringAPI Key 鉴权头,格式Bearer sk_live_xxx;匿名调用时省略Bearer sk_live_xxxxxxxxxxxxxx
Content-Typestring支持application/x-www-form-urlencodedapplication/jsonapplication/json

若使用 API Key,建议从环境变量读取;若仅测试可匿名调用。

请求体(JSON 格式)

字段必须类型描述示例
text1string第一段文本,1-5000 字符"今天天气不错,适合出门散步"
text2string第二段文本,1-5000 字符"今天天气真好,适合出门走走"

请求体支持application/json或表单格式,本文以 JSON 为例。

curl 调用示例

以下命令演示使用 API Key 鉴权(请将$APIZERO_API_KEY替换为实际密钥):

curl -sS -X POST \ -H "Authorization: Bearer $APIZERO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"text1":"今天天气不错,适合出门散步","text2":"今天天气真好,适合出门走走"}' \ "https://v1.apizero.cn/api/text-similarity"

若匿名调用(每日限额内),可直接去掉-H "Authorization:..."行:

curl -sS -X POST \ -H "Content-Type: application/json" \ -d '{"text1":"今天天气不错,适合出门散步","text2":"今天天气真好,适合出门走走"}' \ "https://v1.apizero.cn/api/text-similarity"

返回值解读

成功响应(HTTP 200)示例:

{ "code": 0, "data": { "level_name": "中度相似", "metrics": { "cosine": 0.5833, "edit_distance": 4, "edit_similarity": 0.6923, "jaccard": 0.4118, "lcs_length": 12, "lcs_similarity": 0.9231 }, "overall_score": 0.6471, "similarity_level": "moderately_similar", "text1_length": 13, "text2_length": 13, "truncated": false }, "msg": "成功", "request_id": "abc123def456" }

字段说明

字段类型含义
codeint业务状态码,0 表示成功
msgstring状态描述
request_idstring本次请求唯一标识,便于排障
data.metrics.cosinefloat余弦相似度,取值 [0,1],权重 35%
data.metrics.jaccardfloatJaccard 系数(交集/并集),权重 25%
data.metrics.edit_distanceint字符级编辑距离(Levenshtein),绝对值
data.metrics.edit_similarityfloat编辑距离归一化相似度,权重 20%
data.metrics.lcs_lengthint最长公共子串长度
data.metrics.lcs_similarityfloatLCS 归一化相似度,权重 20%
data.overall_scorefloat加权综合得分(公式见下方)
data.similarity_levelstring机器可读级别:almost_identical,highly_similar,moderately_similar,slightly_similar,different
data.level_namestring中文级别:几乎相同 / 高度相似 / 中度相似 / 轻度相似 / 差异较大
data.text1_lengthinttext1 实际字符数
data.text2_lengthinttext2 实际字符数
data.truncatedbool是否因超长而截取(超过 500 字符时 true)

加权综合得分 = cosine×0.35 + jaccard×0.25 + edit_similarity×0.20 + lcs_similarity×0.20(素材权重)。

常见错误与处理

1. HTTP 4xx 错误

状态码可能原因排查方法
400缺少必填字段text1text2;文本超过 5000 字符检查请求体 JSON 格式,确认字段名和类型
401API Key 无效或过期确认Authorization头格式为Bearer sk_live_...
413请求体过大(通常不会,5000 字文本体积很小)
429超出 QPS 限制(10 次/秒)增加请求间隔或使用队列

2. 业务错误码(code非 0)

  • code非 0,msg会给出具体原因,例如"文本长度超出限制"
  • 建议始终检查code,不要仅依赖 HTTP 状态码。

3.data.truncated为 true

当某段文本超过 500 字符时,接口自动截取前 500 字符计算,并按截取比例对overall_score进行还原。还原后分数并非完全精确,适合快速筛选;若需高精度,建议应用层自行分段后取平均。

工程化注意事项

1. 文本长度限制处理

素材说明单段最多 5000 字符,建议客户端在发送前做长度校验,或通过String.length快速截断。若业务中常有超长文本,可考虑分段请求后加权平均。

2. 超长文本的截取策略

  • 接口本身在字符数超过 500 时会自动截取前 500 并设置truncated: true。如果业务场景对长文本相似度精度要求高,更推荐客户端按语义分段(如按句号拆分),分别请求后汇总。
  • 注意:截取后只保留前 500 字符,可能丢失后半部分信息,导致相似度偏差。

3. 重试与幂等

  • 请求应设置超时时间(建议 5 秒),并在超时或 5xx 错误时重试。
  • 接口本身无幂等性保证,多次相同请求可能因负载差异返回略有不同的结果(但理论上一样);重试不会产生副作用。

4. 缓存策略

若业务中有大量重复比对(如相同两段文本多次请求),可在应用层建立 Map 缓存,以text1 + "|||" + text2为键缓存结果,减少重复调用。

5. 监控与日志

  • 记录每次请求的request_idoverall_scoretruncated字段,便于后续分析。
  • 关注truncated为 true 的请求比例,若持续偏高,需考虑调整客户端分割策略。

参考文档

  • 接口文档页
  • 原始 Markdown 文档
http://www.jsqmd.com/news/1298335/

相关文章:

  • 2026新版数据分析教程:统计学+SQL+Python实战学习路径
  • STM32按键消抖实战:从阻塞延时到状态机,嵌入式开发必会技能
  • RAG+Agent知识管理系统常见失败原因与优化实践
  • UE5.1增强输入系统:基于Input Mapping Contexts的分层交互架构实战
  • 冷门信息差副业,支付宝搬砖看懂就能上手
  • 2026日式搬家专业公司客户口碑力荐,零套路高认可度 - 工业推荐榜
  • FrameCove CAN™ V1.3.0 正式发布:从 CAN 日志解析到专业分析报告交付
  • 制造业:2026年全加工模胚专业制造厂家:高精度、加硬型、非标定制模胚优质供应商 - 优企名品
  • Spring AI:Java开发者构建AI应用的标准工具链
  • Python 3.8与PyCharm环境搭建:新手无痛入门与高效开发指南
  • Spring Data JDBC实战:轻量级ORM框架的优势与应用
  • Agentic AI上下文工程:架构设计与实践优化
  • 2026年 非标五金模胚供应商:精密定制模架与高精度制造企业深度盘点 - 优企名品
  • Transformer机器翻译系统:工业级优化与生产实践
  • AHK v1到v2脚本转换:专业级自动化迁移解决方案
  • STM32独立看门狗(IWDG)原理、配置与工业级应用全解析
  • MaixCAM与无刷电机云台:嵌入式视觉运动控制实战指南
  • MATLAB 3D可视化:从数据导入到工程应用全流程解析
  • BPE算法详解:从原理到实现,掌握NLP子词分词核心技术
  • INA226高精度功率监测芯片:从核心原理到硬件设计、软件驱动与工程实践全解析
  • AMD/Xilinx 生态中的块级控制协议(Block-Level Control Protocol),以cmac 为例
  • 花不到15美元,用步进电机和ESP32让普通空调变智能!
  • 超辐射发光二极管(SLD)原理、应用与选型全解析
  • 想在北京办理宽带的话都需要提前了解哪些相关的注意事项?
  • Android Gradle编译失败:系统化排查与解决Execution failed for task ‘:app:compileDebugJavaWithJavac‘
  • 万源市防水补漏_2026川东北秦巴山区城市漏水维修价格行情与五大正规团队推荐 - 雨婺虹房屋维修
  • C++智能指针源码解析:从RAII到内存安全实践
  • 新版J-Link驱动缺失芯片支持文件的三种解决方案
  • 从原型到审查的Agent工作流,吃透Harness
  • Unity后处理终极排错指南:从原理到实战解决视觉效果与性能问题