字云的管理演示:将工作流与R&Quanteda

2020年6月7日
通过

[本文首次发表于方法事项博客,并慷慨解囊,以188bet app]。(您可以在本网页上的内容报告问题金宝搏网址这里)
要共享R-博客内容?188bet app188bet app 如果你有一个博客,或这里如果你不这样做。

在这篇文章中,我们将看看我们已经看到了一个基本的文本可视化技术别处本博客:字云。有很多大文本分析工具而创建基本单词云的过程非常简单。然而,我的部分工作是为高级管理人员提供数据分析和可视化,而直接可用的基本词云方法不容易适应这个用例。下面,我将概述创建可定制的word云的工作流程,您可以放心地将其展示给组织中的任何人!

用于管理演示的数据可视化

在分析和管理之间架起一座桥梁,并确保将数据分析正确地传达给业务涉众并不容易。这种交流是工作的重要部分,没有它,您的数据分析产生任何影响的机会是非常小的。

进行通信的任何类型的数据分析的一个重要方面是讲故事,例如告诉依赖于数据的分析,并提出可行的结论叙述。当呈现给管理利益攸关方,它告诉流逻辑和实现其结论畅通无阻一个故事是非常重要的。当不集中,他们这样的演示可以很容易地出轨,是基于方法论考虑结构(如不告知的业务问题+相关洞察数据分析的故事),或存在视觉含糊不清或邀请多余的审查。从本质上讲,呈现数据分析的结果来管理时,你不想从你要传达的数据驱动的结论,任何分心。

与外的的盒字云问题

因此,最重要的需要提出明确的和直观的数据可视化的。然而,当使用外的开箱中的R字云套路,我发现两个主要问题,使人们难以作出令人信服的可视化管理的利益相关者。

  1. 词干(除去字的末尾,以协调不同的形式,例如争论,争论,主张,争论都截断为申辩)是获得良好的字数必须的,但茎中字云词看起来很奇怪,因此分心(例如,他们可以容易出轨介绍到有关文本处理方法的讨论,而不是决策的数据分析)的影响。金宝搏网址
    • 但是,据我所知,没有在包中的R文本分析或词云可以很容易地“非干”字。从一个严格的数据分析来看,你永远不会真的想做到这一点。对于目前使用的情况下,虽然,这是必须这样做。
  2. 有时你想从词云中删除一个字,即使非常频繁地发生了。例如,可能会出现你公司的名字很频繁(在内部文件或调查,开放式的反应),但它不会告诉你所研究的话题什么见地。金宝搏网址In such cases, these words are often prominent in the word cloud (because they are used quite often), but have no added-value, don’t help you advance your story, and at worst can distract from other important topics that appear in the word cloud.
    • 虽然在每个文本分析包中都可以从文档、语料库或文档术语频率矩阵中删除单词,但这通常发生在用于创建单词云的代码的上游。因此,这样做并不总是很直接,特别是当数据集中有许多不同的列需要转换为单词云时。

我对词云工作流管理演示

在这篇文章中,我们将通过一个工作流程,我在为了弥补现有词云套餐的上述两个问题的使用。这个过程的主要主力是Quanteda包(我们在看到以前的文章)。这个包有很多很棒的地方,但我真正欣赏的是,包开发人员在使常金宝搏网址见的文本分析过程(例如词干分析、术语加权、n-gram选择、删除数字等)变得非常健壮和易于使用方面考虑了很多。

工作流程采用了多项定制功能,我们将在下面走了过来。还有所有的不同步骤独立功能,我们需要在分析文本数据的“Quanteda方式”。我们首先在我们的数据框的文本字段为语料,从中提取和干净的文字标记(例如术语或词汇)。然后,我们将令牌转换成文档特征矩阵,并通过这一起到Quanteda wordcloud程序来创建字云。内置在这个工作流程中,我创建的方式来指定要替换及其替代品(有效的“非词干法”,朵朵的话),并指定应该从词云中删除的单词。一旦功能已经确定,这很容易使一个基本乱箱子词云,检查它,看看需要改变什么,然后再重新将做出这些变化考虑到云词。

第1步:数据帧,并文本字段语料库

所述第一函数使用与文本字段的数据帧,并创建一个语料库对象。该语料库在Quanteda文本工艺流程最基本的元素,本质上是一个被连同元数据在语料库级和文件级存储的原始文件的“库”。

#功能1:生成从所述文本字段中的原始数据的语料库#输入:数据框+文本框#输出:语料库(Quanteda基本对象)comment_field_to_corpus< -功能(DATA_F,text_field_f){corpus_f< -语料库(DATA_F,文本域=text_field_f)#返回胼对象返回(corpus_f)}

第2步:语料库清理令牌对象

第二个功能,我们需要与第一函数创建的语料对象,进行清洗作业数文本,并返回一个令牌对象(列表令牌在字符向量的形式,其中,所述列表中的每个元素对应于输入文件)。

具体来说,我们去掉了标点符号、数字和符号。然后我们将所有的字母转换为小写字母,并对这些单词进行词干处理(例如,去掉单词的末尾以使同一个词根上的不同变体更加协调)。最后,我们删除所有少于3个字符的单词,并选择单字和双字(例如1和2字的组合)。最后,该函数返回已清理的令牌对象。

#功能2:生成从所述语料库清洁令牌#输入:语料库#输出:被清除的令牌对象make_clean_tokens< -功能(corpus_f){#使基令牌对象删除标点、数字、符号#和停用词(注意:默认情况下禁用词匹配是不区分大小写)clean_toks_f< -令牌(corpus_f,什么='字',remove_punct=真正,remove_numbers=真正,remove_symbols=真正,详细=真正)clean_toks_f< -tokens_remove(clean_toks_f,停用词(“英语”))#转换所有字母为小写clean_toks_f< -tokens_tolower(clean_toks_f)#然后干clean_toks_f< -tokens_wordstem(clean_toks_f,语言=quanteda_options(“language_stemmer”))#删除单词少于三个字符clean_toks_f< -tokens_select(clean_toks_f,选择=“保持”,min_nchar=3.)#选择二元语法和对unigramclean_toks_f< -tokens_ngrams(clean_toks_f,n=1:2)返回已清理的令牌对象返回(clean_toks_f)}

步骤3:清理令牌到DFM(文献-特征矩阵)

第三函数将清洁令牌,并且产生DFM(文档特征矩阵),它是一个矩阵,将某些特性的值与每个文档、行中的文档和列中的“特性”关联起来。

#功能3:产生DFM从清洁令牌(文档特征矩阵)输入:被清除的令牌对象#输出:文档特征矩阵(对于字云输入)#有构造DFM的两个选项:#1)术语频率(所有文档的词语例如计数)# 2)文档频率(例如文档数量的计数)#含有每个字)make_dfm< -功能(tokens_f,dfm_method_f){#使来自令牌的DFM对象dfm_f< -dfm(tokens_f,详细=真正)#两种可能的方法来实现:term_freq和doc_freq#如果我们选择了“term_freq”的方法:如果(dfm_method_f=='term_freq'){返回DFM对象返回(dfm_f)#如果我们选择了“doc_freq”的方法:}其他如果(dfm_method_f=='doc_freq'){设置布尔值(例如0/1)的权重#这意味着文件#构建wordcloud的频率dfm_f< -dfm_weight(dfm_f,计划=“布尔”)返回DFM对象返回(dfm_f)}其他{停止("为创建dfm指定的方法无效。选项是'term_freq'和'doc_freq' ")}}

第4步:删除的话,我们不要在Word中云旺旺

第四函数删除的话,我们不希望在这个词云看到的。例如,挖掘内部文件时,可能会非常频繁出现一个人的公司的名称。但是,这是在数据分析的大背景下很少有趣或信息,并提供赖以做出决定无有益的启示。这样的话可以从演示的重点只是分心,所以这是一个好主意,将其删除。

在下面的功能,除去从令牌词语的上述步骤2中创建的对象。

#功能4:删除单词#这个函数会删除我们不需要的单词想在我们的文字云中看到#它会从令牌对象的话#之前它变成了DFMremove_words< -功能(tokens_f,words_to_remove_f){#使用“标记选择”移除所选的字#来自令牌对象trimmed_tokens_f< -tokens_select(tokens_f,words_to_remove_f,选择=“去掉”,不区分大小写=真正)返回令牌对象,并删除选中的单词返回(trimmed_tokens_f)}

第5步:“非干”的朵朵词

第五个功能允许我们指定的名单“以待替换”的话(例如“布丝”)和“更新换代”的话(例如“业务”)。使用这种方法,我们可以保证,我们没有在我们的话云中的任何截断的话。

#功能5:清洁朵朵词#这个功能“非茎”的话梗#我们通过的话到替换载体(例如“布丝”)#和替换(例如“业务”)#这个函数中,DFM对象进行操作clean_stemmed_words< -功能(dfm_f,old_words_f,new_words_f){巨大的帮助来自:#https://stackoverflow.com/questions/19424709/r-gsub-pattern-vector-and-replacement-vector#创建重命名,原来的功能名称的组合(new_words_f)< -old_words_f#分配替换到dfmcolnames(dfm_f)< -str_replace_all(colnames(dfm_fnew_words_f)#压缩DFMdfm_f< -dfm_compress(dfm_f)#并返回清洗DFM对象返回(dfm_f)}

第六步:掌握清洁功能

第六和最后函数将一起所有我们上面定义的组件的功能。该函数采用一个数据帧和一个文本字段中,与某些可选参数沿(例如词语更换的,词语以除去),并返回一个根据我们的规格清洁的DFM。我们可以直接通过这个DFM到Quanteda字云情节方法,使我们的词云。

#功能6:主清洁功能#这将把我们上面定义的所有部分组合在一起输入是dataframe + text列#(连同可选PARAMATERS,例如词语删除)#输出是DFM对象我们可以直接传递给#Quanteda wordcloud功能master_cleaning_function< -功能(DATA_F,text_field_f,dfm_method_f,old_words_f,new_words_f,words_to_remove_f){#使用上面定义的函数创建胼对象corpus_master_f< -comment_field_to_corpus(DATA_F,text_field_f)#创建的清洗对象的令牌使用上面定义的函数clean_toks_master_f< -make_clean_tokens(corpus_master_f)#如果我们不指定我们要删除的话,#我们直接从令牌对象创建dfm如果(失踪(words_to_remove_f)){dfm_f< -make_dfm(clean_toks_master_f,dfm_method_f)}其他{#如果我们要删除的话,我们从删除#令牌对象使用上面定义的函数clean_toks_master_f< -remove_words(clean_toks_master_f,words_to_remove_f)#然后创建使用上面定义的函数的DFMdfm_f< -make_dfm(clean_toks_master_f,dfm_method_f)}#如果没有指定的话,以待替换及其替代我们直接返回dfm如果(失踪(old_words_f)&失踪(new_words_f)){返回(dfm_f)}其他{#如果我们指定的话,要被取代和替换#我们使用功能进行更改DFM#上面定义的dfm_f< -clean_stemmed_words(dfm_f,old_words_f,new_words_f)#然后返回修改后的DFM返回(dfm_f)}}

甲曾为实例:字云管理用于葡萄酒数据

让我们用一些样本数据来完成整个过程看到之前本博客。数据集包含2000种葡萄酒(1000种红葡萄酒和1000种白葡萄酒)的酿酒师注释(描述葡萄酒质量的简短文本)。以下分析的数据和代码可在这里Github上

作为一个说明性的例子,数据集中的第一个文本是这样的:

“我们2007年的传统美乐特色葡萄从哥伦比亚山谷12个不同的地点。风土的多样性使我们能够创造一个更加平衡和完整的酒。我们还包括少量的赤霞珠,马尔贝克和小西拉的最终共混物的补充芳烃,纹理和复杂性。鼻子联合品种和区域特征。它提供了成熟的李子,樱桃,蓝莓,摩卡,香草和焦糖的前进水果口味,口感毛绒,柔软,大方。这是一个优雅,平衡,柔顺梅洛那么好鲑鱼,熏肉,烤肉,野味,火腿,炖和奶酪。对”

在下文中,我们将假设你已经在你的R对话中定义的上述功能。

第1部分:“乱用”的字云

我们首先做一个“乱用”的词云,显示单词“原样”,鉴于文本处理中使用的清洁功能。这种可视化将让我们看到在我们的语料库特定的词应该被更改或删除。(我们经常要进行的更改是唯一的每个上下文和数据集,所以这是不可能实现自动化它们。)

在下面的代码中,我们首先定义我们将在词云使用调色板。然后,我们将数据帧和文本字段传递给我们的主站功能,不指定任何变化。在这个例子中,我们将与长期的频率下工作(例如所有的文件总结词用法)。编码在Github还有一个使用文档频率的示例。

#加载包我们需要图书馆(quanteda)图书馆(plyr);图书馆(dplyr)图书馆(stringr)图书馆(RColorBrewer)#地块为颜色参数朋友=brewer.pal(8,“蓝调”)朋友=朋友(-(1:3.)]颜色=brewer.pal(8,“深色2”)#使用词频进行DFMtf_dfm< -master_cleaning_function(DATA_F=raw_data,text_field_f=“Winemakers_Notes”,dfm_method_f='term_freq')#使用Quanteda词云功能绘制云词quanteda::textplot_wordcloud(tf_dfm,max_words=25,关口=颜色,MIN_SIZE=。5,MAX_SIZE=7,回转=0)

它返回以下情节:

第2部分:指定的变化和进行最后的字云

这已经看起来很漂亮!有,但是,一对夫妇的变化需要做出“管理就绪”词云。

首先,最突出的一个词是“酒”。这是非常合情合理的 - 这些文本描述酒。但是,我们已经知道,并且具有长期称霸情节不添加任何见解或价值。让我们删除这个词!

其次,我们注意到一些茎中的情节的话。例如,“口感”被截断为“palat。”在下面的代码,我指定每个的梗字(旧词在下面的功能),并指示哪些词应该作为替换(新词在下面的功能)。

我们定义的修改,并通过一切我们的主功能如下所示:

指定单词的修改old_words< -c('palat','INTENS','矿工','cherri','balanc')新词< -c(“口感”,'激烈','矿物',“樱桃”,'平衡')去除< -c(“酒”)#使清洁DFMtf_dfm_clean< -master_cleaning_function(DATA_F=raw_data,text_field_f=“Winemakers_Notes”,dfm_method_f='term_freq',old_words_f=old_words,new_words_f=新词,words_to_remove_f=去除)#使与上述规定的变化,词云quanteda::textplot_wordcloud(tf_dfm_clean,max_words=25,关口=颜色,MIN_SIZE=。5,MAX_SIZE=7,回转=0)

它返回以下情节:

这看起来很完美!我们已经移除了术语“酒”,它没有添加任何东西,我们已经“非朵朵”所有的词根词。这里没有什么,这将是一个明显的分心,如果我们提出这个可视化管理!

总结和结论

在这篇文章中,我们将重点放在文本分析和数据可视化。我们提出了一个过程,管理演示,以创建用于定制的字云,去除未添加任何的洞察力,并确保在可视化的所有单词都齐全,甚至词干后频繁出现的词汇。

这个过程允许我们生成“为管理做好准备”的可视化文件,以展示给决策者。最近,我不得不为向高级管理人员的演示准备了大量的单词云,在每种情况下,都有必要对单词云进行这些类型的调整。在这篇文章中描述的工作流程使得任务非常简单,并且在进行分析时节省了大量的时间。根据大家对这些演示的看法,我还想说,花在定制云这个词上的努力绝对是值得的!

接下来的是

在接下来的文章中,我们将分析从说唱专辑由干草叉回顾了歌词文本数据,并使用转让的学习和网络分析跨越了18年的时间找出有影响力的专辑。

敬请关注!

发表评论对于作者,请点击链接并在他们的博客上发表评论:方法事项博客

188bet appR-bloggers.com报价每日电子邮件更新金宝搏网址 R有关的新闻和教程金宝搏网址金宝搏网址 和许多其他议题。如果你正在寻找一份R/data-science的工作,请点击这里
要共享R-博客内容?188bet app188bet app 如果你有一个博客,或这里如果你不这样做。



如果你走到这一步,为什么不订阅更新从这个网站吗?选择你的味道:电子邮件,推特,1188bet app, 要么Facebook的...

评论被关闭。

搜索R-博客188bet app

赞助商

决不会错过的更新!
订阅R-博客188bet app接受
电子邮件与最新的[R帖子。
(您将不会再看到这条消息。)

点击此处关闭(此弹出不会再次出现)