12/29/2016

大纲

舆情分析是基于新闻媒体数据的信息抽取、分析,对特定群体的情绪、意图等思维动态的侦测。为了给智能理财等应用服务,目前主要关心的是重大政经新闻、财经证券类新闻,以及股评、论坛、微博等平台的用户发文。

及时、 持续地获取舆情分析依赖于一系列的工作:稳定的爬虫平台,数据仓库管理,基于NLP和机器学习的分析平台,以及日志、统计和报表生成工具等。

这里通过一个实例来展示舆情分析模块的工作模式。更多的功能支持计划在最后给出。

爬虫&MongoDB数据示例

  • 目前,基于Scrapy的爬虫平台支持将数据存入Mongo数据库
  • 新闻类的数据源主要分两种:新闻和评论
  • 通过R mongolite可以访问,如获得一个集合的记录数量
library(mongolite)
# Init connection to local mongod
coll <- mongo(collection = "sina_stock_comments_NLPresult", db = "spider_resultdb", 
              url = "mongodb://10.253.101.47:27017")
# Records in the sina comments collection
coll$count()
## [1] 93431
  • 可以看到新浪股评(在2016年)具有9万多条评论数据

爬虫&MongoDB数据示例(续)

out <- coll$find('{"symbol" : "sh600742"}') # 获取某支股票的股评记录
## 
 Found 30 records...
 Imported 30 records. Simplifying into dataframe...
names(out[1,])  # 集合中每条记录中包含的字段
##  [1] "id"         "time"       "timeString" "symbol"     "author"    
##  [6] "url"        "title"      "content"    "reply"      "click"     
## [11] "tokens"     "topWords"   "tops"
out[1,"content"] # 股评的正文
## [1] "[\"明日开盘涨两个点,就是未来三年的大顶了!留字\"]"

爬虫&MongoDB数据示例(续)

  • 数据集经过NLP平台(zag)处理,已经事先提取出分词和高频词
out[1,"topWords"] # 第一条记录中的高频词
## [1] "就是,未来三年,顶,[,明日,两个,留字,开盘,],!"
  • 以及详细的词频(TFIDF)信息
out[1, "tops"]
## [1] "(14910,0.2528193735542444,就是); (1190,0.2518006482539551,未来三年); (39030,0.2518006482539551,顶); (91,0.2516888035785591,[); (93111,0.2516888035785591,明日); (45830,0.25157722362453583,两个); (63198,0.251244059633177,留字); (41464,0.24971968867420125,开盘); (93,0.24961266817746344,]); (65281,0.24939935329509896,!)"
  • 将这些数据全部收集起来,就可以得到一个评论贴的全貌
out <- coll$find()[,c("symbol","tokens","tops")]

爬取新浪股评数据,通过词云按权重显示出来

library(wordcloud2)
load("~/work/shiny-examples/082-word-cloud/tfidf_ALL.RData")
wordcloud2(tw, size = 0.5)

词云分析

  • 词云的规模

    length(tfidfWordMap$keys())
  • 词频的范围

    range(tw$freq)
  • 从词云可以看出股民比较关心的点和常用的话语,比如"趋势"、“大单”、“大宗”、“散单”、“市场”、“流向”、“板块”,等等
  • 词云的主要作用是抓取出用户最关心的维度,如,资金、板块、公司、题材等,以及股价、均线、换手率、净利润等技术指标

按板块分类的词云分析

  • 按分类可以获得更精细的图像。这里展示的是VR概念股股评的词云
library(wordcloud2)
load("~/work/shiny-examples/082-word-cloud/tfidf_VR.RData")
wordcloud2(tw[tw$freq<100,], size = 0.15) ##去掉高频(没有太多信息量)的词

简单的统计指标

  • 抛开复杂的分析,仅仅是股评的数量和时间上的分布,就包含了很有用的信息。

单支股票上的热度

  • 以岭南控股为例,展示单支股票的热度

单支股票上的热度(续)

  • 岭南控股热度的突然上升,是停牌和复牌造成的

从整体上看的情绪指标

情绪因子分析

  • 对应的股市行情

情绪因子分析(续)

  • 情绪因子在7月29日是几乎唯一的负值,而7月27日创下了几个月中最大的跌幅,两者之间的关联还有待更多分析验证。
  • 7月29日股评举例(共40条,数据并不多):
  • [1] 妈的,奥运会马上要开始,还天天跌的像狗熊
  • [2] 跌成这样子还有那么多挂单卖,卖求呢,不挣钱玩呢
  • [3] 三天跌了17%,比大盘弱14%,比创业板弱9.5%,每天比净值都跌的多,醉了也服了。
  • [4] 什么价钱会 下折! 上次下折少了百分之50一天
  • [5] 大家小心了。
  • [6] 别坚持了,最少还有百分之十五的下跌空间,信吗?
  • [7] 不知道自己是半斤还是八两只自己是个傻逼还自己认为是个贱比。

舆情因子和智能理财的关联

  • 通过简单分析,可以看到舆情因子和智能理财存在的关联。通过绝对收益的对比,热度和舆情因子的影响可以比较明显地体现出来。

舆情分析计划

  • 以业务为需求对象做具体的舆情分析例,并模块化到平台
  • 可视化
  • 实体抽取算法
  • 热点新闻主题抽取
  • 舆情因子在线化服务、因子优化选择
  • 事件抽取和事件驱动模型