什么是词频统计
在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次数。一个词语出现的次数越多,越表明是该文件的核心词汇,该词语对于快速理解文章具有重要的意义。词频统计是自然语言处理技术中最基础的技术之一,在词频统计中,如何区分词是很关键的一环。
基于Jieba的词频统计
1、分词器
在前面的学习,我们已经介绍过在 Jieba 模块中支持三种分词模式,它们分别为:
- 精确模式:试图将句子最精确地切开,适合文本分析;
- 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
在进行词频统计之间,我们可以通过 Jieba 模块对文本进行分词,将一个句子中的各个词语分开,从而便于我们对词语进行统计。
import jieba
text = input()
words1 = jieba.cut(text, cut_all=True) # 全模式分词
words2 = jieba.cut(text, cut_all=False) # 精确模式分词
words3 = jieba.lcut_for_search(text) # 搜索引擎模式分词
2、分词后的统计
在拿到 Jieba 分词后的数据后就要对数据进行统计,所谓统计就是看一个词在这篇文章中出现了多少次。我们可以通过使用字典的键来存储出现的词,值存储词出现的次数来实现。
data = {} # 字典
for chara in words:
if len(chara) < 2:
continue
if chara in data:
data[chara] += 1 # 再次出现则加 1
else:
data[chara] = 1 # 首次出现则为 1
测试说明
demo
import jieba
text= input()
words = jieba.lcut(text) # 搜索引擎模式分词
data={} # 词典
# 任务:完成基于 Jieba 模块的词频统计
for chara in words:
if len(chara) < 2:
continue
if chara in data:
data[chara] += 1 # 再次出现则加 1
else:
data[chara] = 1 # 首次出现则为 1
data = sorted(data.items(), key=lambda x: x[1], reverse=True) # 排序
print(data[:3],end="")