大数据研究常用软件工具与应用场景
如今,大数据日益成为研究行业的重要研究目标。面对其高数据量、多维度与异构化的特点,以及分析方法思路的扩展,传统统计工具已经难以应对。
工欲善其事,必先利其器。众多新的软件分析工具作为深入大数据洞察研究的重要助力, 也成为数据科学家所必须掌握的知识技能。
然而,现实情况的复杂性决定了并不存在解决一切问题的终极工具。实际研究过程中,需要根据实际情况灵活选择最合适的工具(甚至多种工具组合使用),才能更好的完成研究探索。
为此,本文针对研究人员(非技术人员)的实际情况,介绍当前大数据研究涉及的一些主要工具软件(因为相关软件众多,只介绍常用的),并进一步阐述其应用特点和适合的场景,以便于研究人员能有的放矢的学习和使用。
基础篇传统分析/商业统计
Excel、SPSS、SAS 这三者对于研究人员而言并不陌生。
Excel 作为电子表格软件,适合简单统计(分组/求和等)需求,由于其方便好用,功能也能满足很多场景需要,所以实际成为研究人员最常用的软件工具。其缺点在于功能单一,且可处理数据规模小(这一点让很多研究人员尤为头疼)。这两年Excel在大数据方面(如地理可视化和网络关系分析)上也作出了一些增强,但应用能力有限。
SPSS(SPSS Statistics)和SAS作为商业统计软件,提供研究常用的经典统计分析(如回归、方差、因子、多变量分析等)处理。
SPSS 轻量、易于使用,但功能相对较少,适合常规基本统计分析
SAS 功能丰富而强大(包括绘图能力),且支持编程扩展其分析能力,适合复杂与高要求的统计性分析。
上述三个软件在面对大数据环境出现了各种不适,具体不再赘述。但这并不代表其没有使用价值。如果使用传统研究方法论分析大数据时,海量原始数据资源经过前期处理(如降维和统计汇总等)得到的中间研究结果,就很适合使用它们进行进一步研究。
数据挖掘
数据挖掘作为大数据应用的重要领域,在传统统计分析基础上,更强调提供机器学习的方法,关注高维空间下复杂数据关联关系和推演能力。代表是SPSS Modeler(注意不是SPSS Statistics,其前身为Clementine)
SPSS Modeler 的统计功能相对有限, 主要是提供面向商业挖掘的机器学习算法(决策树、神经元网络、分类、聚类和预测等)的实现。同时,其数据预处理和结果辅助分析方面也相当方便,这一点尤其适合商业环境下的快速挖掘。不过就处理能力而言,实际感觉难以应对亿级以上的数据规模。
另一个商业软件 Matlab 也能提供大量数据挖掘的算法,但其特性更关注科学与工程计算领域。而著名的开源数据挖掘软件Weka,功能较少,且数据预处理和结果分析也比较麻烦,更适合学术界或有数据预处理能力的使用者。
中级篇1、通用大数据可视化分析
近两年来出现了许多面向大数据、具备可视化能力的分析工具,在商业研究领域,TableAU无疑是卓越代表。
TableAU 的优势主要在于支持多种大数据源/格式,众多的可视化图表类型,加上拖拽式的使用方式,上手快,非常适合研究员使用,能够涵盖大部分分析研究的场景。不过要注意,其并不能提供经典统计和机器学习算法支持, 因此其可以替代Excel, 但不能代替统计和数据挖掘软件。另外,就实际处理速度而言,感觉面对较大数据(实例超过3000万记录)时,并没有官方介绍的那么迅速。
2 、关系分析
关系分析是大数据环境下的一个新的分析热点(比如信息传播图、社交关系网等),其本质计算的是点之间的关联关系。相关工具中,适合数据研究人员的是一些可视化的轻量桌面型工具,最常用的是Gephi。
Gephi 是免费软件,擅长解决图网络分析的很多需求,其插件众多,功能强且易用。我们经常看到的各种社交关系/传播谱图, 很多都是基于其力导向图(Force directed graph)功能生成。但由于其由java编写,限制了处理性能(感觉处理超过10万节点/边时常陷入假死),如分析百万级节点(如微博热点传播路径)关系时,需先做平滑和剪枝处理。 而要处理更大规模(如亿级以上)的关系网络(如社交网络关系)数据,则需要专门的图关系数据库(如GraphLab/GraphX)来支撑了,其技术要求较高,此处不再介绍。
3、时空数据分析
当前很多软件(包括TableAU)都提供了时空数据的可视化分析功能。但就使用感受来看,其大都只适合较小规模(万级)的可视化展示分析,很少支持不同粒度的快速聚合探索。
如果要分析千万级以上的时空数据,比如新浪微博上亿用户发文的时间与地理分布(从省到街道多级粒度的探索)时,推荐使用 NanoCubes(http://wwwnanocubesnet/)。该开源软件可在日常的办公电脑上提供对亿级时空数据的快速展示和多级实时钻取探索分析。下图是对芝加哥犯罪时间地点的分析,网站有更多的实时分析的演示例子
4、文本/非结构化分析
基于自然语言处理(NLP)的文本分析,在非结构化内容(如互联网/社交媒体/电商评论)大数据的分析方面(甚至调研开放题结果分析)有重要用途。其应用处理涉及分词、特征抽取、情感分析、多主题模型等众多内容。
由于实现难度与领域差异,当前市面上只有一些开源函数包或者云API(如BosonNLP)提供一些基础处理功能,尚未看到适合商业研究分析中文文本的集成化工具软件(如果有谁知道烦请通知我)。在这种情况下,各商业公司(如HCR)主要依靠内部技术实力自主研发适合业务所需的分析功能。
高级篇前面介绍的各种大数据分析工具,可应对的数据都在亿级以下,也以结构化数据为主。当实际面临以下要求: 亿级以上/半实时性处理/非标准化复杂需求 ,通常就需要借助编程(甚至借助于Hadoop/Spark等分布式计算框架)来完成相关的分析。 如果能掌握相关的编程语言能力,那研究员的分析能力将如虎添翼。
当前适合大数据处理的编程语言,包括:
R语言——最适合统计研究背景的人员学习,具有丰富的统计分析功能库以及可视化绘图函数可以直接调用。通过Hadoop-R更可支持处理百亿级别的数据。 相比SAS,其计算能力更强,可解决更复杂更大数据规模的问题。
Python语言——最大的优势是在文本处理以及大数据量处理场景,且易于开发。在相关分析领域,Python代替R的势头越来越明显。
Java语言——通用性编程语言,能力最全面,拥有最多的开源大数据处理资源(统计、机器学习、NLP等等)直接使用。也得到所有分布式计算框架(Hadoop/Spark)的支持。
前面的内容介绍了面向大数据研究的不同工具软件/语言的特点和适用场景。 这些工具能够极大增强研究员在大数据环境下的分析能力,但更重要的是研究员要发挥自身对业务的深入理解,从数据结果中洞察发现有深度的结果,这才是最有价值的。
以上是小编为大家分享的关于大数据研究常用软件工具与应用场景的相关内容,更多信息可以关注环球青藤分享更多干货
想要做好舆情信息工作主要分为以下几方面:
(一)、建立组织保障机制
网络舆情和网络信息安全工作一样,都应实行属地管理和一把手负责制,采取“谁运营谁负责、谁主管谁负责、谁使用谁负责”的办法实行责任追究制。要在进一步提高认识的基础上,把网络舆情信息工作纳入宣传思想工作总体安排,精心部署,狠抓落实。要制定各种规章制度规范网络行为。要明确一位领导同志具体分管网络舆情信息工作,同时确定一名同志为舆情信息员负责网络舆情的日常监测,每天或每周按部门对网络舆情进行分类整理,针对各部门的情况,提供简单的舆情监测分析报告,及时向各职能部门进行反馈。
(二)、建立技术保障机制
网络技术手段是实现网络舆论管理的一个有效措施,常用的网络技术手段包括对IP地址的监测、跟踪、封杀;网管的全天候值班监测,对负面消息进行及时清除;运用智能型软件进行敏感词组的自动过滤;对论坛发帖的延时审查及发布;对国外敏感网站浏览限制;论坛、博客、播客实行实名认证制度等。各个网站和互联网运营商都要严格按照国家有关互联网信息安全的相关法律法规建立技术保障措施,确保网络信息安全。
(三)、建立日常工作机制
1、网络信息发布
“互联网让每一个人都变成了信息的发布者,而且可以不经过审查。”一位传媒研究者称,“一方面,这可以让信息更加公开透明;同时,由于鱼龙混杂,你无法分辨它的真假。而对那些年轻的网民来说,情绪非常容易被煽动。” 正是如此,网站一定要严把信息发布关,要建立网络信息发布的审核制度,规范信息审核流程,实行专人负责。网站开办的BBS论坛、博客、播客等交互栏目,必须实行“实名注册”并落实专人管理,严格执行先审后贴制度。
2、网络舆情引导
网络舆情引导就是对监测到的网络舆情动向,通过网络信息评论员进行网络舆论导向,发挥“舆论领袖”的积极作用,对日常舆情进行引导。一方面可以开展即时性评论,及时跟帖批驳反面声音;另一方面可以通过发帖、跟帖发表引导性评论,发布正面观点。根据传播学规律,“舆论领袖”在影响受众的态度方面作用明显,尤其当网络出现海量信息时,网民往往会无所适从
乐思舆情:在正面引导的同时,各版主还要严格审核有关信息,对恶意信息立即删除,对情绪偏激的帖子作缓冲处理。在把关中,切忌简单粗暴地删帖,要注重运用动之以情、晓之以理的引导艺术,使网民产生理性和情感上的认同与共鸣,从而形成网上正面言论强势。
本次实验使用基于 LDA 主题聚类和主题分布可视化的方式研究顾客评论中的主题分布情况,并参考 《旅游民宿基本要求与评价》 标准中的评级指标辅助定义用户评价主题,具体的评价参考指标如下图所示。
使用 Pandas 加载在线数据表格,并查看数据维度和第一行数据。
数据属性如下表所示
分词器预热,加快 jieba 分词。
jieba 词性标注预热,使用 jieba 中的词性标注模块对输入的句子进行处理,产生每个词和对应的词性。
批量提取每句用户评论中的长度大于 1 的名词,需要一些时间,请耐心等待。
LDA 模型是一个统计模型,所以我们需要进行词频统计和建立词典。CountVectorizer 是属于常见的特征数值计算类,是一个文本特征提取方法,对于每一个训练文本,它只考虑每种词汇在该训练文本中出现的频率,CountVectorizer 会将文本中的词语转换为词频矩阵,它通过 fit_transform 函数计算各个词语出现的次数。
LDA(Latent Dirichlet Allocation)称为隐含狄利克雷分布,是一种以词、主题和文档三层贝叶斯概率为核心结构的主题模型,我们在 LDA 模型训练前不需要进行任何手工标注,LDA 在文本挖掘领域有广泛应用。本次实验我们使用 LDA 主题模型进行用户评论的主题提取。LDA 模型是一个概率模型,直观来讲,如果一篇文章有一个中心思想,那么一些特定词语会更频繁的出现。例如一篇文章中出现很多体育类的词,比如,篮球,足球之类的,那么主题模型就会把它划分为体育类的文章。
将数据处理成 LDA 模型要求的输入格式。
聚类个数选取
因为 LDA 算法需要一个初始的聚类个数,我们可以通过控制变量下的一致性分数进行定量评估来寻找最佳的主题数。Coherence Score 简称一致性分数,就是评估 LDA 主题模型在生成的各个主题下的主题词相关程度指标,该指标越大越好,说明主题内的主题词越相关,主题内部的歧义越少。gensim 提供了 CoherenceModel 模块进行 Coherence Score 的计算,本实验不讨论参数调节,使用默认参数进行模型评估和训练,参数寻找需要耗费一些时间,请耐心等待。
画出主题数对 LDA 模型一致性分数的影响,并选择在展平之前得出最高一致性分数下的主题数为当前语料下最佳的主题数。
通过趋势图观察最佳的主题个数不适合自动化的聚类,因为评价指标较为简单,只需要求得最大的一致性分数下的主题数即可自动化的确定最佳主题个数。
训练主题聚类模型
将上述步骤求得的 best_topic_numbers 作为 LDA 模型初始化的模型主题数,并开始我们的主题模型训练。计算需要一些时间,请耐心等待。
将主题词通过 LDA 算法进行抽象的主题归纳,真正的主题词需要人工进行命名。从 LDA 模型分析结果看,每个主题中的每个词语都分配了相应的权重,我们可以粗略的从主题和对应的主题词进行抽象,主题模型就是从大量语料中找出附属的关键词,并依照关键词之间的相似度提炼成主题,下面我们下面打印各个主题下的主题词,看一下各个主题下的主题词情况。
本实验对 LDA 主题分布进行可视化,通过图像的方式直观查看主题和主题词的分布情况。pyLDAvis 是主题模型交互式可视化库,我们可以直接在 notebook 内部使用主题可视化模块 pyLDAvis 对处理之后的 LDA 用户评论进行可视化,使用 pyLDAvis 可以交互式的显示不同主题,及每个主题的相关词语。
开始对主题分布进行可视化,需要一些时间,请耐心等待。
开启 notebook 中支持画图的控件。
主题模型的可视化结果给出了包括所有主题在内的全局视图,可以看到,输出结果分为左右两部分,左侧为“主题距离地图”,展示各个主题之间的差异,图中带有数字编号的圆形即代表各个主题,圆形的面积与该主题出现的可能性成正比,并且按照面积大小自动进行编号,右侧为各个主题前 30 个最为相关的词汇,对各个主题进行解释说明,以水平柱状图的形式展示,蓝色表示整体词频,红色表示主题词频,当将鼠标光标移至某个主题圆形上方时,右侧将会显示该主题对应的词汇,也可以在左上角 “Selected Topic” 输入框中输入主题编号得到同样的效果。我们可以在可视化上进行参数微调,实时的显示不同主题和每个主题下的相关词语,通过对图中的特征词分布进行理解,将抽象的主题词进行具体化,根据其中的主题词进行命名主题,主题各自包含的词数以及它们之间距离的远近,使聚类效果具有可解释性,通过观察 LDA 主题可视化下的主题词,可以通过 LDA 去扩充主题词典。
LDA可以分为以下5个步骤:
关于LDA有两种含义,一种是线性判别分析(Linear Discriminant Analysis),一种是概率主题模型: 隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA) ,本文讲后者。
按照wiki上的介绍,LDA由Blei, David M、Ng, Andrew Y、Jordan于2003年提出,是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。
人类是怎么生成文档的呢?首先先列出几个主题,然后以一定的概率选择主题,以一定的概率选择这个主题包含的词汇,最终组合成一篇文章。如下图所示(其中不同颜色的词语分别对应上图中不同主题下的词)。
那么LDA就是跟这个反过来: 根据给定的一篇文档,反推其主题分布。
在LDA模型中,一篇文档生成的方式如下:
其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。此外,LDA的图模型结构如下图所示(类似贝叶斯网络结构):
先解释一下以上出现的概念。
至此,我们可以看到二项分布和多项分布很相似,Beta分布和Dirichlet 分布很相似。
如果想要深究其原理可以参考: 通俗理解LDA主题模型 ,也可以先往下走,最后在回过头来看详细的公式,就更能明白了。
总之, 可以得到以下几点信息。
在讲LDA模型之前,再循序渐进理解基础模型:Unigram model、mixture of unigrams model,以及跟LDA最为接近的pLSA模型。为了方便描述,首先定义一些变量:
反过来,既然文档已经产生,那么如何根据已经产生好的文档反推其主题呢?这个利用看到的文档推断其隐藏的主题(分布)的过程(其实也就是产生文档的逆过程),便是 主题建模的目的:自动地发现文档集中的主题(分布)。
文档d和词w是我们得到的样本,可观测得到,所以对于任意一篇文档,其 是已知的。从而可以根据大量已知的文档-词项信息 ,训练出文档-主题 和主题-词项 ,如下公式所示:
故得到文档中每个词的生成概率为:
由于 可事先计算求出,而 和 未知,所以 就是我们要估计的参数(值),通俗点说,就是要最大化这个θ。
用什么方法进行估计呢,常用的参数估计方法有极大似然估计MLE、最大后验证估计MAP、贝叶斯估计等等。因为该待估计的参数中含有隐变量z,所以我们可以考虑EM算法。详细的EM算法可以参考之前写过的 EM算法 章节。
事实上,理解了pLSA模型,也就差不多快理解了LDA模型,因为LDA就是在pLSA的基础上加层贝叶斯框架,即LDA就是pLSA的贝叶斯版本(正因为LDA被贝叶斯化了,所以才需要考虑历史先验知识,才加的两个先验参数)。
下面,咱们对比下本文开头所述的LDA模型中一篇文档生成的方式是怎样的:
LDA中,选主题和选词依然都是两个随机的过程,依然可能是先从主题分布{教育:05,经济:03,交通:02}中抽取出主题:教育,然后再从该主题对应的词分布{大学:05,老师:03,课程:02}中抽取出词:大学。
那PLSA跟LDA的区别在于什么地方呢?区别就在于:
PLSA中,主题分布和词分布是唯一确定的,能明确的指出主题分布可能就是{教育:05,经济:03,交通:02},词分布可能就是{大学:05,老师:03,课程:02}。
但在LDA中,主题分布和词分布不再唯一确定不变,即无法确切给出。例如主题分布可能是{教育:05,经济:03,交通:02},也可能是{教育:06,经济:02,交通:02},到底是哪个我们不再确定(即不知道),因为它是随机的可变化的。但再怎么变化,也依然服从一定的分布, 即主题分布跟词分布由Dirichlet先验随机确定。正因为LDA是PLSA的贝叶斯版本,所以主题分布跟词分布本身由先验知识随机给定。
换言之,LDA在pLSA的基础上给这两参数 加了两个先验分布的参数(贝叶斯化):一个主题分布的先验分布Dirichlet分布 ,和一个词语分布的先验分布Dirichlet分布 。
综上,LDA真的只是pLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布(即两者本质都是为了估计给定文档生成主题,给定主题生成词语的概率),只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。
所以,pLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想。
LDA参数估计: Gibbs采样 ,详见文末的参考文献。
推荐系统中的冷启动问题是指在没有大量用户数据的情况下如何给用户进行个性化推荐,目的是最优化点击率、转化率或用户 体验(用户停留时间、留存率等)。冷启动问题一般分为用户冷启动、物品冷启动和系统冷启动三大类。
解决冷启动问题的方法一般是基于内容的推荐。以Hulu的场景为例,对于用 户冷启动来说,我们希望根据用户的注册信息(如:年龄、性别、爱好等)、搜 索关键词或者合法站外得到的其他信息(例如用户使用Facebook账号登录,并得 到授权,可以得到Facebook中的朋友关系和评论内容)来推测用户的兴趣主题。 得到用户的兴趣主题之后,我们就可以找到与该用户兴趣主题相同的其他用户, 通过他们的历史行为来预测用户感兴趣的**是什么。
同样地,对于物品冷启动问题,我们也可以根据**的导演、演员、类别、关键词等信息推测该**所属于的主题,然后基于主题向量找到相似的**,并将新**推荐给以往喜欢看这 些相似**的用户。 可以使用主题模型(pLSA、LDA等)得到用户和**的主题。
以用户为例,我们将每个用户看作主题模型中的一篇文档,用户对应的特征 作为文档中的单词,这样每个用户可以表示成一袋子特征的形式。通过主题模型 学习之后,经常共同出现的特征将会对应同一个主题,同时每个用户也会相应地 得到一个主题分布。每个**的主题分布也可以用类似的方法得到。
那么如何解决系统冷启动问题呢? 首先可以得到每个用户和**对应的主题向量,除此之外,还需要知道用户主题和**主题之间的偏好程度,也就是哪些主题的用户可能喜欢哪些主题的**。当系统中没有任何数据时,我们需要一些先验知识来指定,并且由于主题的数目通常比较小,随着系统的上线,收集到少量的数据之后我们就可以对主题之间的偏好程度得到一个比较准确的估计。
通俗理解LDA主题模型
LDA模型应用:一眼看穿希拉里的邮件
机器学习通俗易懂系列文章
Lefse分析不同软件做出的结果一样。这一步也是最关键的一步,统计显著差异的biomarker、统计子组组间差异、统计effectsizes,会生成res格式的文件,两组或两组以上的样本中采用的非参数因子KruskalWallis秩和检验检测出biomarker。
Lefse特点
LEfSe分析即LDAEffectSize分析,是一种用于发现和解释高维度数据生物标识的分析工具,基于上步的显著差异物种基因,进行两两组之间的秩和检验,检测出组间差异,线性判别分析对biomarker进行评估差异显著的物种的影响力,最终获得biomarker,基于第二大步的数据,绘制各种。
在趣头条中,金币是该平台的虚拟币,每天的金币收益在第二天会自动的转化成为零钱,然后零钱就可以提现了!也就是相当于收益了!
金币直接转化成为零钱,零钱就可以提现,但是多少金币是一块钱,这个不固定,因为趣头条中的金币是根据每天的广告收益来进行兑换的,也就是说广告收益越高,就会是更少的金币数量等于一块钱,反之!
金币是趣头条里面的货币单位,当天所赚取的金币会在第二天自动转换为现金存到你的零钱账户中,需要兑换的用户,可以直接点击我的,向下面翻到兑换&兑换按钮,点击进入,就可以兑换为微信红包、话费、手机流量了!
扩展资料
趣头条是一款创新模式的生活资讯阅读应用,集合生活、娱乐、社会、养生、时尚等海量新鲜内容呈现给用户。另外在阅读资讯的同时,还有丰富的活动、宝箱、福利、等奖励措施帮助用户在养成良好阅读习惯的同时获取丰厚的回报。
趣头条推荐系统,依据用户属性进knn聚类,对用户兴趣深度挖掘,使用lda主题模型对文章进行分类,使用深度神经网络模型训练doc2vec(文本分析下的情感分析,从文字中自动识别出人们对特定主题的主观看法、情绪以及态度等等) 。离线计算使用svd矩阵分解和item base协同过滤,生成个性化推荐文章集,线上实时使用LR预测模型,通过点击反馈对推荐结果进行重排序。将人群和文章进行分类,将用户喜欢的文章推荐给用户
许多数据分析应用都会涉及到从短文本中提取出潜在的主题,比如微博、短信、日志文件或者评论数据。一方面,提取出潜在的主题有助于下一步的分析,比如情感评分或者文本分类模型。另一方面,短文本数据存在一定的特殊性,我们无法直接用传统的主题模型算法来处理它。短文本数据的主要难点在于:
主题提取模型通常包含多个流程,比如文本预处理、文本向量化、主题挖掘和主题表示过程。每个流程中都有多种处理方法,不同的组合方法将会产生不同的建模结果。
本文将主要从实际操作的角度来介绍不同的短文本主题建模算法的优缺点,更多理论上的探讨可以参考以下文章。
下文中我将自己创建一个数据集,并利用 Python scikit-learn 来拟合相应的主题模型。
本文主要介绍三个主题模型, LDA(Latent Dirichlet Allocation), NMF(Non-Negative Matrix Factorization)和SVD(Singular Value Decomposition)。本文主要采用 scikit-learn 来实现这三个模型。
除了这三个模型外,还有其他一些模型也可以用来发现文档的结构。其中最重要的一个模型就是 KMeans 聚类模型,本文将对比 KMeans 聚类模型和其他主题模型的拟合效果。
首先,我们需要构建文本数据集。本文将以四个自己构建的文本数据集为例来构建主题模型:
首先,我们需要考虑下如何评估一个主题模型建模效果的好坏程度。多数情况下,每个主题中的关键词有以下两个特征:
一些研究表明:关键词还需具备以下两个特征:
接下来,我们将介绍如何实现上述的四个模型——NMF, SVD, LDA 和 KMEANS。对于每个主题模型,我们将分别采用两种文本向量化的方法—— TF(Term Frequence) 和 TFIDF(Term-frequence-inverse-document-frequence)。通常情况下,如果你的数据集中有许多词语在多篇文档中都频繁出现,那么你应该选择采用 TFIDF 的向量化方法。此时这些频繁出现的词语将被视为噪声数据,这些数据会影响模型的拟合效果。然而对于短文本数据而言,TF和TFIDF方法并没有显著的区别,因为短文本数据集中很难碰到上述情况。如何将文本数据向量化是个非常热门的研究领域,比如 基于word embedding模型的方法——word2vec和doc2vec。
主题模型将选择主题词语分布中频率最高的词语作为该主题的关键词,但是对于 SVD 和 KMEANS 算法来说,模型得到的主题词语矩阵中既包含正向值也包含负向值,我们很难直接从中准确地提取出主题关键词。为了解决这个问题,我选择从中挑出绝对数值最大的几个词语作为关键词,并且根据正负值的情况加上相应的标签,即对负向词语加上 "^" 的前缀,比如"^bergers"。
sklearn 中的 truncated SVD implementation 类似于主成分分析算法,它们都试图利用正交分解的方法选择出具有最大方差的变量信息。
对于 clearcut-topic 数据集来说,我们分别利用 TF 和 TFIDF方法来向量化文本数据,并构建 SVD 模型,模型的拟合结果如下所示。正如我们之前所提到的,SVD 模型所提取的关键词中包含正负向词语。为了简单起见, 我们可以理解为该主题包含正向词语,不包含负向的词语。
比如,对于 "Topic 1: bergers | ^hate | love | ^sandwiches" 来说,该文本的主题中包含 "love bergers" 但是不包含 "hate sandwiches"。
由于模型的随机效应,所以每次运行模型得到的结果都会存在细微的差异。在 SVD 的拟合结果中我们发现发现 Topic 3: bergers | ^hate | ^love | sandwiches 成功地提取了 “food” 的主题。
当我们在解释 SVD 模拟的拟合结果时,我们需要对比多个主题的信息。比如上述的模型拟合结果可以解释成:数据集中文档的主要差异是文档中包含 “love bergers” 但不包含 “hate sandwiches”。
接下来我们将利用 SVD 来拟合 unbalanced topic 数据集,检验该模型处理非平衡数据集的效果。
从下述结果中可以看出,SVD无法处理噪声数据,即无法从中提取出主题信息。
LDA 是最常用的主题提取模型之一,因为该模型能够处理多种类型的文本数据,而且模拟的拟合效果非常易于解释。
直观上来看,LDA 根据不同文档中词语的共现频率来提取文本中潜在的主题信息。另一方面,具有相同主题结构的文本之间往往非常相似,因此我们可以根据潜在的主题空间来推断词语之间的相似性和文档之间的相似性。
LDA 算法中主要有两类参数:
接下来我们将研究这些参数是如何影响 LDA 模型的计算过程,人们更多的是根据经验来选择最佳参数。
与 SVD 模型不同的是,LDA 模型所提取的主题非常好解释。以 clearcut-topics 数据集为例,LDA 模型中每个主题都有明确的关键词,它和SVD主要有以下两个区别:
此外,对 LDA 模型来说,采用不同的文本向量化方法也会得到不同的结果。
在 sklearn 中,参数 topic_word_prior 和 doc_topic_prior 分别用来控制 LDA 模型的两类参数。
其中 topic_word_prior 的默认值是(1/n_topics),这意味着主题中的每个词语服从均匀分布。
NMF 可以视为 LDA模型的特例,从理论上来说,这两个模型之间的联系非常复杂。但是在实际应用中,NMF 经常被视为参数固定且可以获得稀疏解的 LDA 模型。虽然 NMF 模型的灵活性不如 LDA 模型,但是该模型可以很好地处理短文本数据集。
另一方面,NMF 最大的缺点是拟合结果的不一致——当我们设置过大的主题个数时,NMF 拟合的结果非常糟糕。相比之下,LDA模型的拟合结果更为稳健。
首先我们来看下 NMF 模型不一致的拟合结果。对于 clearcut topics 数据集来说,当我们设置提取5个主题时,其结果和真实结果非常相似:
类似于 KMeans 模型的聚类方法能够根据文档的向量形式对其进行分组。然而这个模型无法看成是主题模型,因为我们很难解释聚类结果中的关键词信息。
但是如果结合 TF或TFIDF方法,我们可以将 KMeans 模型的聚类中心视为一堆词语的概率组合:
最后,我将简单比较下不同的主题提取模型。大多数情况下,我们倾向于根据文档的主题分布情况对其进行分组,并根据关键词的分布情况来提取主题的信息。
大多数研究者都认为词语的语义信息是由其上下文信息所决定的,比如 “love” 和 “hate”可以看成是语义相似的词语,因为这两个词都可以用在 “I _ apples” 的语境中。事实上,词向量最重要的一个研究就是如何构建词语、短语或者文档的向量形式,使得新的向量空间中仍然保留着语义信息。
找寻语义相同的词语不同于计算词语的共现频率。从下述的结果中可以看出,大多数主题提取模型只涉及到词语的共现频率,并没有考虑词语的语义信息,只有 SVD 模型简单涉及到语义信息。
需要注意的是,本文所采用的数据集是根据一定的规则随机生成的,所以下述结果更多的是用于说明不同模型之间的区别:
原文链接: http://nbviewerjupyterorg/github/dolaameng/tutorials/blob/master/topic-finding-for-short-texts/topics_for_short_textsipynb
译者:Fibears
1、数据预处理:将原始文本数据进行清洗、分词、去除停用词等预处理操作,得到文本的词袋表示。
2、特征提取:对于每个属性,从词袋中提取出与该属性相关的特征词,例如“价格”、“质量”等。
3、聚类或主题建模:使用聚类或主题建模方法对文本进行无监督学习,将文本按照不同的主题或簇进行分组,从而实现属性级分类,对于聚类方法,可以使用K-means、DBSCAN等算法。对于主题模型,可以使用LDA等算法。
4、情感分析:对于每个属性,计算该属性下文本的情感得分,可以使用情感词典或者情感分类器等方法进行情感分析。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)