简化文本挖掘–使用R的IPL 2020 Tweet分析
文本挖掘利用不同的AI技术自动处理数据并生成有价值的见解,从而使公司能够制定数据驱动型决策。
文本挖掘可识别事实,关系和断言,否则这些事实,关系和断言将保留在大量文本大数据中。提取后,此信息将转换为结构化形式,可以进行进一步分析,或使用群集的HTML表,思维导图,图表等直接显示。
文本挖掘的优势
文本挖掘可以节省时间,并且可以有效地分析构成世界数据近80%的非结构化数据。
文本挖掘可以帮助进行预测分析。
文本挖掘用于汇总文档,并有助于跟踪一段时间内的意见。
文本挖掘技术,用于分析不同业务领域中的问题。
而且,它有助于从文本中提取概念并以更简单的方式呈现它。
使用“文本挖掘”索引的文本可用于预测分析。
可以插入任何词汇表以在他们感兴趣的领域中使用该术语。
例如,文本挖掘可用于使用某些单词或短语来过滤无关的电子邮件。这样的电子邮件将自动进入垃圾邮件。Text Mining还将向用于删除邮件的电子邮件发送警报,其中包含此类令人反感的单词或内容。
文本挖掘的应用
文本挖掘工具和技术正在迅速渗透从学术界和医疗保健到企业和社交媒体平台的行业。以下是我们周围一些最常见的文本挖掘应用程序:
文本挖掘应用
图1:文本挖掘的应用
风险管理:商业部门失败的主要原因之一是缺乏适当的风险分析。由于文本挖掘工具和技术可以从成千上万个文本数据源中收集相关信息,并在提取的见解之间建立链接,因此,公司可以在适当的时候访问正确的信息,并提高其减轻潜在风险的能力。
欺诈检测:金融和保险公司主要利用此机会。通过将文本分析的结果与相关的结构化数据相结合,这些公司可以快速处理索赔,并更有效地检测和预防欺诈。
商业智能: 文本挖掘技术除了提供对客户行为和趋势的深刻见解之外,还可以帮助公司分析竞争对手的优势和劣势,从而在市场上获得竞争优势。
社交媒体分析:有许多专门用于分析社交媒体平台性能的文本挖掘工具。这些有助于跟踪和解释新闻,博客,电子邮件等中的文本。此外,文本挖掘工具可以有效地分析社交媒体上的帖子,喜欢和关注者的数量,从而使人们能够了解正在互动的网民的反应他们的品牌和在线内容。这项分析使社交媒体平台能够为其目标受众了解“热门信息”和“非热门信息”。
客户服务:诸如自然语言处理(NLP)之类的文本挖掘技术在客户服务领域中变得越来越重要。公司正在购买文本分析软件,以通过访问调查,客户反馈,电话等中的文本数据来改善他们的整体客户体验,旨在大幅缩短公司的响应时间。
现在,让我们考虑一个案例研究,以更好地说明文本挖掘实际上是如何工作的以及如何使用文本挖掘来创建词云,原因是应该使用词云来呈现文本数据。
案例研究– IPL 2020 Tweet分析
该案例研究可以视为上述社交媒体分析的一个示例。在这里,我将通过此处的链接处理有关印度超级联赛IPL 2020的推文。
“文本挖掘是一种可以促进研究过程并有助于测试查询的技术。”
为了进行分析,我将使用R and R studio(一种用于统计计算和图形的语言和环境)。为什么选择R? R提供了广泛的统计和图形技术,并提供了丰富的软件包,用于自然语言处理(NLP)和生成图,以及用于将文本文件加载到语料库,然后清理和提取数据的基础步骤中执行分析。而且,它是开源的,易于学习。
因此,无需进一步讨论,让我们深入研究案例研究。
导入和快速查看数据集
我们的数据集IPL_Tweets包含20231个观测值和19个变量。我使用read.csv()命令导入数据集; read.csv() 被用于读取逗号分隔值(CSV)文件,其中,逗号“”被用作字段分隔符。
变量名称的获取方式为:
姓(IPL_Tweets)
文本挖掘-列
接下来,我们将检查数据集中的空值和重复值。
anyNA(IPL_Tweets)#检查缺失值
sum(duplicated(IPL_Tweets))#搜索重复值
文本挖掘-缺失和重复的值
删除重复条目是有效
数据分析的关键步骤。我们的数据集有7个重复值,可以使用以下代码将其删除:
IPL_Tweets = IPL_Tweets [duplicated(IPL_Tweets)!=“ TRUE”,]#删除重复的条目
尽管我们的数据集中有19个变量,但是为了使事情变得简单,我们将仅使用以下命令将tweets和相应的hashtag分别检索到两个分别称为Tweets和Hashtags的文件中。
rownumbers = c(1:nrow(IPL_Tweets))
Tweets = data.frame(doc_id =行号,文本= IPL_Tweets $ tweet)
Hashtags = data.frame(doc_id =行号,文本= IPL_Tweets $ hashtags)
让我们来看看我们的推文和标签。
文本挖掘-标签
图2:推文数据集
无花果3:标签数据集
没有任何标签的推文很常见。因此,很明显,Hashtags数据集缺少一些条目,因此,我们还将使用-
Hashtags = Hashtags [Hashtags $ text!=“ []”,]
在执行完所有步骤之后,我们将获得带有20231个观察值和2列的Tweets和带有19971个观察值和2列的Hashtags。
安装和加载R软件包
本文的案例研究中使用了以下软件包:
tm用于文本挖掘操作,例如删除数字,特殊字符,标点符号和停用词。
用于词干的snowballc,这是将单词还原为基数或词根形式的过程,例如,词干算法会将单词“ fishing”,“ fished”和“ fisher”减少为词根“ fish”。
wordcloud和wordcloud2用于生成词云图。
RColorBrewer用于各种绘图中的调色板。
#安装
install.packages(“ tm”)#用于文本挖掘
install.packages(“ SnowballC”)#用于文本提取
install.packages(“ wordcloud”)#词云生成器
install.packages(“ RColorBrewer”)#调色板
install.packages(“ wordcloud2”)#词云生成器
#加载
库(“ tm”)
库(“ SnowballC”)
库(“ wordcloud”)
库(“ RColorBrewer”)
图书馆(wordcloud2)
清理文本数据
接下来要做的是从数据集中构造一个语料库并进行处理。在R中,语料库是文本文档的集合,可以在上面应用文本挖掘或NLP例程。
TextCorpus = Corpus(DataframeSource(Tweets))#用于推文的Corpus
Hashcorpus = Corpus(DataframeSource(Hashtags))#用于Hashtags的Corpus
由于数据集是以原始格式获得的,因此,数据集中会有很多不需要的东西,这可能会妨碍我们分析数据的目标。在以下步骤中,我们将清理和处理数据,以便在后面的部分中进行分析。
将所有单词转换为小写。
删除标点符号和数字。
删除停用词。
消除多余的空白。
最后,文字发芽。
首先,我们将语料库中的所有单词和句子都转换为小写。也可以使用大写字母,但通常使用小写字母。此步骤减少了将相同的单词视为不同的唯一单词的机会,例如,即使“ Mining”和“ mining”相同,也将它们视为不同的单词,因此在此处将它们保留为小写即可解决。
#转换为小写
TextCorpus1 = tm_map(TextCorpus,content_transformer(tolower))#用于推文
Hashcorpus1 = tm_map(Hashcorpus,content_transformer(tolower))#用于Hashtags
接下来,要从语料库中删除标点符号,我们执行以下代码,否则,在分析过程中将这些标点符号视为单独的文本元素,其结果中将不包含任何情感。同样,也不需要保留数据集中的数字,因此可以执行以下给定的代码从数据中删除数字。
#删除标点符号
TextCorpus2 = tm_map(TextCorpus1,content_transformer(removePunctuation))
Hashcorpus2 = tm_map(Hashcorpus1,content_transformer(removePunctuation))
#删除号码
TextCorpus3 = tm_map(TextCorpus2,content_transformer(removeNumbers))
Hashcorpus3 = tm_map(Hashcorpus2,content_transformer(removeNumbers))
接下来要解决的是停用词的存在。通常,有些单词很常见,但提供的信息很少。这些称为停用词,您可能希望将其从分析中删除。一些常见的英语停用词包括“ I”,“ she'll”,“ the”等。在tm软件包中,有174个常用英语停用词。
#removing停用词
TextCorpus4 = tm_map(TextCorpus3,content_transformer(removeWords),stopwords())
Hashcorpus4 = tm_map(Hashcorpus3,content_transformer(removeWords),stopwords())
下一步是消除语料库中单词之间的多余空白。
#删除单词之间的空格
TextCorpus5 = tm_map(TextCorpus4,stripWhitespace)
HashCorpus5 = tm_map(HashCorpus4,stripWhitespace)
最后但并非最不重要的一点是, 文字发芽。这是将单词还原为词根形式的过程。词干处理将单词简化为其通用名称。例如,词干处理将词“钓鱼”,“钓鱼”和“钓鱼”简化为词干“鱼”。
#文本词干-将单词还原为词根形式
TextCorpus6 = tm_map(TextCorpus5,stemDocument)
HashCorpus6 = tm_map(HashCorpus5,stemDocument)
现在,我们的文本数据集已准备好进行进一步的分析。
创建文档期限矩阵
甲文献长期矩阵或术语的文档矩阵是描述发生的文档集合中术语的频率的数学矩阵。在文档术语矩阵中,行对应于集合中的文档,列对应于术语。
当创建出现在一组文档中的术语数据库时,文档术语矩阵包含与文档相对应的行和与术语相对应的列。例如,如果一个人有以下两个(简短)文档:
?D1 =“我喜欢数据库”
?D2 =“我讨厌数据库”
那么文档项矩阵将是:
矩阵
图4:文档术语矩阵
其中显示哪些文档包含哪些术语以及它们出现多少次。在R脚本中,以下代码用于创建文档术语矩阵。
#构建推文的术语文档矩阵
DTM = DocumentTermMatrix(TextCorpus6)
DTM = as.matrix(DTM)#转换为双矩阵
DTM.totalfreq = colSums(DTM)#计算词频
summary(DTM.totalfreq)#摘要计算
文本挖掘-摘要
摘要统计数据显示,推文的文档术语矩阵包含单词的平均频率为12.87,最大频率为22778。
对于标签也遵循类似的方法。
#构建标签的术语文档矩阵
DTM1 = DocumentTermMatrix(HashCorpus6)
DTM1 = as.matrix(DTM1)
DTM1.totalfreq = colSums(DTM1)
摘要(DTM1.totalfreq)
标签的文档术语矩阵的摘要统计信息具有平均频率为18.33,最大频率为22478的标签。
寻找最常用的单词
创建文档术语矩阵后,使用条形图绘制前10个最常用的单词是可视化该单词的常用数据的一种很好的基本方法。
因此,准备了解什么是IPL 2020中的#Trending?让我们来看看 !!
在此,通过降低频率值对第一个单词进行排序,然后进行绘制。
#找出推文中最常用的词
#按频率降序排列
DTM_V = sort(DTM.totalfreq,decreasing = TRUE)
DTM_D = data.frame(字=名称(DTM_V),频率= DTM_V)
#显示前10个最常用的单词
头(DTM_D,10)
#绘制最常用的单词
barplot(DTM_D [1:10,] $ freq,las = 2,names.arg = DTM_D [1:10,] $ word,
col =“ lightgreen”,main =“推文中的前10个最常用词”,
ylab =“字频”)
它带有以下输出,如-
常用词
文本挖掘-常用推文图
图5:推文中最常见的10个单词
遵循相同的过程以获取前10个最频繁的主题标签。
图6:十大热门话题标签
可以从此条形图中解释以下内容:
诸如“ dreamipl”之类的单词在推文中以及在标签中均以“ ipl”,“ dream”和“ csk”紧随其后。
在推文中,单词“ rcb”比主题标签更常见。“ iplinua”则相反。
生成词云
词云是可视化和分析定性数据的最流行方法之一。单词的特征可以表示为单词云,如下所示:
词云增加了清晰度和简洁性。
最常用的关键字在词云中表现得更好。
词云是一种动态的交流工具。易于理解,易于共享,并且令人印象深刻。
wordcloud(words = colnames(DTM),freq = DTM.totalfreq,min.freq = 500,scale = c(5
max.words = 200,rot.per = 0.30,colors = brewer.pal(n = 8,“ Dark2”),random.order = F
上面的代码用于为IPL 2020 Tweets创建词云。
在wordcloud函数中,我们有一些参数,其实现方式简要介绍如下:
单词–获取单词集合以设计wordcloud
频率-这是为了获得条款的频率
Min.freq –最小频率项,将在wordcloud中
最大字数–字云中的最大字数。
比例–最大到最小频率术语的字体大小
颜色–为wordcloud中的单词添加颜色
rot.per –显示为垂直文本(旋转90度)的单词的百分比。我将其设置为0.30(30%),请根据您的喜好随意调整此设置。
文本挖掘-词云
图7:IPL 2020推文的词云
借助“ wordcloud2”包创建另一个wordcloud。与第一个相比,Wordcloud2提供了更多的选择来获得更多创意和色彩丰富的词云。在这里,从“ wordcloud2”创建了IPL 2020推文的wordcloud。
#word cloud 2
wordcloud2(数据= DTM_D,大小= 3,颜色=“随机光”,backgroundColor =“白色”)
上面的代码创建了一个新的词云,因为-
词云
无花果8:Word Cloud for IPL 2020 Tweets with word cloud 2
词云显示了经常出现的其他词,可能会引起进一步分析的兴趣。像“孟买印度”,“ mivcsk”,“ kxip”等词可以为最常见的词提供更多上下文,并有助于更好地理解主要主题。
最后,我们将计算单词联想。?他的技术可以有效地用于分析哪些词最经常发生在协会与调查答复,这有助于看到周围这些词的上下文中出现频率最高的词。
#查找关联
findAssocs(DocumentTermMatrix(TextCorpus6),术语= c(“ ipl”,“ dream”,“ csk”),corlimit = 0.25)
寻找协会
该脚本显示了哪些单词与频率最高的单词“ ipl”,“ dream”和“ csk”相关联,相关性最低,为25%。
结论
文本挖掘或文本分析是一项蓬勃发展的技术,但分析结果和深度仍因企业而异。本文简要介绍了有关读取文本数据,清除文本数据和转换的信息。它演示了如何创建单词频率表并绘制单词云,以识别文本中出现的突出主题。最后,使用相关性的突出单词联想分析有助于获得围绕突出主题的上下文。
题库