返回

词频统计及其在Python和Word中的应用

日志

什么是词频统计

词频统计的定义

词频统计(term frequency, TF)指的是在一份给定的文件里,某一个给定的词语出现的次数^1^。一个词语出现的次数越多,越表明它是该文件的核心词汇,该词语对于快速理解文章具有重要的意义。

词频统计的作用

词频统计有以下几个作用:

  • 提取关键词:通过对文件中所有单词进行词频统计,可以找出出现次数最多的单词,这些单词就是该文件的关键词,可以反映该文件的主题和内容。
  • 分析文本特征:通过对不同类型或不同领域的文件进行词频统计,可以发现它们之间在用词上的异同,从而分析它们各自具有哪些文本特征。
  • 优化文本质量:通过对自己写作或编辑的文件进行词频统计,可以检查是否有过度重复或过度稀缺使用某些单词,从而调整它们在文本中出现的比例,提高文本质量和可读性。

如何用Python进行词频统计

Python是一种广泛使用且功能强大的编程语言,在处理文本数据方面有着丰富且易用的库和工具。要用Python进行词频统计,我们需要以下两个步骤:

  • 使用jieba分词器进行中文分词
  • 使用字典进行词频统计

使用jieba分词器进行中文分词

为什么要用到分词器?因为中文句子是由一个个词语组成,要想统计这些词语在文章中出现的次数,首先第一件事就是要把它们与其它词分割开来,jieba就是干的这么一件事。

jieba分词器的介绍

jieba是一个基于Python的中文分词库,它支持三种模式:

  • 精确模式:试图将句子最精确地切开,适合文本分析;
  • 全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
  • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

jieba分词器的安装和使用

要使用jieba分词器,首先需要安装它。在命令行中输入以下命令即可:

pip install jieba

安装完成后,在Python代码中导入jieba库即可:

import jieba

jieba分词器的三种模式

那么在Python中怎么使用jieba?很简单,只需要调用相应的函数即可。对于上面的三种模式,分别对应的函数为lcut (句子),lcut (句子,cut_all=True),lcut_for_search (句子)。让我们通过实例更直观地看看这三种模式的差别。

假设我们有以下一段话:

sentence = "我来到北京清华大学"

我们可以用以下代码对它进行不同模式的分词:

# 精确模式
words = jieba.lcut(sentence)
print(words)
# 全模式
words = jieba.lcut(sentence, cut_all=True)
print(words)
# 搜索引擎模式
words = jieba.lcut_for_search(sentence)
print(words)

运行结果如下:

['我', '来到', '北京', '清华大学']
['我', '来到', '北京', '清华', '清华大学', '华大', '大学']
['我', '来到', '北京', '清华', '华大', '大学', '清华大学']

通过结果可以看出,精确模式能将词语精确地分开,全模式则将所有可能的词语都切开,搜索引擎模式在精确模式的基础上,再次对长词分割。

使用字典进行词频统计

在拿到jieba分词后的数据后就要对数据进行统计,所谓统计就是看一个词在这篇文章中出现了多少次。

脑子里最直接的想法就是对每一个词用一个变量,只要出现这个词就让它对应的变量自增1,但是现实是不知道究竟会出现多少词,要用多少变量。

再细一想,词与它出现的次数之间不是一一对应的关系嘛,就相当于键与值之间的关系,所以用字典的键来存储出现的词,值存储词出现的次数。

字典的介绍

字典(dictionary)是Python中一种非常常用且灵活的数据结构,它可以存储任意类型的键值对(key-value pair),并且可以通过键来快速访问或修改值。

字典使用花括号{}来表示,每个键值对用冒号:隔开,每个键值对之间用逗号,隔开。例如:

d = {"name": "Tom", "age": 18, "gender": "male"}

这是一个包含三个键值对的字典,键分别是"name", "age", "gender",值分别是"Tom", 18, "male"。

字典的创建和更新

要创建一个空字典,可以直接使用空花括号{}或者dict()函数:

d = {}
d = dict()

要向字典中添加或更新键值对,可以使用赋值语句:

d["name"] = "Tom" # 添加一个新键值对
d["age"] = 19 # 更新一个已有键值对

要从字典中删除一个键值对,可以使用del语句或者pop()方法:

del d["name"] # 删除一个键值对
d.pop("age") # 删除一个键值对,并返回其值

字典的遍历和排序

要遍历字典中的所有键值对,可以使用items()方法:

for key, value in d.items():
    print(key, value)

要遍历字典中的所有键或者所有值,可以使用keys()方法或者values()方法:

for key in d.keys():
    print(key)

for value in d.values():
    print(value)

要按照键或者值对字典进行排序,可以使用sorted()函数,并指定key参数为lambda函数:

# 按照键升序排序
d_sorted = sorted(d.items(), key=lambda x: x[0])
# 按照键降序排序
d_sorted = sorted(d.items(), key=lambda x: x[0], reverse=True)
# 按照值升序排序
d_sorted = sorted(d.items(), key=lambda x: x[1])
# 按照值降序排序
d_sorted = sorted(d.items(), key=lambda x: x[1], reverse=True)

如何用Word进行词频统计

如果你不想用编程语言进行词频统计,而只想用Word这样简单易用的软件进行操作,那么也有办法。你只需要使用Word自带的导航窗格功能即可。