这是自然语言处理领域的一个有趣的定律,其实称为规律更合适,因为这是一个经验性的结果,是通过统计数据得出来的近似的规律。
它的定义有些绕口,就是说,在一个自然语言的语料库中,一个词的出现频数和这个词在这个语料中的排名(这个排名是基于出现次数的)成反比。
"Zipf's law states that given some corpus of natural language utterances, the frequency of any word is inversely proportional to its rank in the frequency table. "
举个例子,在Brown Corpus中,‘the’的排名是最高的,第一位,而它的出现次数是69971。排名第二位的词是‘of’,出现的次数为36411。 1/2 约等于 36411 / 69971。
再举个例子,根据M. L. Hanley(1937)中有关James Joyce Ulysses的用词数据,从中抽取了第10、20等序号的词,其序号(r)与在书中的出现次数(f)的乘积分别如下表的III栏。除了最后三个数字出入稍大一点,其他的都在26,000左右。而且,Zipf发现常数C乘以10跟该书的实际总词数260,430很接近,如IV栏所示。
I Rank (r) II Frequency (f) III Product of I and II (r × f = C) IV Theoretical Length of Ulysses (C × 10) 10 2,653 26,530 265,300 20 1,311 26,220 262,200 30 926 27,780 277,800 40 717 28,680 286,800 50 556 26,500 278,000 100 265 26,500 265,000 200 133 26,600 266,000 300 84 25,200 252,000 400 62 24,800 248,000 500 50 25,000 250,000 1,000 26 26,000 260,000 2,000 12 24,000 240,000 3,000 8 24,000 240,000 4,000 6 24,000 240,000 5,000 5 25,000 250,000 10,000 2 20,000 200,000 20,000 1 20,000 200,000 29,899 1 29,899 298,990
参考文献:
C这个公式还说明,一个词的出现次数跟它的等级序号成反比。出现次数越多,序号越小。出现次数最多的排第一,出现次数最少的排最后。这原本没有什么特别
的:序号就是根据出现次数排的。但它们的乘积是常数这一点,却使得分别以词的序号和出现次数为轴线的双对数表(doubly logarithmic
chart)呈现极大的规律性——它几乎是一条45度的直线。
[1] http://en.wikipedia.org/wiki/Zipf%27s_law
[2] http://blog.csdn.net/pennyliang/archive/2006/09/11/1207832.aspx
[3] http://research.hp.com/research/idl/papers/ranking/adamicglottometrics.pdf