/weibo-analysis-and-visualization

使用python抓取微博数据并对微博文本分析和可视化,LDA(树图)、关系图、词云、时间趋势(折线图)、热度地图、词典情感分析(饼图和3D柱状图)、词向量神经网络情感分析、tfidf聚类、词向量聚类、关键词提取、文本相似度分析等

Primary LanguagePythonMIT LicenseMIT

weibo GitHub license stars forks python

微博文本分析和可视化

0. 数据来源和结构

新浪微博,爬虫链接:

https://github.com/HUANGZHIHAO1994/weibospider-keyword

微博内容数据结构(mongo数据库导出的json文档)

content_example:
[
{'_id': '1177737142_H4PSVeZWD', 'keyword': 'A股', 'crawl_time': '2019-06-01 20:31:13', 'weibo_url': 'https://weibo.com/1177737142/H4PSVeZWD', 'user_id': '1177737142', 'created_at': '2018-11-29 03:02:30', 'tool': 'Android', 'like_num': {'$numberInt': '0'}, 'repost_num': {'$numberInt': '0'}, 'comment_num': {'$numberInt': '0'}, 'image_url': 'http://wx4.sinaimg.cn/wap180/4632d7b6ly1fxod61wktyj20u00m8ahf.jpg', 'content': '#a股观点# 鲍威尔主席或是因为被特朗普总统点名批评后萌生悔改之意,今晚一番讲话被市场解读为美联储或暂停加息步伐。美元指数应声下挫,美股及金属贵金属价格大幅上扬,A50表现也并不逊色太多。对明天A股或有积极影响,反弹或能得以延续。 [组图共2张]'},...
]

微博评论数据结构(mongo数据库导出的json文档)

comment_example:
[
{'_id': 'C_4322161898716112', 'crawl_time': '2019-06-01 20:35:36', 'weibo_url': 'https://weibo.com/1896820725/H9inNf22b', 'comment_user_id': '6044625121', 'content': '没问题,', 'like_num': {'$numberInt': '0'}, 'created_at': '2018-12-28 11:19:21'},...
]

1. 数据预处理

  1. prepro.py、pre_graph.py、senti_pre.py

    为了应对各种分析需求,需要数据预处理,具体所需数据文件类型和输出的结果数据结构见这三个py文件

    PS:

    prepro.py 运行时根据需要修改123、143、166行三处代码

    pre_graph.py 运行时根据需要修改127、140行两处代码

    senti_pre.py 运行时根据需要修改第119行代码

  2. zh_wiki.py、langconv.py

    这两个py文件是用于繁体转简体的无需修改

2. 数据分析和可视化

  1. 词云:wc.py(需要跑完prepro.py)

    根据需要修改3、19、26行代码

  2. 热度地图: map.py(需要跑完prepro.py)

    根据需要修改第8行代码

  3. 转发、评论、点赞时间序列: line.py(需要跑完senti_pre.py 和 senti_analy.py)

  4. 微博评论关系图: graph.py(需要跑完pre_graph.py)

    参考

  5. 文本聚类: cluster_tfidf.pycluster_w2v.py(需要跑完prepro.py)

  6. LDA主题模型分析: LDA.py(需要跑完senti_pre.py)tree.py(需要跑完senti_analy.py)

  7. 情感分析(词典): senti_analy.py(需要跑完senti_pre.py)3Dbar.py(需要跑完senti_analy.py)pie.py(需要跑完senti_analy.py)

  8. 情感分析(W2V+LSTM):Sentiment-Analysis-master文档中的senti_lstm.py(需要跑完senti_pre.py)

    看情况修改250行代码

    有些文档太大,放在百度网盘链接中:

    链接:https://pan.baidu.com/s/1l447d3d6OSd_yAlsF7b_mA 提取码:og9t

  9. 文本相似度分析:similar.py(仅供参考)

  10. 其他可供参考: senti_analy_refer.py、Sentiment_lstm.py

  11. 有关Senti_Keyword_total_id.csv:

    下载8.百度网盘中Senti_Keyword_total_id.csv即可,以下是解释: 该文件几乎和Senti_Keyword_total.csv相同,只是多了一列weibo_id(此处不再给出生成Senti_Keyword_total_id.csv的代码,直接给生成的文档, 生成Senti_Keyword_total_id.csv可改写senti_analy.py,增加一列weibo_id), 8中的百度网盘(有Senti_Keyword_total_id.csv和Senti_Keyword_total.csv,还有全部comment和全部content), 由于lines.py等需要全部关键词,因此需要用senti_analy.py直接跑全部comment.json和content.json生成Senti_Keyword_total.csv(直接从网盘下来Senti_Keyword_total_id.csv再跑lines.py,3Dbar.py,pie.py即可)