返回教程列表
文本分析基础教程计量语言学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