前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >文本挖掘:手把手教你分析携程网评论数据

文本挖掘:手把手教你分析携程网评论数据

作者头像
机器学习AI算法工程
发布于 2018-03-13 08:16:28
发布于 2018-03-13 08:16:28
1.2K0
举报

作者:飘雪

http://www.itongji.cn/cms/article/articledetails?articleid=1114

中文文本挖掘包tm、tmcn、Rwordseg、Rweibo的安装

http://blog.csdn.net/andy_henry/article/details/25929019

文本分析的应用越来越广泛,这不,我的工作也开始涉及了文本分析,今天就讲讲关于评论数据的那点事。

首先评论数据如何获取?

一般通过网络爬虫的方式抓取各大网站的评论数据,本次分析数据就来源于携程网某酒店的评论,在同事的协助下,成功爬取该酒店的评论数据,于是我开始使用这些数据做相关的分析。

本次文本分析中需要使用如下3个包

1)Rwordseg包用于分词

2)tmcn用于词频统计

3)wordcloud用于绘制文字云

library(Rwordseg)

library(tmcn)

library(wordcloud)

#读取数据

Evaluation <- read.csv(file = file.choose(), encoding = 'UFT-8')

#剔除评论数据中含有的英文和数字

text <- gsub('[a-zA-Z0-9]','',Evaluation$Evaluation)

#分词

segword <- segmentCN(strwords = text)

#查看第一条评论的分词效果

segword[1]

从上图的结果中发现,经分割后的词中有许多无意义的停止词,如“是”,“只”,“了”,“也”等,这些词是需要剔除的。关于停止词,可以到网上搜索获取。

#读取停止词

mystopwords <- read.table(file = file.choose(), stringsAsFactors = FALSE)

head(mystopwords)

class(mystopwords)

由于读入的数据为数据框格式,需要将其转换为向量格式,即:

mystopwords <- as.vector(mystopwords[,1])

head(mystopwords)

现在有了停止词词库,接下来需要将分割后的词与停止词词库进行比对,将含有停止词的词进行剔除。下面是自定义删除停止词的函数:

removewords <- function(target_words,stop_words){

target_words = target_words[target_words%in%stop_words==FALSE]

return(target_words)

}

#将该函数应用到已分割的词中

segword2 <- sapply(X = segword, FUN = removewords, mystopwords)

#查看已删除后的分词结果

segword2[[1]]

从上图中显示,一些无意义的停止词已经被剔除,下面就使用比较干净的词绘制文字云,以大致查看分词效果。

word_freq <- getWordFreq(string = unlist(segword2))

opar <- par(no.readonly = TRUE)

par(bg = 'black')

#绘制出现频率最高的前50个词

wordcloud(words = word_freq$Word, freq = word_freq$Freq, max.words = 50,

random.color = TRUE, colors = rainbow(n = 7))

par(opar)

发现“不错”这个词非常明显,但到底是什么不错呢?下面来看一看都是哪些评论包含不错这样的字眼。

#根据频繁出现词汇,还原初始评价

index <- NULL

for(i in 1:length(segword)){

if (any(segword[[i]] %in% '不错') == TRUE)

index = unique(c(index, i))

}

text[index]

含有“不错”字眼的评论有658条,这就需要人为干涉,将这些“不错”进行简化并组成词典

这是一个非常繁工的过程,需要耐心的查看这些评论中都是怎么表达的情感的。经过约3个小时的人为选词(不断反复查看),将这些词组成词典,并导入为自定义词汇。(可能该方法比较笨拙,如有更好的方法,还请看官指导)。

#自定义词汇

words <- c('房间干净','服务不错','酒店不错','不错的酒店','不错的地方','卫生不错','设施不错','设备不错','硬件不错','位置不错','地段不错','景色不错','景观不错','环境不错','风景不错','视野不错','夜景不错','口味不错','味道不错','感觉不错','态度不错','态度冷漠','态度冷淡','服务差劲','热情','热心','不热情','态度好','态度差','态度不好','素质差','质量不错','房间不错','浴缸不错','早餐不错','早餐质量差','自助餐不错','下午茶不错','强烈推荐','推荐入住','值得推荐','性价比不错','隔音不错','体验不错','不错的体验','设施陈旧','五星级酒店','性价比不错','交通便利','交通方便','出行方便','房间小','价格不错','前台效率太低','携程','地理位置','陆家嘴')

#插入自定义词汇

insertWords(strwords = words)

由于上面的词汇都是经过简化而成的,而原始评论可能是:“房间很干净”,“服务还是蛮不错的”,“酒店真心不错”等,所以就需要剔除这些干扰分词的词(“还是”,“蛮”,“真心”,“的”等)。

#根据业务情况、需要在原始评论中删除的字和词

pattern <- c('还是','很也','了','点','可以','还','是','真心','都','相当','大家','确实','挺','非常','应该','蛮','整体','里面','就','实在','总体','听说','有点','比较','质量','都是','够','十分','还算','极其','也算','方面','太','算是')

#将这些词组成“正则表达式”

pattern2 <- paste("[",paste(pattern,collapse = ','),"]", sep = '')

#剔除原始评论中含有的这些干扰词汇

text2 <- gsub(pattern = pattern2, replacement = '', x = text)

好,经过清洗后,原始的评论相对简介而干净,下面对其进一步分词,记住,之前已经构建了自定义词汇,他会产生指定组合的词,如“酒店”,“不错”两个词组合为“酒店不错”。

#分词

segword3 <- segmentCN(strwords = text2)

head(segword3)

#新建停止词

stopwords_v2 <- c('不错','酒店','交通','前台','出差','价','去','免费','入','入住','大道','吃','退','上海','说','床','态度','升级','地理','很好','号','住','服务员','房间','服务','设施','环境','位置')

#创建新添加的停止词

mystopwords <- c(mystopwords,stopwords_v2)

#排除停止词

segword4 <- sapply(X = segword3, FUN = removewords, mystopwords)

#查看已删除后的分词结果

segword4[[1]]

根据上面的分词结果,再一次绘制文字云,具体如下:

word_freq2 <- getWordFreq(string = unlist(segword4))

opar <- par(no.readonly = TRUE)

par(bg = 'black')

#绘制出现频率最高的前50个词

wordcloud(words = word_freq2$Word, freq = word_freq2$Freq, scale = c(4,0.1), max.words = 50, random.color = TRUE, colors = rainbow(n = 7))

par(opar)

发现还是有一些词影响了其真实情况,如“早餐”,"房"等,需要进一步将其纳入停止词,因为这些词之前已经被组合成其他词汇。

#再一次清除停止词

stopwords_v3 <- c('早餐','嘴','电话','订','楼','人员','钟','修','办理','客人','品种','朋友','带','出门','房','影响','硬件','感觉','想','验','洁','希望','送')

segword5 <- sapply(X = segword4, FUN = removewords, stopwords_v3)

#查看已删除后的分词结果

segword5[[1]]

根据这次剔除的停止词,我们再绘制一次文字云:

word_freq3 <- getWordFreq(string = unlist(segword5))

opar <- par(no.readonly = TRUE)

par(bg = "black")

#绘制出现频率最高的前50个词

wordcloud(words = word_freq3$Word, freq = word_freq3$Freq, scale = c(4,0.1), max.words = 50,random.color = TRUE, colors = rainbow(n = 7))

par(opar)

发现文字云中含有相同意思的词汇,如“推荐”和“值得推荐”,这就要将这样的词汇合并为一个词汇,具体如下

#将推荐和值得推荐合并

segword6 <- unlist(segword5)

segword6[segword6 == '推荐'] <- '值得推荐'

#重新绘制文字云

word_freq4 <- getWordFreq(string = unlist(segword6))

opar <- par(no.readonly = TRUE)

par(bg = "black")

#绘制出现频率最高的前50个词

wordcloud(words = word_freq4$Word, freq = word_freq4$Freq, scale = c(4,0.1), max.words = 50, random.order = F, random.color = T, colors = rainbow(n = 7))

par(opar)

上面使用R的wordcloud包绘制文字云,也可以使用工具tagxedo绘制,绘制之前需要将txt文件输入该工具中,该工具的使用可至网站:

http://www.tagxedo.com

#将前50的词频写出到txt文件

write.table(head(word_freq4,50),'word_freq.txt', row.names = FALSE, sep = ' ', quote = FALSE)

在同事的热心帮助下,使用工具tagxedo绘制的个性化文字云,文字云以房子的形状为背景:

结论:

从文字云的返回结果可知:

1) 总体评价是比较满意的,如:服务不错、环境不错、酒店不错、满意等

2) 酒店附近有地铁,说明交通便利

3) “携程”,说明房客中的一部分来源于携程

4) 当然也有一些负面评价,如“不便”,“施工”,“修路”等

5) 最后,房客觉得这家酒店非常值得推荐,间接将给酒店带来额外客户

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据挖掘DT数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用R进行网站评论文本挖掘聚类
对于非结构化的网站中文评论信息,r的中文词频包可能是用来挖掘其潜在信息的好工具,要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本
机器学习AI算法工程
2018/03/14
1.4K0
用R进行网站评论文本挖掘聚类
用R语言进行网站评论文本挖掘聚类|附代码数据
对于非结构化的网站中文评论信息,r的中文词频包可能是用来挖掘其潜在信息的好工具,要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词语提取后,还可以做成词云,让词语的频率属性可视化,更加直观清晰。
拓端
2023/09/01
3460
R文本挖掘-中文分词Rwordseg
本文主要介绍了如何使用 R 语言对中文文本进行分词和词频统计。首先介绍了 R 语言中的 tm 包和 Rwordseg 包,然后通过一个示例展示了如何使用这两个包进行中文分词和词频统计。最后,介绍了一些常用的分词方法,并给出了一个使用 wordcloud 包进行词云展示的示例。
Erin
2018/01/09
1.7K0
R文本挖掘-中文分词Rwordseg
数据挖掘:手把手教你做文本挖掘
文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法。文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无监督的挖掘算法。
IT阅读排行榜
2018/08/16
9430
数据挖掘:手把手教你做文本挖掘
R&Python玩家诉求词云分析
作者:Fish http://www.gamedas.com 一、数据爬虫 在实际工作中,数据的来源不能局限于自家的数据库或者成型的后台,在做某些市场分析或是竞争对手开服节奏分析的情况下,对竞争对手数据的获得显得更为至关重要,本文就以获取某大平台开服数据作为一个案例,简要的介绍另一种获取数据的方法,网络爬虫技术。 何为网络爬虫,爬虫是一个自动提取网页的程序,为搜索引擎在万维网上下载网页,是搜索引擎的重要组成部分。简单的讲就是从一个或若干个初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断
机器学习AI算法工程
2018/03/13
1.2K0
R&Python玩家诉求词云分析
案例 | R语言数据挖掘实战:电商评论情感分析
随着网上购物的流行,各大电商竞争激烈,为了提高客户服务质量,除了打价格战外,了解客户的需求点,倾听客户的心声也越来越重要,其中重要的方式 就是对消费者的文本评论进行数据挖掘.今天通过学习《R语言数据挖掘实战》之案例:电商评论与数据分析,从目标到操作内容分享给大家。 本文的结构如下 1.要达到的目标 通过对客户的评论,进行一系列的方法进行分析,得出客户对于某个商品的各方面的态度和情感倾向,以及客户注重商品的哪些属性,商品的优点和缺点分别是什么,商品的
CDA数据分析师
2018/02/08
5.5K0
案例 | R语言数据挖掘实战:电商评论情感分析
Python数据挖掘-NLTK文本分析+jieba中文文本挖掘
NLTK的全称是natural language toolkit,是一套基于python的自然语言处理工具集。
用户7886150
2021/01/15
3.1K0
R语言之中文分词:实例
#调入分词的库 library("rJava") library("Rwordseg") #调入绘制词云的库 library("RColorBrewer") library("wordcloud")     #读入数据(特别注意,read.csv竟然可以读取txt的文本) myfile<-read.csv(file.choose(),header=FALSE) #预处理,这步可以将读入的文本转换为可以分词的字符,没有这步不能分词 myfile.res <- myfile[myfile!=" "]     #分词,并将分词结果转换为向量 myfile.words <- unlist(lapply(X = myfile.res,FUN = segmentCN)) #剔除URL等各种不需要的字符,还需要删除什么特殊的字符可以依样画葫芦在下面增加gsub的语句 myfile.words <- gsub(pattern="http:[a-zA-Z\\/\\.0-9]+","",myfile.words) myfile.words <- gsub("\n","",myfile.words) myfile.words <- gsub(" ","",myfile.words) #去掉停用词 data_stw=read.table(file=file.choose(),colClasses="character") stopwords_CN=c(NULL) for(i in 1:dim(data_stw)[1]){ stopwords_CN=c(stopwords_CN,data_stw[i,1]) } for(j in 1:length(stopwords_CN)){ myfile.words <- subset(myfile.words,myfile.words!=stopwords_CN[j]) } #过滤掉1个字的词 myfile.words <- subset(myfile.words, nchar(as.character(myfile.words))>1) #统计词频 myfile.freq <- table(unlist(myfile.words)) myfile.freq <- rev(sort(myfile.freq)) #myfile.freq <- data.frame(word=names(myfile.freq),freq=myfile.freq); #按词频过滤词,过滤掉只出现过一次的词,这里可以根据需要调整过滤的词频数 #特别提示:此处注意myfile.freq$Freq大小写 myfile.freq2=subset(myfile.freq, myfile.freq$Freq>=10)     #绘制词云 #设置一个颜色系: mycolors <- brewer.pal(8,"Dark2") #设置字体 windowsFonts(myFont=windowsFont("微软雅黑")) #画图 wordcloud(myfile.freq2$word,myfile.freq2$Freq,min.freq=10,max.words=Inf,random.order=FALSE, random.color=FALSE,colors=mycolors,family="myFont")
数据饕餮
2019/01/14
8300
【R干货】电影《王的盛宴》豆瓣短评浅析(含全部实现程序)
本文大纲: 问题背景 数据获取 数据信息描述 分词分析 短评文本词汇关联分析 存在的问题 用的到R package有: Rwordseg:中文分词 wordcloud:词频可视化 arules & arules :关联分析及可视化 1. 问题背景 《王的盛宴》上映后,网络评论呈现两极化趋势,而负责该片宣传方则认为这其中暗藏“水军”搅局,为了挽回口碑,雇佣水军在豆瓣刷分。双方水军对战如何,只有获取到原始数据才能一探究竟。本文获取到豆瓣关于《王的盛宴》影评部分数据,并作简要分析。 2. 数据获取 数据的获
小莹莹
2018/04/19
1.1K0
【R干货】电影《王的盛宴》豆瓣短评浅析(含全部实现程序)
文本挖掘——TCGA project文章的词云
http://www.sthda.com/english/wiki/text-mining-and-word-cloud-fundamentals-in-r-5-simple-steps-you-should-know
DoubleHelix
2021/09/29
8970
文本挖掘——TCGA project文章的词云
require(Rwordseg)分析案例展示(未去冠词以及无意义的词)
   看网络上很多朋友都在用“Rwordseg”程序包进行分词练习。我也忍不住进行了一次实验。 首先,肯定是装程序包了,个人感觉是废话,纯凑字数。      如下是我进行的联系,在网上找了一篇关于范爷的专访,看看能看出来什么吧。 =========================================================================== #第一步,文本分词 require(Rwordseg) test<- readLines("E:\\FBB1.txt",encoding='UTF-8')     #读取数据 res = test[test != " "]      #读取test,且剔除test=“ ” words = unlist(lapply(X = res,FUN = segmentCN))   #分词,并调整表结构,将有相同词频的词归类 word = lapply(X = words,FUN = strsplit," ")       #给每个词根据顺序赋个顺序指 v = table(unlist(word))               #重建表 v = sort(v,deceasing=T)           #降序排列 v[1:100] head(v)                                           #给每列字段赋标题 d = data.frame(word = names(v),freq = v)         #更改标题 write.csv(d,"E:\\学习.csv",header = T)          #导出数据,为下一步做准备 #第二部,做文本云图 require(wordcloud) dd = tail(d,150)       #取数据框的最后150行数据 op = par(bg = "lightyellow")      #背景为亮黄色 #rainbowLevels = rainbow((dd$freq)/(max(dd$freq) - 10))      #不知道什么意义,删除后图形无太大变化 wordcloud(dd$word, dd$freq, col = rainbow(length(d$freq))) par(op) ===================================================================================== 成图
学到老
2019/02/14
4170
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。
拓端
2023/05/06
2070
基于PubMed数据库挖掘研究最多的基因与以及有关某基因发表了多少篇文献?这些文献有什么特点???
如果我们想探索一下什么基因研究的最多,那就是检索pubmed数据库资源。在 NCBI的ftp里面关于人的一些基因信息 :
DoubleHelix
2022/11/24
8530
基于PubMed数据库挖掘研究最多的基因与以及有关某基因发表了多少篇文献?这些文献有什么特点???
【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦、汽车口碑数据采集词云可视化
作为数据科学家,我们始终关注如何从非结构化数据中提取高价值信息。本专题合集聚焦企业年报的文本分析技术,通过Python与R语言实战案例,系统展示如何利用自然语言处理(NLP)技术量化企业年报的情感倾向。以10家上市银行2010-2022年的130份年报为研究对象,我们构建了包含停用词过滤、情感词典匹配、LSTM神经网络分类等完整技术链路,最终生成可量化的乐观指标矩阵(点击文末“阅读原文”获取完整代码、数据、文档)。
拓端
2025/03/18
1760
【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦、汽车口碑数据采集词云可视化
文本挖掘(一)python jieba+wordcloud使用笔记+词云分析应用
  系列介绍:文本挖掘比较常见,系列思路:1-基本情况介绍(分词,词云展示);2-根据语料库的tf-idf值及创建自己的idf文件;3-基于snownlp语料情感分析;4-基于gensim进行lda主题挖掘分析;
forxtz
2021/03/11
1.8K0
文本挖掘(一)python jieba+wordcloud使用笔记+词云分析应用
手把手:R语言文本挖掘和词云可视化实践
感谢eBDA工作室的投稿! eBDA工作室是植根于运营商的一支数据分析团队,是由一群喜欢数据分析和创新的小伙伴组成的,成立两年以来,我们在底层数据存储HDFS/ORCFile,计算框架和资源管理MapReduce/Storm/Spark/Yarn,到数据分析工具Hive/Pig/R/Spss,数据集成Flume/Kafka,再到可视化工具Tableau/Echarts都有所涉猎,我们非常希望通过大数据文摘这个平台认识更多的朋友,充分交流,共同进步! 大数据文摘欢迎类似干货投稿,投稿请加微信202767192
大数据文摘
2018/05/21
1.5K0
用Python手把手教你WordCloud可视化
WordCloud是一种数据可视化技术,通过根据文本中单词的频率或权重来生成一个视觉上吸引人的词云图。在词云图中,单词的大小和颜色通常与其在文本中的出现频率相关,频率越高的单词显示得越大、越醒目。
一个风轻云淡
2023/11/30
7260
Python数据分析:揭秘_黑神话:悟空_Steam用户评论趋势
"黑神话:悟空"是一款以中国古典名著《西游记》为背景的动作角色扮演游戏。自公布以来,就因其精美的画面和流畅的战斗系统受到了广泛关注。然而,要真正理解玩家的反馈,我们需要深入分析Steam上的用户评论。Python作为一种强大的编程语言,提供了多种库和工具来帮助我们进行文本分析和数据可视化,从而揭示评论中的热点话题。
小白学大数据
2024/11/23
2660
R语言聚类、文本挖掘分析虚假电商评论数据:K-Means(K-均值)、层次聚类、词云可视化
聚类分析是一种常见的数据挖掘方法,已经广泛地应用在模式识别、图像处理分析、地理研究以及市场需求分析。本文主要研究聚类分析算法K-means在电商评论数据中的应用,挖掘出虚假的评论数据。
拓端
2023/05/24
6260
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。
拓端
2023/08/17
2620
推荐阅读
用R进行网站评论文本挖掘聚类
1.4K0
用R语言进行网站评论文本挖掘聚类|附代码数据
3460
R文本挖掘-中文分词Rwordseg
1.7K0
数据挖掘:手把手教你做文本挖掘
9430
R&Python玩家诉求词云分析
1.2K0
案例 | R语言数据挖掘实战:电商评论情感分析
5.5K0
Python数据挖掘-NLTK文本分析+jieba中文文本挖掘
3.1K0
R语言之中文分词:实例
8300
【R干货】电影《王的盛宴》豆瓣短评浅析(含全部实现程序)
1.1K0
文本挖掘——TCGA project文章的词云
8970
require(Rwordseg)分析案例展示(未去冠词以及无意义的词)
4170
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化
2070
基于PubMed数据库挖掘研究最多的基因与以及有关某基因发表了多少篇文献?这些文献有什么特点???
8530
【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦、汽车口碑数据采集词云可视化
1760
文本挖掘(一)python jieba+wordcloud使用笔记+词云分析应用
1.8K0
手把手:R语言文本挖掘和词云可视化实践
1.5K0
用Python手把手教你WordCloud可视化
7260
Python数据分析:揭秘_黑神话:悟空_Steam用户评论趋势
2660
R语言聚类、文本挖掘分析虚假电商评论数据:K-Means(K-均值)、层次聚类、词云可视化
6260
R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
2620
相关推荐
用R进行网站评论文本挖掘聚类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档