很早之前就接触过python,也玩过python许多有趣的东西,比如用pygame做一个飞机大战的游戏啊、用turtle模块简单绘图啊、使用python链接mysql做crud、用python运行R语言脚本、简单爬虫等等,不过现在应该都快忘了。^_^
使用python进行中文词频分析
首先什么是“词频分析”? 词频分析,就是对某一或某些给定的词语在某文件中出现的次数进行统计分析。 我们需要使用python的jieba库。 jieba库:优秀的中文分词组件。支持繁体分词、自定义词典。可以对文档进行三种模式的分词: 1、精确模式:试图将句子最精确地切开,适合文本分析; 2、全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义; 3、搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
jieba库中文分词原理 1、利用一个中文词库,确定汉字之间的关联概率。 2、汉字间概率大的组成词组,形成分词结果。 3、除了分词,用户还可以添加自定义词组。
jieba库安装
打开cmd,键入:pip install jieba
待安装成功即可。
pip安装外库的时候可能会安装失败:是因为使用的是国外镜像 解决方法:使用国内镜像 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba 的确这个样子就可以用了 使用pip也要用python进行安装(本文章设计的所有资料末尾会给出) 解压pip文件包后 在pip目录下cmd,输入命令"python setup.py install" jieba库的简单使用:点击这里
分析刘慈欣小说《三体》(一二三部合集)出现次数最多的词语。
这个案例中分析出了使用数量前三十的词语 如果直接分析的话,会存在非常多的垃圾数据。因为把文档中的标点、空格、没有意义的字、词语全部进行了统计。这并不是我们想要的数据。这个时候我们需要使用停用词表。 停用词表 停用词:停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。 停用词表便是存储了这些停用词的文件。在网上下载停用词表,命名stopwords.txt。(在文末资源中小说和词表都会给出) 统计代码如下
代码语言:javascript复制import jieba
txt = open("santi.txt", encoding="utf-8").read()
#加载停用词表
stopwords = [line.strip() for line in open("stopwords.txt",encoding="utf-8").readlines()]
words = jieba.lcut(txt)
counts = {}
for word in words:
#不在停用词表中
if word not in stopwords:
#不统计字数为一的词
if len(word) == 1:
continue
else:
counts[word] = counts.get(word,0) 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(30):
word, count = items[i]
print ("{:<10}{:>7}".format(word, count))
结果如下
使用python进行英文词频统计
英文单词词频统计比较简单,就是根据空格来对文本进行切割,然后统计其单词出现的数量。 代码如下
代码语言:javascript复制import string
def stats_words(filename):
"""统计文章中单词的频数"""
# 读取文章中的内容
with open(filename,encoding="utf-8") as fbj:
contents = fbj.read()
contents = contents.lower()
# 解析成单词列表
words = contents.split()
# 去除文章中的标点符号
words = [word.strip(string.punctuation) for word in words]
# 去除重复的单词
words_set = set(words)
# 用于存放单词和频数的字典
words_dir = {}
for key in words_set:
words_dir[key] = 0
# 开始统计单词的频数
for word in words:
if word in words_set:
words_dir[word] = 1
return words_dir
file_name = "test.txt"
# 文章中的标点符号要去除
words_dir = stats_words(file_name)
words_dir = sorted(words_dir.items(), key=lambda x: x[1], reverse=True)
print(words_dir)
结果如下
资源和代码下载
点击下载 链接:https://pan.baidu.com/s/17RQ72nJOyRsrcVaKtWFKyg 提取码:4au3