你大概遇到过这种情况:想判断一段文字是不是车轱辘话,或者想知道自己写的提示词有没有反复出现同一个词,却不知道用什么指标。类符形符比就是干这个的——它衡量一段文本里「不重复的词」占「所有词」的比例。这篇不堆公式,只讲清它算什么、算出来偏高偏低说明什么、什么时候这个指标会骗你,以及拿它在提示词和文本处理里做自检的具体步骤。
你大概遇到过这种情况:想判断一段文字是不是车轱辘话,或者想知道自己写的提示词有没有反复出现同一个词,却不知道用什么指标。类符形符比就是干这个的——它衡量一段文本里「不重复的词」占「所有词」的比例。这篇不堆公式,只讲清它算什么、算出来偏高偏低说明什么、什么时候这个指标会骗你,以及拿它在提示词和文本处理里做自检的具体步骤。
它常被简写成 TTR。名字里的两个词,看着像技术黑话,其实拆开就是「不同的词」和「出现过的词」。理解这一层,后面所有判断都顺了。至于各家模型在中文、英文上的实际分词表现,可以到 模型资料库 配合看,不同厂商的切分口径本来就不一样。
它到底在数什么
- 形符(token)
- 文本里出现的每一个词,同一个词出现两次就算两个,也就是「按次数数」。
- 类符(type)
- 去重之后剩下的不同词,出现多次只算一个,也就是「按种类数」。
- 类符形符比
- 类符数除以形符数,结果落在 0 到 1 之间。
比值越接近 1,说明用词越不重复;越接近 0,说明翻来覆去就那几个词。但要注意:它衡量的是「词汇丰富度」,不是「写得好不好」。用词丰富和表达清楚是两件事,指标高但逻辑乱的文本很常见。
- 同一个词出现两次,形符加二,类符只加一。
- 全篇用词完全不重复,比值就是 1;全篇只有一个词反复出现,比值趋近于 0。
- 它是描述性指标,只说明现象,不替你做质量判断。
- 跨语言、跨体裁比较前,先确认口径一致,否则数字没有意义。
自己动手算一遍:最小可跑流程
- 定分词口径英文按空格和标点切基本够用;中文得先决定按字、按词还是按 n-gram。口径不同算出来的数完全不同,跨文本比较前必须统一。
- 做归一化统一大小写、去掉标点、决定停用词算不算。做了这一步就要在记录里写清楚,否则两次结果没有可比性。
- 相除得到比值类符数除以形符数。真要自己算,一段几十行的脚本就够;懒得写就用能统计词频的表格工具,先出词频表再去重计数。
- 记录上下文把口径、文本长度、样本来源写成一两行备注,当成固定标签。下次才有对照,不会拿两套口径的结果互相打架。
# 思路示意,不是完整实现;重点是看顺序
# 1) 读入文本 2) 归一化 3) 分词 4) 去重计数 5) 相除
# 中文记得先把分词口径固定下来,再跑后面的步骤| 环节 | 做错会怎样 | 怎么避免 |
|---|---|---|
| 分词 | 中英混排被切成乱七八糟的片段 | 先声明口径,再统一跑一遍 |
| 归一化 | 大小写和标点让类符虚高 | 定成规则后写进备注 |
| 停用词 | 算不算的结论差很多 | 同一批样本只选一种处理方式 |
| 比较 | 不同长度直接比没有意义 | 固定长度或只看同长度区间 |
什么时候这个指标会骗你
长度是最大的坑。文本越长,重复词越容易出现,比值天然会被拉低。所以拿一段短文和一篇长文直接比,结论基本无效。想比,就固定长度再比,比如都截成长度一致的前若干词,或者只看同一个长度区间内的变化趋势,而不是盯着单点数值下判断。
文本类型也要对齐。产品说明书本来就该反复用同一批术语,诗歌和小说的用词习惯又完全不同,跨体裁比没有意义。专有名词密集的文本会拉高比值但不代表写得好;反过来模板化文本比值低也未必是坏事。
- 短样本的数值不要推广到整份文档。
- 中文和英文的分词结果差异很大,跨语言别直接比。
- 同一批数据里混了不同长度的文本,先分段再比。
- 拿它当筛查信号可以,拿它当判决工具会误伤。
在提示词和文本处理里怎么用它
写提示词时,把同一段指令改几版,各算一遍比值和用词分布,能快速看出哪一版在反复堆同义词、哪一版用词更聚焦。抽查模型输出时,同一个问题多跑几次,如果每次比值和用词高度接近,说明输出偏模板化;波动大则说明表达更发散。这只是观察角度,不是质量评分。
| 场景 | 看什么 | 下一步动作 |
|---|---|---|
| 提示词迭代 | 几个版本的比值和用词分布 | 挑出反复堆同义词的那版改掉 |
| 模型输出抽查 | 多次输出的比值波动 | 波动过小就人工看有没有套话 |
| 语料清洗 | 一批文本里比值异常低的样本 | 先怀疑重复粘贴或页眉残留 |
| 术语文档 | 术语反复出现的密度 | 结合业务判断是否正常 |
在文本清洗场景里,一批语料如果比值异常低,先怀疑是不是混进了重复粘贴的内容或页眉页脚残留,比逐条肉眼翻快得多。做法上建议把它当成筛查工具,先算出数值挑出可疑样本,再人工看那几条,而不是拿阈值直接删数据。要挑工具或对照检测服务,可以到 工具目录 看看有哪些现成的统计入口。
上手清单和常见误区
- 要做的:固定分词口径、固定文本长度、记录停用词处理方式、同体裁内比较、把它当筛查信号。
- 别做的:拿它当文本质量总分、跨语言直接比、拿短样本数值推广到整份文档。
- 排查顺序:先看长度是不是差太多,再看分词口径有没有换,再看有没有重复段落,最后才考虑文本本身用词单调。
- 记录习惯:每次算完把口径、长度、样本来源写一行备注,下次才有对照。
最后提醒一句:数值只是线索,不是结论。真正需要横向对照、想知道不同服务在同类文本上的表现时,去站内页面对照当时的数字更省事,也能避开不同口径混着比的坑。具体口径和数据,到 预置资料 与 工具目录 里核对当时的记录。
下一步想把这套自检用在真实文本上,可以先到工具目录找个能出词频统计的入口,固定口径跑一遍自己的提示词或语料,再回头看比值。→常见问题
type-token ratio 和 token 计费里的 token 是一回事吗?
不是。计费里的 token 是模型把文本切分后的处理单位,按这个数量收费;type-token ratio 里的 token 是语言学意义上的「词」,指文本中每一次出现。两者同名但含义和用途都不同,看到这个词先看上下文再说。
比值多少算正常?
没有统一标准,因为它高度依赖文本长度、语言和体裁。务实做法是只跟自己比:同一批文本、同一口径、同一长度区间下看相对高低。要横向找参照,可以到站内的术语与工具页面看相关口径说明,别拿一个绝对数字当门槛。
中文怎么分词才算对?
没有唯一正确答案,只有是否统一。按字切最简单但会淡化词的概念;按词切更贴近直觉,但要依赖分词工具。关键是同一批比较里全用一套口径,并且把口径写下来,换口径就等于换了一把尺子。