文本分析是处理原始信息以提取有意义见解的科学。这些原始信息可以来自多种来源。例如,考虑一家现代跨国银行,它希望利用所有可用信息来推动最佳策略。银行有哪些信息来源呢?
1. 银行向不同客户发行不同产品。这些信息被输入系统,可用于定位新客户、服务现有客户和制定客户层面的策略。
2. 银行客户每天进行数百万笔交易。这些交易发生在哪里、何时发生以及交易金额是多少,这些信息帮助银行了解他们的客户。
还有其他行为变量(例如取款模式),这些变量可以为银行提供有价值的数据,帮助银行构建最佳策略。这种分析使银行在目标客户、产品和时间上具有竞争优势。但是,鉴于目前每个竞争对手都使用类似的工具和数据,分析已经成为更多的卫生因素而不是竞争优势。为了重新获得优势,银行必须找到更多的数据来源和更复杂的工具来处理这些数据。讨论的所有数据都是结构化数据。银行还可以使用另外两种类型的数据来推动有洞察力的信息。
1. 系统数据:考虑一个在柜台办理交易的出纳员。每次他完成交易时,系统都会创建一个日志。这种类型的数据称为系统数据。它在体积上显然是巨大的,但在许多银行中仍未被充分利用。如果分析这些数据,可以优化分行的出纳员数量或提高每个分行的效率。
文本挖掘需要一些特殊的包,这些包可能没有预装在R软件上。需要安装自然语言处理包以加载名为tm和SnowballC的库。按照盒子中写的指示安装所需的包。
install.packages("ctv")
library("ctv")
install.views("NaturalLanguageProcessing")
以下是在一堆文本文件上创建词云的逐步算法。为了简单起见,使用.txt格式的文件。
步骤1:识别并创建要转换为云的文本文件。第一步是识别并创建想要创建词云的文本文件。将这些文件存储在位置“./corpus/target”。确保此位置没有其他文件。可以使用任何位置进行此练习,但为了简单起见,第一次尝试时请使用此位置。
步骤2:从文本文件集合创建语料库。第二步是将这些文本文件转换为R可读格式。TM包和其他文本挖掘包在一种称为语料库的格式上操作。语料库只是以R软件可读格式存储文档集合的一种方式。
cname <- file.path(".","corpus","target")
library (tm)
docs <- Corpus(DirSource(cname))
步骤3:对文本文件进行数据处理。这是整个过程中最关键一步。在这里,将通过选择一些构建句子意义或情感的关键词来解码文本文件。R使这一步变得非常简单。在这里将进行3个重要的转换。
i. 将“/”或“@”等符号替换为空白空间
ii. 删除“a”、“an”、“the”、“I”、“He”和数字等词。这是为了删除这些常见词引起的偏差。
iii. 删除标点符号,最后删除空格。注意不将这些替换为空白,因为从语法上讲它们将有额外的空白。
library (SnowballC)
for (j in seq(docs))
{
docs[[j]] <- gsub("/"," ",docs[[j]])
docs[[j]] <- gsub("@"," ",docs[[j]])
}
docs <- tm_map(docs,tolower)
docs <- tm_map(docs,removeWords, stopwords("english"))
docs <- tm_map(docs,removeNumbers)
docs <- tm_map(docs,removePunctuation)
docs <- tm_map(docs,stripWhitespace)
步骤4:从文本文件创建结构化数据。现在是将整个语料库转换为结构化数据集的时候了。注意已经删除了所有填充词。这是通过R中的“DocumentTermMatrix”命令完成的。在R会话中执行以下行以进行此转换。
dtm <- DocumentTermMatrix(docs)
步骤5:使用数据的结构化形式制作词云。一旦有了文本文件内容的结构化格式,现在就制作一个词及其频率的矩阵。这个矩阵最终将被放入构建词云的函数中。
library(wordcloud)
m <- as.matrix(dtm)
v <- sort(colSums(m),decreasing=TRUE)
head(v,14)
words <- names(v)
d <- data.frame(word=words, freq=v)
wordcloud(d$word,d$freq,min.freq=50)
文本挖掘涉及单词之间的关系以及由这些单词的组合及其关系所构成的情感分析。结构化数据具有定义的变量数量,所有分析都是通过找出这些变量之间的相关性来完成的。但在文本挖掘中,关系是在文本中出现的所有单词之间找到的。这就是为什么文本挖掘在当今行业中很少被使用的原因。但R提供了这样的工具,使这种分析变得更加简单。本文只涵盖了冰山一角。在即将到来的文章中,将介绍分析非结构化数据的框架。
觉得这篇文章有趣吗?之前做过文本挖掘吗?使用R进行文本挖掘还是使用其他软件?请告诉R用于文本挖掘的其他有趣功能。