Python二级--摘要分词

摘要分词-1


题目一:
概述:

'''
考生文件来下.存在2个Python源文件和1个文本文件,其中,2个Python源文件对应2个问题,
文本文件“data.txt”中包含一篇从互联网上下载的关于“德国工具4.0战略规划实施建议摘要”的文章。
请分别补充2个Python源文件,完成以下功能。
问题1:文件内容清洗。要求:在文件PY301-1.py中补充代码,对文件data.txt的内容进行清理,
去掉中文标点符号,只保留中文、英文、数字、英文标点符号等字符,将结果输出到文件c1ean.txt中。
示例如下:
德国工业4.0战略计划实施建议摘编机械工业信息研究院战略与规化研究所一德国实施工业…(略)
'''

思路:

  1. jieba库导入与文件操作
# 导入jieba(中文分词)库
import jieba
fr = open('data.txt', encoding='utf-8')
fw = open('clean.txt', mode='w', encoding='utf-8')
  1. 读取文件并替换中文标点符号
line = txt = fr.read()

for i in '()!,。?、()¥……【】\n ':
    # print(i)
    if i in txt:
        txt = txt.replace(i, '')
  1. 写入文件并释放资源
# 写入文件
fw.write(txt)
# 关闭文件 释放资源
fr.close()
fw.close()

**总结**:
老套路,多写写就好了
代码如下:

import jieba
import re

fr = open('data.txt', encoding='utf-8')
fw = open('clean.txt', mode='w', encoding='utf-8')

line = txt = fr.read()

for i in '()!,。?、()¥……【】\n ':
    # print(i)
    if i in txt:
        txt = txt.replace(i, '')

fw.write(txt)

fr.close()
fw.close()

官方解答:

import jieba
import re

fr = open('data.txt', encoding='utf-8')
fw = open('clean.txt', mode='w', encoding='utf-8')

line = txt = fr.read()

string = re.sub("[(|)|\n|-|!|,|。|?|、|(|)|¥|……|【|】| ]", "", line)  # line是 utf-8编码,不需要转换。

fw.write(string)

fr.close()
fw.close()

摘要分词-2


题目二:
概述:

'''
问题2:提取主题词及其出现频次。要求:在文件PY301-2.py中补充代码,
提取c1ean. txt文件中长度不少于3个字符的词语并统计词频,
将词频最高的10个词语作为主题词,并将主题词及其频次输出到屏幕。
示例如下:
4.0:10,制造业:9,…(略)
注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语中间用逗号分隔,最后一个词语后无逗号。
'''

思路:

  1. jieba库导入,读取文件内容,将内容进行分词操作
import jieba

fr = open('clean.txt', encoding='utf-8')
txt = fr.read()
res = jieba.lcut(txt)
  1. 排序之后将结果写入到文件中
# 将字典转换为列表
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)  # 此行可以按照词频由高到低排序
# 将结果写入到文件中
for i in ls:
    fw.write('{}:{}\n'.format(i[0], i[1]))
  1. 输出结果
tmp = ''
for i in range(10):
    tmp += '{}:{},'.format(lt[i][0], lt[i][-1])

print(tmp[:-1])
  1. 释放资源
# 关闭文件 释放资源
fr.close()

**总结**:
多练
代码如下:

import jieba

fr = open('clean.txt', encoding='utf-8')
txt = fr.read()
res = jieba.lcut(txt)

d = {}
for i in res:
    if len(i)>2:
        d[i] = d.get(i, 0) + 1

lt = list(d.items())
lt.sort(key=lambda x: x[1], reverse=True)
tmp = ''
for i in range(10):
    tmp += '{}:{},'.format(lt[i][0], lt[i][-1])

print(tmp[:-1])

相关代码和资源都会打包到下面的链接(另附一个份刷题笔记):
刷题经验
代码(直接用Python导入即可),软件,题库:
链接:https://pan.baidu.com/s/1WClgPe1D79_GKclR26LJdA
提取码:pjmm

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

China@V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值