利用python提取文章主题词(访问文件,中文分组,列表元素排序,数据关联,函数定义)

题目:

考生文件夹下存在2个Python源文件和2个文本文件。中, 2个Python源文件对应2个问题,2个文本文件分别摘自2019年和2018年的政府工作报告。请分别补充2个Python源文件, 实现以下功能。
问题1 (10分) :数据统计。要求:修改PY301-1.py文件中代码,分别统计两个文件中出现次数最多的10词语,作为主题词,要求词语不少于2个字符,打印输出在屏蒂上,输出示例如下: (示例词语非答案)
2019:改革:0,企业9.(略),深化:2
2018:改革:1 1.效益…(略),深化:1
注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后1个词语后无逗号
问题2 (10分) :数据关联。要求:修改PY301-2.py文件中代码,对比两组主题词的差异,输出两组的共有词语和分别的特有词语。输出示例如下: (示例词语非答案)
共有词语:改革…(略),深化
2019特:企业…(略),加强
2018特有:效…(略),创新
主意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后-个词语后无逗号。

第一问

import jieba
def fenci(txt):
    f=open(txt,'r')
    file=f.read()
    f.close()#这三句是打开,读取,关闭文件的操作
    datas= jieba.lcut(file)#把文件内容分词
    d={}#词语放到列表里
    for data in datas:
        if len(data)>=2:
            d[data]=d.get(data,0)+1#统计字数大于2的词的个数
    lt=list(d.items())#放在列表中方便排序
    lt.sort(key=lambda tumple:tumple[1] ,reverse=True)#用sort方法进行排序
    return lt
def show(lt):
    for i in lt[0:9]:
        print(i[0],":",i[1],end=',',sep='')
    print(lt[9][0],":",lt[9][1],sep='')#将列表中的各个元组去掉括号,注意列表最后一项单独写,题目要求“最后一个词语后无逗号
lt1=fenci("data2019.txt")
lt2=fenci("data2018.txt")
print("2019:",end='')
show(lt1)
print("2018:",end='')
show(lt2)

输出结果:

2019:改革:17,发展:17,推进:15,加强:10,创新:9,企业:8,提高:7,实施:6,取得:6,全面:6
2018:改革:31,发展:27,加强:16,创新:15,推进:14,制度:14,经济:13,坚持:12,实施:12,实现:11

第二问

import jieba
def fenci(txt):
    f=open(txt,'r')
    file=f.read()
    f.close()#这三句是打开,读取,关闭文件的操作
    datas= jieba.lcut(file)#把文件内容分词
    d={}#词语放到列表里
    for data in datas:
        if len(data)>=2:
            d[data]=d.get(data,0)+1#统计字数大于2的词的个数
    lt=list(d.items())#放在列表中方便排序
    lt.sort(key=lambda tumple:tumple[1] ,reverse=True)#用sort方法进行排序
    ls=[x[0] for x in lt[0:10]]#第二问只需要关键词,不需要出现次数 创建一个新列表 遍历lt列表元素,取下x[0]元素
    return ls
ls1=fenci("data2019.txt")
ls2=fenci("data2018.txt")
ls3=[]#存储共有元素
for i in ls1:
    if i in ls2:
        ls3.append(i)#遍历ls1,如果ls1中元素在ls2中,把它放在ls3中
for i in ls3:
    ls1.remove(i)
    ls2.remove(i)#将共有元素去除剩下就是特有元素
def show(l):
    print(','.join(l))#将列表元素变成字符串

print("共有词语:",end='',sep='')
show(ls3)
print("2019特有:",end='',sep='')
show(ls1)
print("2018特有:",end='',sep='')
show(ls2)

输出结果:

共有词语:改革,发展,推进,加强,创新,实施
2019特有:企业,提高,取得,全面
2018特有:制度,经济,坚持,实现

ps:题目用到的文件可后台私信获得

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值