返回教程列表
文本分析基础教程计量语言学Heaps定律Zipf定律

词汇增长曲线分析完整教程:从 Heaps 定律的 β 到 Zipf 分布的 s,再到双对数拟合与 R²

一位作家早年和晚年的作品,用词是越写越开放还是越写越收敛?这篇教程说明 TATOOLS 的【词汇增长曲线分析】怎样逐段累计词数和不同词数,用 Heaps 定律拟合用词开放度 β,再把词按频次排队,用 Zipf 定律拟合分布陡峭度 s。文中用三个采样点手算 β = 0.50 和 R² ≈ 0.999,用前四名的词频反推 s,并讲清拟合时为什么保留功能词,按词与按字切分为什么不能混比,多份文件怎样横向对比。最后讲报告的阅读顺序和论文方法部分的写法。

作者:TATOOLS 研究团队|更新于 2026-09-24|4125 个字符|约 14 分钟读完
vocab-growth
立即使用

一位作家早年的几部短篇和晚年的一部长篇放在一起,想比较两个时期的用词是越写越开放,还是渐渐收敛到一套熟悉的词表里。算不同的词占总词数的比例,长篇几乎一定吃亏,文章越长,常用词重复得越多,新词出现得越慢。

计量语言学用两条经验规律描述这种现象。Heaps 定律描述词表怎样随文本变长而增长,Zipf 定律描述词频怎样随排名递减。两条规律各有一个参数,β 衡量新词冒出来的速度,s 衡量少数高频词占主导的程度,它们刻画的是整条曲线的形状,受文本长短的影响比简单比例小得多。

在 TATOOLS 的【词汇增长曲线分析】里【上传文档】,TATOOLS 沿文本逐段累计词数和不同词数,画出词汇增长曲线并拟合 β,再把词按频次排队拟合 s,两项拟合都附 R²,β 和 s 各配一句定性说明,多份文件可以横向对比。

这篇教程先讲词汇增长曲线怎样画,再用小例子手算 β、s 和 R²,讲清拟合时为什么保留停用词,最后讲报告的读法和论文里的写法。

01

词汇增长曲线

从文本开头往后读,每读一个词,累计词数 N 加 1;遇到前面没出现过的词,不同词数 V 也加 1。把每个时刻的 N 和 V 画成一条曲线,就是词汇增长曲线。

· · ·

N:累计读到的词数(形符数)

V:累计出现过的不同词数(类符数)

曲线开头几乎是一条斜率为 1 的直线,每个词都是新词;越往后越平,常用词反复出现,新词越来越少。不同的文本,曲线弯下来的快慢不一样,这正是要比较的东西。

TATOOLS 每隔固定的词数记一个点,工具页的【Heaps(新词随文本变长增加的规律)曲线采样步长】默认每 100 个词记一次,文本末尾再补一个点。报告的【词汇增长曲线】可以在线性坐标和双对数坐标之间切换。

02

Heaps 定律与 β

Herdan 1960 年和 Heaps 1978 年先后发现,V 和 N 之间近似是幂函数关系。

· · ·

V = K × N^β

K:比例系数;β:增长指数,通常在 0 到 1 之间

β 是用词开放度。β 越接近 1,文本越是不断引入新词;β 越小,用词越收敛在一套固定的词表里。β = 0.5 时,文本长到原来的 4 倍,词表只长到原来的 2 倍。

两边取对数,幂函数变成一条直线,斜率就是 β。

· · ·

log V = log K + β × log N

TATOOLS 在双对数坐标下用最小二乘法拟合这条直线。手算一个例子,三个采样点(示例)。

· · ·

N V log₁₀N log₁₀V

100 50 2 1.699

1000 150 3 2.176

10000 500 4 2.699

β = Σ(x − x̄)(y − ȳ) ÷ Σ(x − x̄)²

  = (0.492 + 0 + 0.508) ÷ 2 = 0.50

K = 10^(2.191 − 0.50 × 3) ≈ 4.9

文本从 100 词长到 10000 词,长了 100 倍,词表从 50 长到 500,只长了 10 倍。

β 和不同词占比的关系也能看清。不同词占比等于 V ÷ N,也就是 K × N^(β − 1),β 小于 1 时,文本越长,这个比例越低,这个例子从 0.5 降到 0.05。β 描述的是整条曲线增长的快慢,长短不同的文本,β 比不同词占比更适合拿来比较。

报告的【当前文件指标】把 β 叫作用词开放度,附一句定性说明,下方的位置条把 β 标在极封闭到极开放的刻度上。

03

Zipf 定律与 s

把全部不同的词按出现次数从多到少排队,第一名的排名 r 是 1,第二名是 2,依此类推。Zipf 1949 年总结出,一个词的频次和它的排名近似成反比。

· · ·

f(r) = C × r^(−s)

log f = log C − s × log r

f:频次;r:排名;s:分布陡峭度

在自然语言里,s 常常接近 1,排第二的词出现次数大约是第一名的一半,排第三的约三分之一。

排名 s = 1 时的频次 s = 1.2 时的频次
1 1000 1000
2 500 435
3 333 268
4 250 189

s 越大,曲线越陡,少数几个高频词占的份额越大;s 越小,分布越平,低频词构成的长尾越重。从第一名和第四名就能反推 s。

· · ·

s = log(f₁ ÷ f₄) ÷ log 4

s = 1 时 log(1000 ÷ 250) ÷ log 4 = 1

s = 1.2 时 log(1000 ÷ 189) ÷ log 4 ≈ 1.20

TATOOLS 同样在双对数坐标下用最小二乘法拟合,只用排名最前的 N 个词,工具页的【Zipf(词频随排名递减的规律)拟合用前 N 个高频词】默认 5000 个。排名靠后的词大多只出现一两次,几千个词挤在同一个频次上,在双对数图上是一段段水平的台阶,把它们全部放进来会把拟合拉偏。报告的【Zipf(词频随排名递减的规律)双对数图】画出每个词的排名和频次,虚线是拟合直线,斜率就是 −s。

04

R²:拟合得好不好

两条规律都是在双对数坐标下拟合直线,R² 说明数据点离这条直线有多近。

· · ·

R² = 1 − 残差平方和 ÷ 总平方和

残差:每个点的实际值和直线预测值之差

接着 Heaps 的例子,拟合直线在三个点上的预测值和实际值只差 0.008、0.015 和 0.008,R² ≈ 0.999,三个点几乎落在一条直线上。

R² 越接近 1,β 或 s 越能概括这份文本的规律。R² 偏低,多半是文本太短,或者一份文件里混杂了体裁差别很大的内容,前后半段的用词习惯不一样。TATOOLS 在【当前文件指标】里把两项 R² 中较低的一个标为拟合可信度,【专业指标说明】里写明了两项拟合的公式和常见区间。

05

拟合为什么保留停用词

的和是这类功能词在几乎每篇文本里都排在前面。TATOOLS 的停用词设置和词性过滤只作用于报告里的高频词表,β 和 s 始终用包含全部词的完整词流计算。

两条规律描述的是自然语言的整体统计性质,功能词本来就是它的一部分。拟合前删掉停用词,N 会大幅减少,V 却几乎不变,β 会被抬高;Zipf 分布最稳定的头部被砍掉,s 会明显变小。这样算出的 β 和 s 就没法和其他研究对照。

报告的【当前文件 Top 高频词】列出频次最高的 50 个词,【隐藏停用词】默认打开,表里只显示实词,原始排名一栏写明它在完整排名里排第几;表头写明前 10 名的词占全部词频的比例,这个比例按完整排名计算。

06

切分单位与多份文件

中文按词切分和按字切分,得到的 β 和 s 差别很大,只有同一种切分单位下的结果才能相互比较。【切分单位】默认按词,按字适合古汉语和字本位研究;按词切分时可以打开【自动补充词典】,TATOOLS 先把分词词典不认识的新词找出来加进词典。【词形合并】把同一个词的不同写法并成一个再计数,并入以后的写法算作同一个类符。

上传多份文件时,TATOOLS 默认每份文件各画一条曲线、各拟合一组参数,报告的【多文件横向对比】列出每份文件的词数、不同词数和不同词占比,β 和 s 连同两项 R² 也并排列出,【文件选择】切换当前查看的文件。打开【合并所有文件再拟合】,所有文件按上传顺序拼成一条词流,另外给出一组整体参数。

07

工具页上的设置一览

设置 选项或范围 默认 影响什么
文本语言 自动检测、中文、英文 自动检测 怎样切词
切分单位 按词、按字 按词 以词还是以字为单位统计
自动补充词典 开或关 新词是否先加进分词词典
Heaps 曲线采样步长 20 到 2000 个词 100 增长曲线每隔多少词记一点
Zipf 拟合用前 N 个高频词 100 到 20000 5000 参与 s 拟合的词数
合并所有文件再拟合 开或关 是否另给一组整体参数
使用系统停用词 开或关 高频词表里是否隐藏功能词
词形合并 一行一组写法 哪些写法算作同一个词

停用词和词性过滤只影响高频词表的展示,TATOOLS 的全部拟合结果都不受它们影响。

08

报告怎么读

区块 先看什么
这份结果说明了什么 β、s 和拟合情况的一句话结论
当前文件指标 用词开放度、分布陡峭度、词汇丰富度和拟合可信度
词汇增长曲线 曲线弯下来的快慢,双对数下是否接近直线
Zipf 双对数图 点是否贴着虚线,头部和尾部偏离多少
当前文件 Top 高频词 最常用的词是什么,前 10 名占多少
多文件横向对比 各文件的 β 和 s 谁高谁低

读的顺序是先看拟合可信度,R² 足够高,β 和 s 才有解释的意义;再看 β 和 s 的数值和位置条;然后在两张图上看数据点贴不贴拟合线;最后用高频词表看这份文本最常用哪些词。

TATOOLS 下载的结果里,每份文件有两张表,一张是增长曲线的全部采样点,一张是完整的词频排名表,可以拿去自己作图或做进一步的统计。

09

把结果写进论文

下面是一段常见的写法示例,方括号里换成自己的内容。

本研究使用 TATOOLS 的词汇增长曲线分析,以词为单位对 [语料] 进行统计,每 [步长] 个词记录一次累计词数与不同词数,在双对数坐标下以最小二乘法拟合 Heaps 定律(V = K · N^β),得到 β = [值](R² = [值]);取频次最高的 [N] 个词拟合 Zipf 分布,得到 s = [值](R² = [值])。拟合基于包含功能词的完整词流。

论文里比较几份语料时,写明切分单位和拟合用的词数,并列出每份语料的词数和不同词数,β 和 s 的比较才站得住。

10

小结

词汇增长曲线记录读到 N 个词时出现了多少个不同的词,Heaps 定律用 V = K × N^β 描述它,β 是用词开放度。

Zipf 定律用 f = C × r^(−s) 描述词频随排名递减,s 是分布陡峭度,自然语言里常接近 1。

两条规律都在双对数坐标下用最小二乘法拟合,R² 说明数据点离拟合直线有多近。

拟合保留功能词,停用词只影响高频词表的展示,这样 β 和 s 才能和其他研究对照。

TATOOLS 每份文件各给一组 β、s 和 R²,也可以合并拟合,结果能下载成表。

想用九项指标比较几份文本的用词丰富度,可以用 TATOOLS 的【词汇多样性分析】;想找出一份语料相对另一份明显多用的词,用【语料对比关键词分析】。

11

资料来源

Zipf:Human Behavior and the Principle of Least Effort,Addison-Wesley,1949

Herdan:Type-Token Mathematics,Mouton,1960

Heaps:Information Retrieval,Computational and Theoretical Aspects,Academic Press,1978

Baayen:Word Frequency Distributions,Kluwer,2001

Piantadosi:Zipf’s Word Frequency Law in Natural Language,A Critical Review and Future Directions,Psychonomic Bulletin & Review,第 21 卷第 5 期,2014


END