背景

齐夫定律(Zipf’s law,/ˈzɪf/)是由哈佛大学的语言学家乔治·金斯利·齐夫于 1949 年发表的实验定律。它可以表述为:在自然语言的语料库里,一个单词出现的频率与它在频率表里的排名成反比。[1]

所以,频率最高的单词出现的频率大约是出现频率第二位的单词的 2 倍,而出现频率第二位的单词则是出现频率第四位的单词的 2 倍,这个定律被作为任何与幂定律概率分布有关的事物的参考。类似 80/20 原则,即 20% 的内容会占有 80% 的访问量

f(k;s,N)=Cksf(k;s, N)=\frac{C}{k^{s}}

经过对数变换即可得到

log f=log Cs log klog~ f = log ~C - s~log~k

因此齐夫定律很容易用点阵图观察,坐标分别为排名和频率的对数(log),比如在布朗语料库中 “the” 用上述表述可以描述为x=log(1),y=log69971x = log(1), y = log(69971)的点。如果所有的点接近一条直线,那么它就遵循齐夫定律。

zipf law

形式化地,可以预测NN 个数据点中排名为kk 的元素出现频率,计算公式如下

f(k;s,N)=1/ksn=1N(1/ns)f(k ; s, N)=\frac{1 / k^{s}}{\sum_{n=1}^{N}\left(1 / n^{s}\right)}

齐夫分布的累积分布函数为

image-20220422103301641

应用场景在于可以假设一组数符合齐夫分布且第一排名频率未知的情况下:

  • 首先根据最小二乘法拟合对数的线性函数,则可估计ss 值;
最小二乘法
  • 根据预测函数则可估计排名第一的元素频率。


  1. https://en.wikipedia.org/wiki/Zipf's_law ↩︎