加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于评论话题挖掘的研究及其实现代码(一)LDA

发布时间:2020-12-24 20:05:53 所属栏目:大数据 来源:网络整理
导读:引言 在 2016年中,我们参加了一个由厦门信研院举办的大数据比赛。当时,我们拿到的题目为影迷关注点分析。数据是来自于微博与豆瓣的影迷评论数据,其数据量达600多万条评论数据,分别对应于2000多部不同的电影。我们的想法是将影迷关注点分析尽量往评论话题

引言

在 2016年中,我们参加了一个由厦门信研院举办的大数据比赛。当时,我们拿到的题目为影迷关注点分析。数据是来自于微博与豆瓣的影迷评论数据,其数据量达600多万条评论数据,分别对应于2000多部不同的电影。我们的想法是将影迷关注点分析尽量往评论话题挖掘模型中靠拢。

LDA话题模型

在一开始的时候,我们打算采用LDA话题识别模型。LDA( Latent Dirichlet Allocation) 主题模型由 Blei 于 2003 年提出,是在概率隐性语义索引 ( probabilistic Latent Semantic Indexing,pLSI) 上扩展得到的三层贝叶斯概率模型,是文档生成概率模型。LDA 模型包含词项、主题和文档三层结构,其基本思想是把文档看成其隐含主题的混合,而每个主题则表现为跟该主题相关的词项的概率分布。

详细的实现过程我放在了百度文库当中,百度文库链接
实现的代码放置我github上:LDAgithub链接
主要是通过python实现,分词工具为结巴分词。
关于LDA的原理介绍,我极力推荐这份博客:LDA原理通俗讲解
实现的效果是如图所示:

python的LDA实现效果

利用LDA模型挖掘影迷关注点

由于python的代码无法处理上万条的评论,所以我转采用了spark的mllib中的LDA模型。经过一番周折,我总算实现出来。

我参照的文献是:基于 LDA 模型的评论热点挖掘
实现的代码放置我的github中:https://github.com/Quincy1994/SparkStudy/tree/master/LDA
mllib中的LDA主要的参数有以下几个:

k:主题数,或者聚类中心数
DocConcentration:文章分布的超参数
TopicConcentraion:主题分布的超参数
MaxIterations:迭代次数
Seed:随即种子

虽然实现的出来,但实现的效果却让我大失所望。前k个热门话题中的关键词几乎一模一样,其效果图如下:

spark中的LDA实现效果

原因分析

我反复审阅自己的代码,觉得应该是ok的。后来深思了一下,我认为最大的原因是我们获取的电影评论属于短评类,字数一般不会超过200字。单个电影的所有评论词语的当中有极高的关联性程度,一个词语出现在多个评论的情况很普遍。而LDA本身就是基于概率统计模型,因此,一些高频词语或者具有中心性的词语在不同话题中的重要性排位具有非常大的噪音影响,从而导致模型出现的效果基本是中心词涵盖了所有的话题。

后记

可以说,我们的努力并没有得到我们当初想要的结果。当然,如果对LDA模型进一步地调优,如过滤掉一些中心性词语,效果应该得到不错的提升。但是我觉得LDA在本次项目中并没有很大的优势。于是乎,我就将评论挖掘模型转变成为词图切分的问题。从图论的研究角度来挖掘出评论中话题。该尝试收获了巨大的成功,也帮助我们获得了比赛的第一名。 我将会在下一份博客中详细说明,关于评论话题挖掘的研究及其实现代码(二)词图切分

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读