首先要实现三个功能点
1、语义情感分析
2、数值聚类统计
3、数据分组(按照某个重复的字段)、组内排序(按照时间点)、组内过滤TopN(保留每组内最小的时间点)
思路构想:
1、编程语言,首选Python,因为它有很多实用的库~
2、找一个支持中文的情感分析,现成的类库
3、开始撸代码!
备注:代码没撸好,是因为自然语言处理这块还是不太熟练,以后慢慢就熟了,总有第一次!哈哈~最后还是选用我最爱的工具大Tableau,经发现它从10版本以后就开始内置Python脚本开发!可以在内部使用Python。一想,聚类统计、情感分析功能不就都有了么,起码可以省百分之80的代码,而且还不易报错!
实现三个功能点步骤:
一、语义情感分析
1、首先把源数据加载到Tableau中。把需要的字段,都拖拽到行功能区!
2、然后创建计算字段,我们需要对内容字段和标题字段做情感分析!
在计算字段中,需要编写固定格式的Python代码,如下:SCRIPT_REAL(“这里是python代码 必须要有一个返回值,[这个是要计算的字段])
稍微解释一下,我们这里是哟弄了python 语义分析的类库bosonnlp ,和数组计算的库:Numpy。就可以了!
SCRIPT_REAL("from bosonnlp import BosonNLP import numpy as np vs=[] nlp = BosonNLP('这个是秘钥') for i in range(0,len(_arg1)): a = nlp.sentiment(_arg1[i]) nrry = np.array(a).ravel() for row in nrry[0].flat: vs.append(row) print(vs[0]) return vs",ATTR([文章标题]) )
代码写完之后,把计算字段命名为情感分类(正、负)数值大于0.5的是正能量,小于0.5的是负能量是坏的评论需要注意,把这个字段拖拽到Tableau的行功能区即可完成情感分析的功能!
效果图
按照文章标题进行的情感分析计算,低于0.5的都是负面的文章!这个值可以自定义,如果要求严格,低于0.4的就是负能量,越接近1的越是正能量!
二、数值聚类统计
拖拽Tableau 软件自带的记录数功能,拖拽到行功能区,即可实现。
三、分组计算和统计
Tableau更新到10.5版本还没有发现它支持分组计算功能,也没找到类似于Group的函数。
之前用了这个聚合函数,对于分组计算的还是不行!
突然想到了数据库它是支持分组计算的! 然后我们把Excel数据又导入到MySQL数据库里面进行计算!
对于导入导出,可以用Navicat的数据库管理工具,或者ETL工具,这里建议用ETL工具(Kettle),可以处理Excel导入到MySQL过程中,把空值、特殊符号,编码问题可以处理好、如果你的数据中有日期,然后再把日期变成规范的mysql datatime的字段格式,如果源数据日期是酱紫 2015/03/04/ 12:99.99 导入就会出错丫,我们需要处理成2018-04-27 17:57:08比较稳妥!
然后我们只用了含有 min和group by的SQL语句就搞定了就实现了保留最小的时间点的一条重复信息。
SELECT yuqing.pingtai, yuqing.title,yuqing.source from yuqing where yuqing.time in (select mintime from (select min(yuqing.time) as mintime from yuqing group by yuqing.title) b) ;
后续的就是,多个文件合并,合并之后根据多个维度字段,进行排序就OK辣!
后续还有~,如果对你有帮助,请别忘了,PC端登陆https://www.ztloo.com 右下角进行打赏!