《理财市场情绪监测系统》概要设计
理财市场情绪监测系统
概要设计
1 前言
从需求分析知道,为完成需求,主要是对信息的抓取和加工处理,形成市场热点,因此,系统的定位于在预测基金理财市场心理,发现热点,服务基金用户的运营辅助系统,取名《理财市场情绪监测系统》,简称情绪监测系统。本文主要是情绪监测系统的设计描述,适合本文的读者主要为设计人员,开发人和测试人员。文档中用到的专业名称,解释如下表所示:
名词 |
说明 |
备注 |
市场情绪 |
反映市场心理是悲观还是积极 |
|
LTP |
Language Technology Platform |
语言技术平台 |
极值 |
根据算法计算一个词的情绪值 |
|
2 架构设计
2.1 功能架构
情绪监测功能架构设计如下图所示:
其中,从下到上,浅蓝色模块为数据抓取模块,绿色为数据挖掘模块,紫色为信息运营模块。
2.2 系统架构
情绪监测系统架构设计如下图所示:
不支持图片哈哈
3 功能设计
3.1 数据抓取
3.1.1 爬虫系统
功能描述:采用公司基础组件爬虫,生成抓取内容文件,推送到公司HDFS文件系统中。
输入:finance.sina.com.cn
finance.qq.com
business.sohu.com
输出:增量财经要闻标题文本[z1] 。
频率:15分钟一次
财经要闻标题文本的说明:
命名:YYYYMMDD_<源>_序号.txt YYYYMMDD产生的自然日期,例如:20170524
<源>为爬取网站,为sina, qq,sohu3个值
序号为当天产生的顺序,3位数字,例如,001
20170524_sina_001.txt,则是一个完整财经要闻标题文本的命名。
财经要闻标题文本的内容格式,每行一个要闻标题。例如:
中国人口或已被印度超过:出生数被高估9000万
Shibor持续飙涨现金为王时代来临 基金提早闭门谢客
复旦老教授月入1.5万到手只8千 为何工资不低到手却少
华润雪花啤酒现黑色异物 厂家答媒体:采访要走流程
沪指涨超1%重返3100 银行股飙涨 浦发银行直逼涨停
重仓神雾的华夏基金反驳叶檀:无隐藏关联交易情况
外媒:中国天然气用量激增 煤炭为王时代或正在转变
抢计划 权重股开始发力 节前最后一天考虑是否介入
中移动CEO:会千方百计阻止无限流量计划 后果不堪设想
我爱我家中介带开锁匠开门看房 孕妇租客:腿都吓软了
福建海峡银行小鸥Bank:产品如此单一如何吸引用户?
广告:多股发出反弹信号 首届中国金融品牌高峰论坛
3.2 数据挖掘
3.2.1 LTP系统
功能描述:采用开源LTP(哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统)对财经要闻标题文本进行分词、词性标注。
输入:财经要闻标题文本
输出:己分好词,带词性标注的财经要闻标题文本。 YYYYMMDD_<源>_序号.ltp[z2]
频率:15分钟一次
协议:rapitmq交换,格式:<源>|标题1<换行符>标题2 。按换行符确定一条标题。
3.2.2 hadoop
功能描述:对己分好词,带词性标注的财经要闻标题文本进行情绪识别和行业识别。
输入:财经要闻标题文本
输出:行业类别、情绪分数。
3.2.2.1 情绪识别
情绪识别的方式为词典方式,即把分好的词在词典中查取情绪分数,然后整个标题的情绪分数求和,为正,则标题表达的情绪为积极的,为负则为悲观的。由于中文中,连接词和否定词,对词的极性有影响,需要特殊处理。
1) 连词
根据参考文献分析,有指示特征的连词特征为:
并列连词:前后句子极性一致;
选择连词:前后句子极性一般一致;
递进连词:前后句子极性一般一致,后句稍加强烈;
转折连词:前后句子极性相反,后句更加强烈。
其它连词类型对情感倾向不敏感,目前暂不予考虑。
连词及其关联权重表:
关系类型 |
前句权重 |
后句权重 |
举例 |
并列关系 |
0.5 |
0.5 |
既,又 |
选择关系 |
0.5 |
0.5 |
,或者 |
递进关系 |
0.4 |
0.6 |
不但,而且 |
转折关系 |
0.2 |
0.8 |
虽然,但是 |
选择关系 |
0.4 |
0.6 |
与其,宁肯 |
选择关系 |
0.6 |
0.4 |
宁愿,绝不 |
2) 否定词
否定词在文本中具有独特的语法意义和影响,一般情况下,被否定词修饰的词汇一般会改变情感极性。
本文选取常用的否定词为:不、无、非、莫、勿、未、不要、不必、没有等。若后期对算法进行优化,则视情形进行增加与删减。
情绪识别流程:
1) 加载中文情感词典。
2) 对词依次查询词典,获取极值。
3) 判断句中是否有连词,否定词,有则重新对连词或否定词修饰的词计算极值。计算公式:
连词权重*极值=新极值
否定词则对原极值的正负取反。
4) 累加极值,得到标题极值。
5) 重复2,3,4,完成所有标题情绪识别。
6) 情感分析就是分析一句话说得是很主观还是客观描述,分析这句话表达的是积极的情绪还是消极的情绪。
原理
情感倾向分析的方法主要分为两类:一种是基于情感词典的方法;一种是基于机器学习的方法,如基于大规模语料库的机器学习。前者需要用到标注好的情感词典,英文的词典有很多,中文主要有知网整理的情感词典Hownet和台湾大学整理发布的NTUSD两个情感词典,还有哈工大信息检索研究室开源的《同义词词林》可以用于情感词典的扩充。基于机器学习的方法则需要大量的人工标注的语料作为训练集,通过提取文本特征,构建分类器来实现情感的分类。
比如这么一句话:“这手机的画面极好,操作也比较流畅。不过拍照真的太烂了!系统也不好。”
① 情感词
要分析一句话是积极的还是消极的,最简单最基础的方法就是找出句子里面的情感词,积极的情感词比如:赞,好,顺手,华丽等,消极情感词比如:差,烂,坏,坑爹等。出现一个积极词就+1,出现一个消极词就-1。
里面就有“好”,“流畅”两个积极情感词,“烂”一个消极情感词。那它的情感分值就是1+1-1+1=2. 很明显这个分值是不合理的,下面一步步修改它。
② 程度词
“好”,“流畅”和‘烂“前面都有一个程度修饰词。”极好“就比”较好“或者”好“的情感更强,”太烂“也比”有点烂“情感强得多。所以需要在找到情感词后往前找一下有没有程度修饰,并给不同的程度一个权值。比如”极“,”无比“,”太“就要把情感分值*4,”较“,”还算“就情感分值*2,”只算“,”仅仅“这些就*0.5了。那么这句话的情感分值就是:4*1+1*2-1*4+1=3
③ 感叹号
可以发现太烂了后面有感叹号,叹号意味着情感强烈。因此发现叹号可以为情感值+2. 那么这句话的情感分值就变成了:4*1+1*2-1*4-2+1 = 1
④ 否定词
明眼人一眼就看出最后面那个”好“并不是表示”好“,因为前面还有一个”不“字。所以在找到情感词的时候,需要往前找否定词。比如”不“,”不能“这些词。而且还要数这些否定词出现的次数,如果是单数,情感分值就*-1,但如果是偶数,那情感就没有反转,还是*1。在这句话里面,可以看出”好“前面只有一个”不“,所以”好“的情感值应该反转,*-1。
因此这句话的准确情感分值是:4*1+1*2-1*4-2+1*-1 = -1
⑤ 积极和消极分开来
再接下来,很明显就可以看出,这句话里面有褒有贬,不能用一个分值来表示它的情感倾向。而且这个权值的设置也会影响最终的情感分值,敏感度太高了。因此对这句话的最终的正确的处理,是得出这句话的一个积极分值,一个消极分值(这样消极分值也是正数,无需使用负数了)。它们同时代表了这句话的情感倾向。所以这句评论应该是”积极分值:6,消极分值:7“
⑥ 以分句的情感为基础
再仔细一步,详细一点,一条评论的情感分值是由不同的分句加起来的,因此要得到一条评论的情感分值,就要先计算出评论中每个句子的情感分值。这条例子评论有四个分句,因此其结构如下([积极分值, 消极分值]):[[4, 0], [2, 0], [0, 6], [0, 1]]
以上就是使用情感词典来进行情感分析的主要流程了,算法的设计也会按照这个思路来实现。
http://blog.sina.com.cn/s/blog_54f07aba0102vje9.html
http://www.ltp-cloud.com/intro/
http://www.ithao123.cn/content-242299.html
http://www.360doc.com/content/16/0713/22/3852985_575308928.shtml
3.2.2.2 行业识别
行业识别为无监督自动学习方式,识别语料越多,自动识别能力越强。行业识别算法核心为词语相似度计算。由于标题为短句,行业信息包含在标题中的名词中,因此,行业识别转化为词语的相似度计算。
行业识别算法:
1) 加载种子行业名词字典。根据《国民经济行业分类》说明,从中整理出各行业对应的名词,得到初使名词和行业映射表,形成初使种子字典。
2) 加载非行业名词字典。此字典为历史处理中不能归于任何行业的名词。
3) 加载哈工大信息检索研究中心同义词词林
4) 查找标题中的名词是否在行业名词中存在,存在则归为同一行业;不在,查找是否存在于不能归类的名词字典,存在,则为噪音,丢弃此标题;不存在,则计算该名词与行业名词字典中名词相似度,相似度大于阈值,则归类为同行业,小于则保存在非行业名词字典。
词语相似度算法,引用论文《基于同义词词林的词语相似度计算方法》。
3.3 信息运
3.3.1 趋势图
由前面系统生成的结果,按天(按需可调整)统计行业极值,生成市场情绪是积极的,还是悲观的,并形成情绪曲线。
3.3.2 生成热点
由前面系统生成的结果,统计标题命中行业的个数,生成市场行业趋势曲线。统计名词词频,生成TOPK热点。