R语言 生成单词云
词云 是一种用于表示文本数据的数据可视化技术,其中每个词的大小表示其频率或重要性。重要的文本数据点可以用词云来强调。词云被广泛用于分析社交网站的数据。
为什么使用词云?
人们应该使用词云来展示文本数据的原因是:
- 词云 增加了简单性和清晰性。最常用的关键词在词云中更显眼
- 词语云是 一种有效的交流工具。它们易于理解,易于分享,并具有影响力。
- 字云 在视觉上比表格数据更有吸引力。
R语言实现
以下是在R编程中创建词云的步骤。
第1步:创建一个文本文件
在一个纯文本文件(如:file.txt)中复制和粘贴文本,并保存该文件。
第2步:安装并加载所需的软件包
# install the required packages
install.packages("tm") # for text mining
install.packages("SnowballC") # for text stemming
install.packages("wordcloud") # word-cloud generator
install.packages("RColorBrewer") # color palettes
# load the packages
library("tm")
library("SnowballC")
library("wordcloud")
library("RColorBrewer")
第3步:文本挖掘
- 加载文本:
使用text mining(tm)软件包中的Corpus()函数加载文本。语料库是一个文档的列表。
-
从导入步骤1中创建的文本文件开始:
要导入保存在计算机中的文件,请输入以下R代码。你将被要求以交互方式选择文本文件。
text = readLines(file.choose())
- 将数据作为一个语料库加载:
# VectorSource() function
# creates a corpus of
# character vectors
docs = Corpus(VectorSource(text))
- 文本转换:
使用tm_map()函数进行转换,例如,替换文本中的特殊字符,如"@"、"#"、"/"
。
toSpace = content_transformer
(function (x, pattern)
gsub(pattern, " ", x))
docs1 = tm_map(docs, toSpace, "/")
docs1 = tm_map(docs, toSpace, "@")
docs1 = tm_map(docs, toSpace, "#")
-
清理文本:
使用tm_map()函数来删除不必要的空白,将文本转换为小写字母,删除常见的停顿词。数字可以用removeNumbers.来删除。
# Convert the text to lower case
docs1 = tm_map(docs1,
content_transformer(tolower))
# Remove numbers
docs1 = tm_map(docs1, removeNumbers)
# Remove white spaces
docs1 = tm_map(docs1, stripWhitespace)
第4步:建立一个术语-文档矩阵
文档矩阵是一个包含词的频率的表格。列名是词,行名是文档。可以使用文本挖掘包中的 TermDocumentMatrix() 函数,如下所示。
dtm = TermDocumentMatrix(docs)
m = as.matrix(dtm)
v = sort(rowSums(m), decreasing = TRUE)
d = data.frame(word = names(v), freq = v)
head(d, 10)
第5步:生成词云
词的重要性可以用词云来说明,如下所示。
wordcloud(words = dword,
freq = dfreq,
min.freq = 1,
max.words = 200,
random.order = FALSE,
rot.per = 0.35,
colors = brewer.pal(8, "Dark2"))
R语言云的完整代码如下。
# R program to illustrate
# Generating word cloud
# Install the required packages
install.packages("tm") # for text mining
install.packages("SnowballC") # for text stemming
install.packages("wordcloud") # word-cloud generator
install.packages("RColorBrewer") # color palettes
# Load the packages
library("tm")
library("SnowballC")
library("wordcloud")
library("RColorBrewer")
# To choose the text file
text = readLines(file.choose())
# VectorSource() function
# creates a corpus of
# character vectors
docs = Corpus(VectorSource(text))
# Text transformation
toSpace = content_transformer(
function (x, pattern)
gsub(pattern, " ", x))
docs1 = tm_map(docs, toSpace, "/")
docs1 = tm_map(docs, toSpace, "@")
docs1 = tm_map(docs, toSpace, "#")
strwrap(docs1)
# Cleaning the Text
docs1 = tm_map(docs1, content_transformer(tolower))
docs1 = tm_map(docs1, removeNumbers)
docs1 = tm_map(docs1, stripWhitespace)
# Build a term-document matrix
dtm = TermDocumentMatrix(docs)
m = as.matrix(dtm)
v = sort(rowSums(m),
decreasing = TRUE)
d = data.frame(word = names(v),
freq = v)
head(d, 10)
# Generate the Word cloud
wordcloud(words = dword,
freq = dfreq,
min.freq = 1,
max.words = 200,
random.order = FALSE,
rot.per = 0.35,
colors = brewer.pal(8, "Dark2"))
输出:
词语云的优势
- 分析客户和员工的反馈。
- 识别新的SEO关键词的目标。
- 词云是杀手级的可视化工具。它们以简单明了的格式呈现文本数据
- 词云是伟大的沟通工具。它们对任何希望交流基本见解的人来说都是非常方便的。
词汇云的缺点
- 词汇云并不完美地适用于所有情况。
- 数据应该根据上下文进行优化。
- 词汇云通常不能提供改善和发展业务所需的可操作性的见解。