使用python进行词频分析

2022-09-24 09:10:22 浏览数 (3)

     很早之前就接触过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

1 人点赞