自然语言处理--齐普夫定律(布朗语料库Brown Corpus)

科普一下齐普夫定律:
齐普夫定律是一个看似普遍的规则,它决定着大多数事物的计数结果。齐普夫定律(Zipf’s Law)指出,在给定的自然语言语料库中,任何一个词的频率与它在频率表中的排名成反比。

用布朗语料库来说明这一点:

from nltk.corpus import brown
from collections import Counter

# words()是 NLTK corpus 对象内置的一个方
# 法,它以字符串序列的方式返回分词后的语料库
print(brown.words()[:10])

# 词性标注
# NLTK的corpus reader提供一个唯一的读取标记语料库的接口 tagged_words ()
print(brown.tagged_words()[:10])

puncs = set((',', '.', '--', '-', '!', '?', ':', ';', '``', "''", '(', ')', '[', ']'))
word_list = (x.lower() for x in brown.words() if x not in puncs)
token_counts = Counter(word_list)
'''
布朗语料库中的词频符合齐普夫预测的对数线性关系
如果把语料库的词按照出现次数按降序排列,我们会发现:对一个足够大的样本,出
现次数排名第一的词在语料库中的出现次数是排名第二的词的两倍,是排名第四的词的 4 倍。因此,
给定一个大型语料库,可以用上述数字来粗略统计给定词出现在该语料库的任何给定文档中的可能性。
'''
print(token_counts.most_common(20))

备注:
布朗语料库是布朗大学在 1961 年创建的、第一个百万单词的英语电子语料库。该语料库包含来自 500 个不同数据源的文本,这些数据源已按类型分类,如新闻、社论等。

猜你喜欢

转载自blog.csdn.net/fgg1234567890/article/details/111827371
今日推荐