当前位置:   article > 正文

【头歌-Python】8.3 政府工作报告数据提取(project)-第5关_第5关:提取报告中的高频词

第5关:提取报告中的高频词

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

第5关:提取报告中的高频词

任务描述

附件中为2023年政府工作报告,本关要求将报告读取为一个字符串,再利用jieba对中文进行分词,略过停用词后,统计报告中出现的前n个高频词。

编程要求

输入一个正整数n,将字符串切分为中文词语后,略过停用词(“src/stopword.txt”)和单字词,统计每个长度大于1的词出现的频度,词频从高到低输出前n个高频词语。
为实现自动评测,本关需要在代码前加以下三行语句,用于导入分词库和关闭jieba 日志输出。

import jieba  # jieba是中文分词库,将中文句子切分成词。
import logging  # 导入模块,用于设置日志级别
jieba.setLogLevel(logging.INFO)    # 关闭jieba日志输出
  • 1
  • 2
  • 3

测试说明

平台会对你编写的代码进行测试,按词频由高到低输出前n个高频词,词频相同时,按出现次序统计。
输出格式为(参考示例):
词语左对齐宽度4;数量右对齐宽度4

格式示例:

  • 输入1:
10
  • 1
  • 输出1:
发展   136
推进    66
建设    60
经济    58
支持    51
实施    46
推动    44
政策    38
政府    36
工作    35
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

解题思路

  1. 读取数据文件和停用词文件
  2. 使用jieba精确模式对数据文件进行分词(其它模式无法通过测试)
  3. 列表推导式筛选非停用词以及长度大于2的词组
  4. 使用字典统计词频,其中字典的键为词组、值为词频
  5. 使用sorted对字典排序
  6. 输出前n个最高词频的词组与对应词频即可

参考代码

import jieba  # jieba是中文分词库,将中文句子切分成词。
import logging  # 导入模块,用于设置日志级别
jieba.setLogLevel(logging.INFO)    # 关闭jieba日志输出

with open('src/政府工作报告.txt', 'r', encoding='utf-8') as f:
    s = f.read()
with open('src/stopword.txt', 'r', encoding='utf-8') as f:
    stop = f.read().split()  # 读停用词表
s = jieba.lcut(s)            # 精确模式分词
s = [c for c in s if c not in stop and len(c)>1]
dic = {}
for c in s:                  # 统计词频
    dic[c] = dic.get(c, 0)+1

n = int(input())
# 排序,高到低
dic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
for k,v in dic[:n]:
    print(f'{k:<4}{v:>4}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

有问题欢迎留言~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/811805
推荐阅读
相关标签
  

闽ICP备14008679号