使用 R 中的词云对文本数据进行可视化

发布日期:2026-06-25 05:43:03   来源 : 杭州电子商务研究院    浏览量 :13
杭州电子商务研究院 发布日期:2026-06-25 05:43:03  
13

介绍

可视化在探索性数据分析和特征工程中起着重要作用。然而,文本数据的可视化可能很棘手,因为它是非结构化的。词云提供了一个极好的选项,可以以标签或单词的形式可视化文本数据,其中单词的重要性由其频率确定。

在本指南中,您将获得使用流行的统计编程语言“R”通过词云可视化文本数据的重要知识。我们将从理解数据开始。

数据

本指南中使用的数据来自机器学习竞赛网站 Kaggle。这是一份女装电子商务数据,由客户撰写的评论组成。在本指南中,我们将对原始数据集进行抽样。抽样数据包含 500 行和三个变量,如下所述:

  1. 服装 ID:分类变量,指代正在评论的特定服装。这是一个唯一 ID。

  2. 评论文本:包含有关产品的评论的文本。这是一个字符串变量。

  3. 推荐 IND:二进制变量,表明客户推荐该产品(“1”)或不推荐该产品(“0”)。

让我们首先加载所需的库和数据。

      library(readr)
library(dplyr)
library(e1071)
library(mlbench)
 
#Text mining packages
library(tm)
library(SnowballC)
library("wordcloud")
library("RColorBrewer")
 
#loading the data
t1 <- read_csv("ml_text_data.csv")
glimpse(t1)
    

输出:

      Observations: 500
Variables: 3
$ Clothing_ID    	      <int> 1088, 996, 936, 856, 1047, 862, 194, 1117, 996...
$ Review_Text  	      <chr> "Yummy, soft material, but very faded looking....
$ Recommended_IND <int> 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
    

输出显示数据集有三个变量,但重要的是“Review_Text”变量。

为词云可视化准备数据

文本数据需要转换为可用于创建词云的格式。由于文本数据不是传统格式(行中的观察值和列中的变量),因此我们必须执行某些特定于文本的步骤。后续章节将讨论此类步骤的列表。

创建文本语料库

第一步是将包含文本的列转换为语料库以进行预处理。语料库是文档的集合。下面的第一行代码执行此任务,而第二行打印第一个语料库的内容。

      # Create corpus
corpus = Corpus(VectorSource(t1$Review_Text))
# Look at corpus
corpus[[1]][1]
    

输出:

      1] "Yummy
    

从输出结果来看,显然客户对产品不满意。

预处理文本

一旦创建了语料库,就必须执行文本清理和预处理步骤。这些步骤总结如下。

  1. 转换为小写:像“soft”和“Soft”这样的词应该被视为相同的词,因此必须将它们转换为小写。

  2. 删除标点符号:这里的想法是删除所有非标准数字或字母。

  3. 删除停用词:停用词是无用的词,例如“i”、“is”、“at”、“me”、“our”。因此,删除停用词非常重要。

  4. 词干提取:词干提取的理念是减少文本中出现的单词的屈折形式数量。例如,“argue”、“argued”、“arguing”、“argues”等单词被简化为它们的通用词干“argu”。这有助于减少词汇空间的大小。

  5. 消除多余的空格:这里的想法是从文本中去除空格。

下面的代码行执行上述步骤。

      #Conversion to Lowercase
corpus = tm_map(corpus, PlainTextDocument)
corpus = tm_map(corpus, tolower)
 
#Removing Punctuation
corpus = tm_map(corpus, removePunctuation)
 
#Remove stopwords
corpus = tm_map(corpus, removeWords, c("cloth", stopwords("english")))
 
# Stemming
corpus = tm_map(corpus, stemDocument)
 
# Eliminate white spaces
corpus = tm_map(corpus, stripWhitespace)
corpus[[1]][1]
    

输出:

      $content
[1] "yummi soft materi fade look much send back fade look someth like"
    

创建文档术语矩阵

文本预处理步骤已完成。现在,我们准备提取词频,用作标签,以构建词云。下面的代码行创建术语文档矩阵,最后将单词及其相应的频率存储在数据框“dat”中。head (dat,5)命令按频率打印语料库的前五个单词。

      DTM <- TermDocumentMatrix(corpus)
mat <- as.matrix(DTM)
f <- sort(rowSums(mat),decreasing=TRUE)
dat <- data.frame(word = names(f),freq=f)
head(dat, 5)
    

输出:

      word    freq
dress	286
look  	248
size  	241
fit     	221
love 	185
    

上面的输出显示,像“dress”、“look”、“size”这样的词是语料库中的热门词。考虑到这是与服装相关的数据,这并不奇怪。

词云生成

R 中的词云是使用wordcloud函数生成的。此函数的主要参数如下:

  1. words:要绘制的单词。

  2. freq:单词的频率。

  3. min.freq:一个参数,确保频率低于“min.freq”的单词不会绘制在词云中。

  4. max.words:要绘制的最大单词数。

  5. random.order:指定以随机顺序绘制单词的参数。如果为 false,则单词按频率递减的方式绘制。

  6. rot.per:旋转90度(垂直文本)的单词比例。

  7. colors:一个参数,指定单词从出现频率最低到最高的颜色。

我们将使用不同的参数构建词云,并直观地展示它们如何改变输出。

词云 1

第一个词云将使用强制参数“words”和“freq”,我们将设置“random.order = TRUE”。下面的第一行代码为结果的可重复性埋下了种子,而第二行则生成了词云。

      set.seed(100)
wordcloud(words = dat$word, freq = dat$freq, random.order=TRUE)
    

输出:

上面的输出表明,单词的显示顺序没有特定的顺序 - 升序或降序。突出的单词(如 dress、size、fit、perfect 或 fabric)代表语料库中出现频率最高的单词。

词云 2

现在,我们通过设置random.order = FALSE 来更改附加参数。生成的输出显示单词现在按频率递减的方式绘制,这意味着最频繁的单词位于词云的中心,而频率较低的单词距离中心较远。

      set.seed(100)
wordcloud(words = dat$word, freq = dat$freq, random.order=FALSE)
    

输出:

词云 3

前两个词云仅使用了一个附加参数“random.order”,但是,还有其他参数可以使用。我们现在将通过更改其他参数来创建词云,这在下面的代码行中完成。

      set.seed(100)
wordcloud(words = dat$word, freq = dat$freq, min.freq = 3, max.words=250, random.order=FALSE, rot.per=0.30, colors=brewer.pal(8, "Dark2"))
    

输出现在具有不同的颜色,根据语料库中单词的频率显示。其他参数也改变了词云的外观。

结论

在本指南中,我们探讨了如何构建词云以及可以更改以改善其外观的重要参数。您还了解了生成词云所需的清理和准备文本。最后,您还学习了如何识别词云中最常见和最不常见的单词。要了解有关使用 R 进行文本分析和数据科学的更多信息,请参阅以下指南:

  1. 使用 R 对文本数据进行机器学习

  2. 使用 R 的描述性统计解释数据

  3. 使用 R 统计模型解释数据

  4. 使用 R 进行时间序列预测

  5. 假设检验 - 用统计模型解释数据

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据