【Python机器学习】NLP词中的数学——齐普夫定律

齐普夫定律指出:在给定的自然语言语料库中,任何一个词的频率与它在频率表中的排名成反比。

具体的说,这里的反比例关系指的是这样一种情况:排序列表中某一项的出现频率与其在排序列表中的排名成反比。例如,排序列表中的第一项出现的频率是第二项的2倍,是第三项的3倍。对于任何语料库或文档,我们可以快速做的一件事就是:绘制词的使用频率与它们的频率排名之间的关系。

齐普夫定律适用于很多东西的计数。比如某国城市人口与该人口排名之间的关系:

文字当然也满足相似的规律:

python 复制代码
import nltk
nltk.download('brown')
from nltk.corpus import brown

print(brown.words()[:10])
print(brown.tagged_words()[:5])
print(len(brown.words()))

这是一个超过100万词条的文档,下面看一下其中的信息:

python 复制代码
from collections import Counter
puncs=set((',','.','--','-','!','?',';',':','``',"''",'(',')','[',']'))
word_list=(x.lower() for x in brown.words() if x not in puncs)
token_counts=Counter(word_list)
print(token_counts.most_common(20))

上面语料库中的词频符合齐普夫预测的对数线性关系。"the"出现的频率大约是"of"的2倍、"and"的3倍。

简而言之,如果把语料库的词按照出现次数按降序排列,我们会发现:对一个足够大的样本,出现次数排名第一的词在语料库中出现次数是排名第二的词的两倍,是排名第四的词的四倍。因此,给定一个大型语料库,可以用上述数字来粗略统计给定词出现在该语料库的任何给定文档中的可能性。

相关推荐
消失的旧时光-19437 分钟前
C++ 多态核心三件套:虚函数、纯虚函数、虚析构函数(面试 + 工程完全指南)
开发语言·c++·面试·虚函数·纯虚函数·虚析构函数
Dylan~~~9 分钟前
AI Coding工具记忆功能深度解析:让AI真正“记住“你的项目
人工智能
智算菩萨13 分钟前
【How Far Are We From AGI】5 AGI的“道德罗盘“——价值对齐的技术路径与伦理边界
论文阅读·人工智能·深度学习·ai·接口·agi·对齐技术
lisw0515 分钟前
用于实时数据处理的边缘计算!
人工智能·机器学习·边缘计算
全栈开发圈16 分钟前
干货分享|R语言聚类分析2
人工智能·机器学习·r语言
Sakuraba Ema20 分钟前
从零理解 MoE(Mixture of Experts)混合专家:原理、数学、稀疏性、专家数量影响与手写 PyTorch 实现
人工智能·pytorch·python·深度学习·数学·llm·latex
青春易逝丶24 分钟前
策略模式
java·开发语言·策略模式
freexyn26 分钟前
Matlab入门自学七十四:坐标系转换,直角坐标、极坐标和球坐标的转换
开发语言·算法·matlab
嫂子的姐夫27 分钟前
041-全扣补环境:同花顺
爬虫·python·js逆向·逆向
shangjian00729 分钟前
AI-大语言模型-模型训练-数据集1-总述
人工智能·机器学习·语言模型