作者:冯大福
舆情监测一直是众多品牌关注的地方,尤其品牌想知道在品牌推广,品牌策略,品牌广告中出现的问题,从而能进行策略上的改进,但是现在很多人都是读帖子,笔者在4年前做舆情分析时候就是读帖子,至今没有太多改善,关注舆情监测中的主题挖掘部分,主题挖掘可以使数据分析师,减轻工作量,去掉读帖子等一系列等的复杂工作,大致了解主题规律。
本文是笔者早前发在某网站上的,由于笔者最近太忙,将本文修改下呈现给大家:
本文分析逻辑:
从各大网站论坛,微博等爬虫关于某避孕药的内容
关键字段名称包含:
其他字段和本文不想关,不阐述
去掉数字、特殊字符、标准符号
根据以上数据探索的词频,词作为colname,词频表示数值,每一行是帖子内容作为id标示
例如:
即每个帖子出现了某词的词频的次数,帖子1中出现避孕药2次,优思明4次,囊中1次
R语言tm包来作处理
即:分词之后生成一个列表变量,用列表变量构建语料库。
由于tm包中的停用词()都是英文(可以输入stopwords()查看),所以大家可以去网上查找中文的停用词,用removeWords函数去除语料库中的停用词:
生成语料库之后,生成词项-文档矩阵(Term Document Matrix,TDM),顾名思义,TDM是一个矩阵,矩阵的列对应语料库中所有的文档,矩阵的行对应所有文档中抽取的词项,该矩阵中,一个[i,j]位置的元素代表词项i在文档j中出现的次数。
默认的加权方式是TF,即词频,这里采用Tf-Idf,该方法用于评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度:
同时,需要用removeSparseTerms()函数进行降维
其实就是在数据挖掘查看数据基本统计,目的看下数据逻辑符合不符合社会认知
例如下图:查看优思明和它相关概率高于0.6的词有哪些
下图为整体数据(由于归一化)做的数据统计
LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”
具体的算法核心在这里略,因为写太多可能读者看不懂。
VEM = LDA( sample.dtm2, k=10, control = list(seed= SEED)),
根据上面所形成的raw data形成主题词:
解读:
主题分类10个主题,在这个文本中,但是还需要优化
确切来说,这10个主题还需要优化,文本经过人工看完应该提炼的的是优思明使用目的,大部分集中在避孕,安全,发胖,治疗痤疮等,少部分会集中副作用等。
由于4年前做脚本,因此好多需要优化,之后会将优化的和大家分享
优化内容包含
End.
来源:36大数据