日记大全

日记大全 > 句子大全

R文本挖掘:情感分析

句子大全 2014-07-17 13:19:17
相关推荐

一、案例描述:

本案例基于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,blank.lines.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<-1pos1$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<--1neg1$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% ygetscore <- function(x,pwords,nwords){pos.weight = sapply(llply(x,fun,pwords),sum)neg.weight = sapply(llply(x,fun,nwords),sum)total = pos.weight - neg.weightreturn(data.frame(pos.weight,neg.weight, total))}score1 <- getscore(segwords, pos$words, neg$words)#将得分与评论合并到一起:aevalu_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初识

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新