【头歌-Python】8.5 中文词频统计(project) 1~5关

第1关:读文件

任务描述

本关任务:编写一个能读文件到字符串小程序。

一般来说,一篇文章的最重要的内容会反复出现,所以词频可以表示文章的重点,本项目将训练统计文件中的文本词频的能力。

编程要求

根据提示,输入一个正整数n,在右侧编辑器补充代码,将文件中的文本读取为字符串,并输出前n个字符。
二十大报告.txt

测试说明

平台会对你编写的代码进行测试:

  • 测试输入:
15
  • 预期输出:
高举中国特色社会主义伟大旗帜

参考代码

file = '/data/bigfiles/二十大报告.txt'
with open(file, 'r', encoding='utf-8') as f:
    txt = f.read()
	n = int(input())
	print(txt[:n])

第2关:中文切分

任务描述

本关任务:编写一个能读文件到字符串小程序。

一般来说,一篇文章的最重要的内容会反复出现,所以词频可以表示文章的重点,本项目将训练统计文件中的文本词频的能力。

编程要求

根据提示,输入一个正整数n,在右侧编辑器补充代码,将文件中的文本读取为字符串,利用jieba库的精确模式将文本切分为字符串,并输出前n个字符串的列表。
二十大报告.txt

测试说明

平台会对你编写的代码进行测试:

  • 测试输入:
15
  • 预期输出:
['高举', '中国', '特色', '社会主义', '伟大旗帜', '\n', '\n', '为', '全面', '建设', '社会主义', '现代化', '国家', '而', '团结奋斗']

参考代码

import jieba
jieba.setLogLevel(jieba.logging.INFO)

file = '/data/bigfiles/二十大报告.txt'
with open(file, 'r', encoding='utf-8') as f:
    txt = f.read()
	n = int(input())
	print(list(jieba.cut(txt))[:n])  # 精确模式

第3关:统计词频

任务描述

本关任务:编写一个能统计词频小程序。

一般来说,一篇文章的最重要的内容会反复出现,所以词频可以表示文章的重点,本项目将训练统计文件中的文本词频的能力。

编程要求

根据提示,输入一个正整数n,在右侧编辑器补充代码,将文件中的文本读取为字符串,利用jieba库的精确模式将文本切分为字符串,统计每个字符串出现的频率,存储为字典类型,输出词频最高的元素为二元组的列表前n项。
二十大报告.txt

测试说明

平台会对你编写的代码进行测试:

  • 测试输入:
10
  • 预期输出:
[(',', 1360), ('、', 847), ('。', 610), ('的', 563), ('和', 351), ('\n', 341), ('\u3000', 322), ('发展', 218), ('坚持', 170), ('建设', 151)]

参考代码

import jieba
jieba.setLogLevel(jieba.logging.INFO)

file = '/data/bigfiles/二十大报告.txt'
with open(file, 'r', encoding='utf-8') as f:
    txt = f.read()
	n = int(input())
	dic = {}
	for c in jieba.cut(txt):
	    dic[c] = dic.get(c, 0)+1   # 统计词频
	dic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
	print(list(dic[:n]))

第4关:去除单字词

任务描述

本关任务:编写一个能统计词频小程序。

一般来说,一篇文章的最重要的内容会反复出现,所以词频可以表示文章的重点,本项目将训练统计文件中的文本词频的能力。

编程要求

根据提示,输入一个正整数n,在右侧编辑器补充代码,将文件中的文本读取为字符串,利用jieba库的精确模式将文本切分为字符串,将无实质意义的单字符元素去掉,统计长度大于1的每个字符串出现的频率,存储为字典类型,输出词频最高的元素为二元组的列表前n项。
二十大报告.txt

测试说明

平台会对你编写的代码进行测试:

  • 测试输入:
10
  • 预期输出:
[('发展', 218), ('坚持', 170), ('建设', 151), ('人民', 134), ('中国', 124), ('社会主义', 116), ('国家', 110), ('体系', 109), ('推进', 107), ('全面', 102)]

参考代码

import jieba
jieba.setLogLevel(jieba.logging.INFO)

file = '/data/bigfiles/二十大报告.txt'
with open(file, 'r', encoding='utf-8') as f:
    txt = f.read()
	n = int(input())
	dic = {}
	for c in jieba.cut(txt):
	    if len(c)>1:
	        dic[c] = dic.get(c, 0)+1
	dic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
	print(list(dic[:n]))

第5关:去除停用词

任务描述

本关任务:编写一个能统计词频小程序。

一般来说,一篇文章的最重要的内容会反复出现,所以词频可以表示文章的重点,本项目将训练统计文件中的文本词频的能力。
stopwordsshz.txt

文本“stopwordsshz.txt”称为停用词文件,其中存储了无意义的虚词,这些词在统计时可以忽略掉。

编程要求

根据提示,输入一个正整数n,在右侧编辑器补充代码,将文件中的文本读取为字符串,利用jieba库的精确模式将文本切分为字符串,将无实质意义的单字符元素和停用词文本中存在的元素去掉,统计长度大于1的每个字符串出现的频率,存储为字典类型,输出词频最高的元素为二元组的列表前n项。
二十大报告.txt

测试说明

平台会对你编写的代码进行测试:

  • 测试输入:
10
  • 预期输出:
[('发展', 218), ('建设', 151), ('中国', 124), ('国家', 110), ('体系', 109), ('推进', 107), ('现代化', 86), ('制度', 76), ('完善', 73), ('推动', 61)]

参考代码

import jieba
jieba.setLogLevel(jieba.logging.INFO)

file = '/data/bigfiles/二十大报告.txt'
with open(file, 'r', encoding='utf-8') as f:
    txt = f.read()
with open('/data/bigfiles/stopwordsshz.txt','r', encoding='utf-8') as f:
    stop = f.read().split()
n = int(input())
dic = {}
for c in jieba.cut(txt):
    if len(c)>1 and c not in stop:     # 去除停用词
        dic[c] = dic.get(c, 0)+1
dic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
print(list(dic[:n]))

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐