文本挖掘和语义挖掘(R文本挖掘情感分析)
一、案例描述:
本案例基于python与R语言,对豆瓣某电影短评进行简单情感分析:
实现:
(一)、基于python爬取豆瓣电影短评500条;
[由于豆瓣的反爬措施,用户需登陆后才能爬取到500条评论]
(爬取方法:1、使用selenium爬取;
2、复制登录后的cookies,使用requests库爬取);
(二)、基于R语言进行文本读取、清洗、分词、情感打分、可视化;
本案例的代码、数据集、情感词典、停用词请关注私信领取
二、实操过程:
本案例基于两部分展开:
(一)数据获取:
【cookies为用户自行登录后,于google浏览器的netWord监督组件中获取】
1、数据爬取代码如下:
(二)、基于R语言对数据进行情感打分:
1、基于R语言对评论数据进行简单的情感分析:
实操过程中发现:繁体字对情感打分的影响、停用词、切词效果对语句情感得分的影响;
2、过程:数据读取、数据清洗、词典导入、分词、情感打分、词云图;
2.1:数据导入:
在使用R导入数据之前,需用excel将评论中的繁体字评论转为简体;
2.2数据清洗:
本案例的数据清洗部分仅去除评论中的不可见字符【空格、换行符、制表符等】
2.3词典导入:
2.4分词:
2.5情感打分:
2.6绘制词云图:
Wordfreq:
词云图:
三、总结:
1、案例仅简单对评论数据进行情感打分,局限性在于未对评论中的英文评论进行处理;
2、实操过程中发现停用词、切词效果对语句情感得分影响较大;
[停用词中包含停止词]
3、效果图:
感谢您的阅读!
附:完整代码:
#--------------载入所需R包:
library(pacman)
p_load(readr,jiebaR,jiebaRD,plyr,stringr,stringi,ggplot2,wordcloud2)
#-----------------步骤一:数据读取-------------------
text <- read.table("D:/a情感分析/text1.csv", dec = ",", sep = ",",stringsAsFactors = FALSE, header = TRUE,
blanknes.skip = TRUE)
str(text) #查看数据类型;
#------------------步骤二:数据清洗------------------:
#这里仅仅简单清理了下空格(包含换行符、制表符等)
text$comment<- as.character(sapply(text$comment, str_replace_all, '[\\s]*', ''))
#------------------步骤三:读取情感词典--------------:
#正负词典中包含文本和得分,负向我标记为-1,正向我标记为1.
pos <- read.table("D:/a情感分析/tsinghua.positive.gb.txt",
header = F,
stringsAsFactors = F,strip.white = T,skip = 1,col.names = "words")
pos1 <- read.table("D:/a情感分析/正面评价词语(中文).txt",
header = F,
stringsAsFactors = F,strip.white = T,skip = 1,col.names = "words")
pos$weight<-1
pos1$weight<-1 #对正面情感词、评价词打分;
#合并正面情感词、评价词:
positive<-rbind(pos,pos1)
neg <- read.table("D:/a情感分析/tsinghua.negative.gb.txt",
header = F,
stringsAsFactors = F,strip.white = T,skip = 1,col.names = "words")
neg1 <- read.table("D:/a情感分析/负面评价词语(中文).txt",
header = F,
stringsAsFactors = F,strip.white = T,skip = 1,col.names = "words")
neg$weight<--1
neg1$weight<--1
#合并负面情感词、评价词:
negative<-rbind(neg,neg1)
#合并正、负情感词典,赋值给mydict对象:
mydict<-c(positive,negative)
#-----------------------步骤四:分词-----------------:
engine<-worker(stop_word = "D:/a情感分析/chineseStopWords.txt") #设置分词引擎;
#将词典添加进引擎
new_user_word(engine, mydict$words)
#分词
segwords <- llply(text$comment, segment, engine)
str(segwords) #查看分词;
#-----------------------步骤五:情感打分--------------
#自定义情感函数
fun <- function(x,y) x%in% y
getscore <- function(x,pwords,nwords){
pos.weight = sapply(llply(x,fun,pwords),sum)
neg.weight = sapply(llply(x,fun,nwords),sum)
total = pos.weight - neg.weight
return(data.frame(pos.weight,neg.weight, total))
}
score1 <- getscore(segwords, pos$words, neg$words)
#将得分与评论合并到一起:a
evalu_score1<- cbind(text, score1)
#判断得分是否大于1,赋予相应标签:
evalu.score1 <- transform(evalu_score1,
emotion = ifelse(evalu_score1$total> 0, 'Pos', 'Neg'))
#查看效果:
View(evalu.score1)
# 计算词频
wordfreq <- unlist(segwords)
wordfreq <- as.data.frame(table(wordfreq ))
wordfreq <- arrange(wordfreq , desc(Freq))#排序
head(wordfreq)
write.csv(wordfreq,"D:/wordart.csv")
# 绘制词云:
wordcloud2(wordfreq,size=1,shape='star')
本文转载自学习使我快乐,请支持原创!
感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请关注后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞转发。
也欢迎大家的意见和建议。
如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、论文、报告、考试等发愁,如果你在使用SPSS,R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。
如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取最详细和耐心的指导。
If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #reports, #composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.
Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??
Then Contact Me. I will solve your Problem...
加油吧,打工人!
往期内容:R文本挖掘:文本聚类分析
R文本挖掘:中文文本聚类
R文本挖掘:中文词云生成
R文本挖掘:社会网络分析
R文本挖掘:文本主题分析topic analysis
R文本挖掘:手把手教你做词云图,小白教程
R文本挖掘:词云图怎么做,worldcloud2初识
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com