政府工作报告二问

2 个文本文件分别摘自2019年和2018年的政府工作报告。
问题1 :数据统计。要求: 统计出两个文件中出现次数最多的10 个词语,作为主题词,要求词语不少于2个字符,打印输出在屏幕上,输出示例如下:(示例仅作为示意)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
2019:改革:10,企业:9,…(略),深化:2‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
2018:改革:11,效益,7,…(略),深化:1‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后一个词语后无逗号。

import jieba
def getWords(fn):
    fi = open(fn, 'r', encoding='utf-8')
    ls = jieba.lcut(fi.read())  #f.read()读入全部内容
    d = {}
    for l in ls:
        if len(l) >= 2:
            d[l] = d.get(l, 0) + 1
    lt = list(d.items())
    lt.sort(key=lambda x: x[1], reverse=True)
    return lt
def showWords(li, year, num=10):
    print('{}:'.format(year), end='')
    for i in range(num):
        k, v = li[i]
        if i < num - 1:
            print('{}:{}'.format(k, v), end=',')
        else:
            print('{}:{}'.format(k, v))
ls2019 = getWords('政府工作报告2019.txt')
ls2018 = getWords('政府工作报告2018.txt')
showWords(ls2019, 2019)
showWords(ls2018, 2018)

问题2: 数据关联。要求:对比两组主体词的差异,输出两组的共有词语和分别的特有词语,输出示例如下:(示例词语非答案)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
共有词语:改革,…(略),深化‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
2019 特有:企业,…(略),加强‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
2018 特有:效益,…(略),创新‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
注意:输出格式采用英文冒号和英文逗号,标点符号前后无空格,各词语间用逗号分隔,最后一个词语后无逗号。

import jieba
def getWords(fn):
    fi = open(fn, 'r', encoding='utf-8')
    ls = jieba.lcut(fi.read())
    d = {}
    for l in ls:
        if len(l) >= 2:
            d[l] = d.get(l, 0) + 1
    lt = list(d.items())
    lt.sort(key=lambda x: x[1], reverse=True)
    return lt
def extraWords(li, num=10):
    ls = []
    for i in range(num):
        k, v = li[i]
        ls.append(k)
    return ls
def compareWords(ls1, ls2):
    comm = []
    lt1 = []
    lt2 = []
    for i in ls1:
        if i in ls2:
            comm.append(i)
        else:
            lt1.append(i)
    for i in ls2:
        if i not in ls1:
            lt2.append(i)
    return comm, lt1, lt2
def showDiffWords(comm, y1, y2, lt1, lt2):
    print('共有词语:', end='')
    print(','.join(comm))
    print('{}特有:'.format(y1), end='')
    print(','.join(lt1))
    print('{}特有:'.format(y2), end='')
    print(','.join(lt2))
def main():
    ls2019 = getWords('政府工作报告2019.txt')
    ls2018 = getWords('政府工作报告2018.txt')
    nls2019 = extraWords(ls2019)
    nls2018 = extraWords(ls2018)
    comm, x2019, x2018 = compareWords(nls2019, nls2018)
    showDiffWords(comm, 2019, 2018, x2019, x2018)
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值