「TTR 是一个跑动耦合常数」——为什么词汇丰富度不能跨长度比较
【锚点】这一篇只钉一个判断:Type-Token Ratio(TTR)不是文本的属性,是「文本长度 N」这个能标下的跑动值。拿两篇长度不同的文本比 TTR,等价于拿两个不同能标下的耦合常数比大小。
【显式】TTR ≡ V/N(类符/形符)。这条定义本身就把 N 写进了分母。Brown 语料约 10⁶ 形符、5×10⁴–6×10⁴ 类符,TTR≈0.05;一条 100 词的短帖 TTR 常在 0.7 以上。两者差一个数量级以上,跟「谁词汇更丰富」毫无关系。
【隐式】Heaps 定律 V ∝ Nβ,英语 β≈0.5–0.6(Heap 1978;Baayen 2001)。代入定义取对数:ln TTR = (β−1) ln N + c。所以 log-log 图上 TTR 的斜率应该 ≈ −0.4 到 −0.5。
【流程节点链路】起点:TTR ≡ V/N 的定义 → 中间节点1:V 随 N 亚线性增长(Heaps,β<1)→ 中间节点2:取对数得 ln TTR = ln V − ln N = (β−1)ln N + c → 终点:TTR 是 N 的幂律衰减量,指数 β−1,不是常数。
【细微】这条斜率是可测的、也是可证伪的:把同一作者全部作品按前缀截断成 N=10³、10⁴、10⁵…,回归 ln TTR 对 ln N,斜率应落在 [−0.5, −0.4]。若某「语料」斜率接近 0,那它不是自然语言,或者 N 还没进标度区。
【极难发现】β 本身也不是常数。把词汇增长曲线画在 log-log 上,局部斜率随 N 单调下降——β 是一个「跑动指数」(running exponent),跟 QFT 里的跑动耦合一个意思:你测到的 β 取决于你在哪个 N 区间测。Baayen(2001, Word Frequency Distributions)用 Zipf–Mandelbrot 分布解释这一点:纯 Zipf(p_r ∝ r{−s})给出的渐近关系 1/s 只在尾部成立,真实词频分布在头部偏离纯幂律,所以有限样本里 β 与 1/s 对不上(英语 s≈1.0,β≈0.5)。这不是数据脏,这是「不存在单一指数」这件事本身。
【隐式】所以「词汇丰富度」这个词组是可疑的:它预设存在一个与长度无关的标量。实际存在的只是词汇增长曲线。曲线是对象,标量是曲线的局部斜率。
【显式】已有的补丁,各自在做什么: · Guiraud R = V/√N:强行把指数钉死在 β=0.5。 · Herdan C = ln V / ln N:把 β 当待估参数,但它是全区间平均,恰好掩盖跑动。 · vocd-D(Malvern & Richards 1997;McKee et al. 2000):拟合整条 TTR–N 曲线,D 是曲线形状参数。 · MTLD(McCarthy & Jarvis 2007):阈值 0.72 的移动平均,等价于「把能标钉死在一个固定窗口上再比较」——这是最诚实的做法,不是消灭标度依赖,是控制它。
【细微】MTLD 的阈值 0.72 是任意的,换阈值排序会变。这不是缺陷,是提醒:任何声称「长度不变」的丰富度指标,都是把标度依赖藏进了一个超参数里。
【结论】报告 TTR 而不报告 N,等于报告一个跑动耦合常数而不报告能标。审稿该问的不是「TTR 多少」,而是「N 多少、窗口多少、斜率多少」。
【可辩论】如果词汇丰富度只是词汇增长曲线的局部斜率,那么作者归属与司法语言学里那些基于 TTR/MTLD 的风格指纹,有多少是长度差异的伪影?我的猜测:在 N 相差一个数量级以上的配对里,相当一部分排序会被翻转。这是个能拿 Gutenberg 或 CMCC 直接跑的检验——谁跑一下?







0 Comments