zipf定律与相似性度量
Zipf定律指出,在文本中,标识符出现的频率与其在排序列表中的排名或位置成反比。这个定律描述了标识符在文本中是如何分布的,即一些标志符出现的频次很大,另一些出现的频次较低,还有一些基本不出现。它是自然语言处理中,非常重要的一个定律,它的数学语言可以这样描述:在给定的语料库里,对于任意的一个term,它的频度f与这个频度在语料库中的排名r的乘积近似一个常数。即f正比于1/r。以英语语料库为例,其他语料库一样遵循zipf定律,表明在英语单词中,只有极少数的词被经常使用,而绝大多数词很少被使用。事实上,它是一个很普遍的规律,比如网站的访问者数量、每个国家公司的数量都近似服从zipf定律。下面用nltk来获取基于zipf定律的双对数图,代码如下:
#使用nltk获取基于zipf定律的双对数图
import nltk
from nltk.corpus import brown #使用布朗语料库
from nltk.probability import FreqDist #用来记录语料库中词频的分布
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')
def zipf_log_log():
fd=FreqDist() #FreqDist()获取语料库中的词的频率分布
for text in brown.fileids(): #fileids()为语料库中的文件
for word in brown.words(text): #words()包含了语料库中所有的单词
fd[word]+=