一、案例描述:

本案例基于python与R语言,对豆瓣某电影短评进行简单情感分析:

实现:

(一)、基于python爬取豆瓣电影短评500条;

[由于豆瓣的反爬措施,用户需登陆后才能爬取到500条评论]

(爬取方法:1、使用selenium爬取;

2、复制登录后的cookies,使用requests库爬取);

(二)、基于R语言进行文本读取、清洗、分词、情感打分、可视化;

本案例的代码、数据集、情感词典、停用词请关注私信领取

二、实操过程:

本案例基于两部分展开:

(一)数据获取:

【cookies为用户自行登录后,于google浏览器的netWord监督组件中获取】

文本挖掘和语义挖掘(R文本挖掘情感分析)(1)

1、数据爬取代码如下:

文本挖掘和语义挖掘(R文本挖掘情感分析)(2)

(二)、基于R语言对数据进行情感打分:

1、基于R语言对评论数据进行简单的情感分析:

实操过程中发现:繁体字对情感打分的影响、停用词、切词效果对语句情感得分的影响;

2、过程:数据读取、数据清洗、词典导入、分词、情感打分、词云图;

2.1:数据导入:

在使用R导入数据之前,需用excel将评论中的繁体字评论转为简体;

文本挖掘和语义挖掘(R文本挖掘情感分析)(3)

2.2数据清洗:

本案例的数据清洗部分仅去除评论中的不可见字符【空格、换行符、制表符等】

文本挖掘和语义挖掘(R文本挖掘情感分析)(4)

2.3词典导入:

文本挖掘和语义挖掘(R文本挖掘情感分析)(5)

2.4分词:

文本挖掘和语义挖掘(R文本挖掘情感分析)(6)

2.5情感打分:

文本挖掘和语义挖掘(R文本挖掘情感分析)(7)

2.6绘制词云图:

文本挖掘和语义挖掘(R文本挖掘情感分析)(8)

Wordfreq:

文本挖掘和语义挖掘(R文本挖掘情感分析)(9)

词云图:

文本挖掘和语义挖掘(R文本挖掘情感分析)(10)

三、总结:

1、案例仅简单对评论数据进行情感打分,局限性在于未对评论中的英文评论进行处理;

2、实操过程中发现停用词、切词效果对语句情感得分影响较大;

[停用词中包含停止词]

3、效果图:

文本挖掘和语义挖掘(R文本挖掘情感分析)(11)

感谢您的阅读!

附:完整代码:

#--------------载入所需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初识

,