摘要分词-1
题目一:
概述:
'''
考生文件来下.存在2个Python源文件和1个文本文件,其中,2个Python源文件对应2个问题,
文本文件“data.txt”中包含一篇从互联网上下载的关于“德国工具4.0战略规划实施建议摘要”的文章。
请分别补充2个Python源文件,完成以下功能。
问题1:文件内容清洗。要求:在文件PY301-1.py中补充代码,对文件data.txt的内容进行清理,
去掉中文标点符号,只保留中文、英文、数字、英文标点符号等字符,将结果输出到文件c1ean.txt中。
示例如下:
德国工业4.0战略计划实施建议摘编机械工业信息研究院战略与规化研究所一德国实施工业…(略)
'''
思路:
- jieba库导入与文件操作
# 导入jieba(中文分词)库
import jieba
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()
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,…(略)
注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语中间用逗号分隔,最后一个词语后无逗号。
'''
思路:
- jieba库导入,读取文件内容,将内容进行分词操作
import jieba
fr = open('clean.txt', encoding='utf-8')
txt = fr.read()
res = jieba.lcut(txt)
- 排序之后将结果写入到文件中
# 将字典转换为列表
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]))
- 输出结果
tmp = ''
for i in range(10):
tmp += '{}:{},'.format(lt[i][0], lt[i][-1])
print(tmp[:-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