最新消息:因从typecho切换到wordpress, 由于转换导入问题,文章可能存在部分乱码或者排版问题,逐个排查修复中...

关于新闻联播的数据分析

懒得分类 admin 1077浏览 0评论

新闻联播的重要性我就不说了,懂的人自然懂。

因为每天涉及的内容还是不少的,如何从每天的新闻联播中快速提取到需要的重点信息变得重要。技术上来说分为几步:

  • 新闻联播内容的文本的获取
  • 文本的分词处理,提取出高频词
  • 以直观的方式比如图表展现出来

好,下面挨个说一下。第一个可以从CCTV的官方网站获得新闻稿。可以人工去采集整理。不过这里我和大家分享一个数据平台Tushare, 大家可以注册一个账号,调用他们的API即可直接获得相关数据。平台已经整理好了,我们直接用Python的模块调用即可。 注册链接点这里 下面的分享也将基于该平台的数据。

准备工作:

  1. 假定你已经有Python运行环境了。如果没有的话,建议你安装Anaconda, 这里就不做过多展开了;
  2. 注册Tushare数据平台的账号, 注册链接点这里 注册后到“个人中心”提取API的 token 备用;
  3. 安装相关的模块。

这里就说一下第三步:

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple/

其中 Pandas 一般是Anaconda已经内置安装过了。不用额外安装。

关于pyecharts 这里要特别说明一下,这里有一个坑就是pyecharts 分为 v0.5.X 和 v1 两个大版本,v0.5.X 和 v1 间不兼容,v1 是一个全新的版本。0.5.X系列,它是针对Python2.7和Python3.4的版本,现在已经不做维护。现在的趋势早就是用Python3了。Python3的当前最新版也是Python3.8了。如果你直接参考网络上的代码,可能会发现各种报错。

当然如果为了使用老式的代码,你可以直接由pip安装的当前的最新版(1.7.1),然后再安装旧版的pyecharts,如下:

pip uninstall pyecharts
pip install pyecharts==0.5.11 -i https://pypi.tuna.tsinghua.edu.cn/simple/

本文不推荐这么做。因为旧版毕竟是旧版,迟早也要适应新版的写法。

下面上一下代码吧:

# -*- coding: utf-8 -*-
"""
新闻联播 数据分析
词频统计 以词云图方式显示
参考自 https://zhuanlan.zhihu.com/p/53189751 
另外做了更新,修复和改进
文本中的stopwords表 取自 https://github.com/shaonianruntu/SMS-Spam-Word-Frequency-Statistics/blob/master/stopwords.dat
2020.03.15
"""

import pandas as pd
import tushare as ts
#from pyecharts import WordCloud
from pyecharts.charts import WordCloud
import jieba #分词
from collections import Counter
import os


# 读取新闻列表
the_date = '20200314'
if os.path.isfile(F'news_{the_date}.csv'): 
    #使用本地缓存的数据,避免调试时不必要的频繁调用API
    df = pd.read_csv(F'news_{the_date}.csv',encoding='utf-8')

else:    
    # init api 
    pro = ts.pro_api('use_your_own_tushare_api_token')
    df = pro.cctv_news(date=the_date)
    df.to_csv(F'news_{the_date}.csv',encoding='utf-8')

#过滤关键词
blacklist = ['责任编辑', '一定','一年', '一起', '一项', '一点儿', '一度','一系列','一道','一次','一亿','进行', '实现', '已经', '指出',
            '为什么', '是不是', '”',',','。','、','的','日','月','和','在', '一个', '一些', 'cctv', '一边', '一部', '一致', '一窗', '万亿元', '亿元', '一致同意', '本台记住', '发生', 
            '上述', '不仅', '不再 ', '下去', '首次', '合作', '发展', '国家', '加强', '共同', '重要', '我们', '你们', '他们', '目前',
            '领导人', '推进', '中方', '坚持', '支持', '表示', '时间', '协调', '时间', '制度', '工作', '强调', '进行', '推动', '通过',
            '北京时间', '有没有', '新闻联播', '本台消息', '这个', '那个', '就是', '今天', '明天', '参加', '今年', '明天']

with open('stopwords.dat','r',encoding="utf-8") as f:
    for w in f.readlines():
        blacklist.append(w.rstrip('\r\n').rstrip('\n'))

#新增关键词
stopwords = ['一带一路', '雄安新区', '区块链', '数字货币', '虚拟货币',  '比特币', '对冲基金', '自贸区', '自由贸易区','乡村振兴','美丽中国','共享经济','租购同权','新零售',
             '共有产权房','楼市调控', '产权保护', '互联网金融', '5G', '4G', '国企改革', '大湾区', '长江经济带','土地流转']

for word in stopwords:
    jieba.add_word(word)   #add_word保证添加的词语不会被cut掉

     
df = df[df.content.isnull() == False]

word_counter= Counter()
for idx, row in df.iterrows():
    word_counter.update(  Counter([ word for word in jieba.cut(row['content']) if word not in blacklist])   )

c = (
    WordCloud()
    .add("", list(word_counter.items()), word_size_range=[12, 55])
    .render("news_wordcloud_custom_mask_image.html")
)

可以看到,当前的热点新闻还是关于疫情的。

TODO: 增加过滤的关键词。当前的分词处理和统计中,仍然包括了大量无用的词。需要过滤掉。

参考文档:https://zhuanlan.zhihu.com/p/53189751

转载请注明:Linc Hu » 关于新闻联播的数据分析

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址