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


    参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301

    第1关:读文件

    任务描述

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

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

    编程要求

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

    测试说明

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

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

    参考代码

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

    第2关:中文切分

    任务描述

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

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

    编程要求

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

    测试说明

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

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

    参考代码

    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])  # 精确模式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第3关:统计词频

    任务描述

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

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

    编程要求

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

    测试说明

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

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

    参考代码

    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]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    第4关:去除单字词

    任务描述

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

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

    编程要求

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

    测试说明

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

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

    参考代码

    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]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    第5关:去除停用词

    任务描述

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

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

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

    编程要求

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

    测试说明

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

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

    参考代码

    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]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    抓包神器之Charles(绕过代理屏蔽)以及证书校验绕过
    grpc的metadata---拦截器--验证器--状态码-yapi安装
    x86游戏逆向之实战游戏线程发包与普通发包的逆向
    idea compile项目正常,启动项目的时候build失败,报“找不到符号”等问题
    【天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch
    【Hive】内部表(Managed Table)和外部表(External Table)相关知识点
    DVWA安装教程(懂你的不懂·详细)
    Ubuntu22.04源码安装ROS-noetic(ROS1非ROS2),编译运行VINS-MONO
    Dart(3)-常量
    fastjson(1.2.24-rce)
  • 原文地址:https://blog.csdn.net/qq_45801887/article/details/131153224