NLP
本案例大纲:
1、分词函数简介
2、绘制词云-----以红楼梦为例
3、情感分析-----美国选举辩论文本为例
4、代码展示
1、分词函数简介
      segmentCN(x,nosymbol,nature)为分词函数,其中x为需要分词的文本,nosymbol表示输出标点符号,nature表示输出拼音。    segment.options("isNameRecognition"),设置识别人名。实例可见于第4部分的代码。
2、绘制词云-----以红楼梦为例
      对文本进行分词以后,统计词频,绘制词云图,主要用到wordcloud2包。
3、情感分析-----美国选举辩论文本为例
     主要是Rsentiment包,专门针对英文文本进行情感分析,不需要先进行分词,其中calculate_sentiment函数将情感分为六类,统计所需分析的文本的情感类别的文本数,calculate_score函数给出每个句子的情感分数,正数代表积极情感,负数代表消极情感,0为中性,calculate_total_presence_sentiment函数计算各种情绪类型的句子个数。
4、代码示例
library(stringr)
library(readr)
library(wordcloud)
library(tm)
library(SnowballC)
library(RSentiment)#英文文本情感分析,不需要进行分词
library(data.table)
library(DT)
library(ggplot2)
library(Rwordseg)
#(1)分词函数的简单示例
test<-"我爱天安门,天安门上太阳升"
segmentCN(test)#分词
segmentCN(test,nosymbol=F)#设置输出标点符号
segmentCN(test,nature=T)#设置标注拼音
test2<-"梅超风是梅花岛岛主"
segment.options("isNameRecognition")#设置识别人名
segmentCN(test2)
#(2)对红楼梦文本构建词云
htm.txt<-readLines('D:\\R语言kaggle案例实战\\Kaggle第七课\\本节课数据集及部分代码\\红楼梦.txt')
hlm.seg<-segmentCN(htm.txt)#分词
hlm.freq<-data.frame(table(unlist(hlm.seg)))#统计词频
#installDict函数可以设置自己的语料库
library(wordcloud2)#词云包
wordcloud2(hlm.freq,size=1,shape='star',widgetsize =100)#画词云,shape设置形状,size设置字的大小。
#(3)对美国总统大选辩论文本的情感分析
debate<-read.csv('D:\\R语言kaggle案例实战\\Kaggle第七课\\本节课数据集及部分代码\\debate.csv')
debate$Text<-as.character(debate$Text)#转为字符型
debate$Text<-gsub("....","",debate$Text)#去除“...."这类字符
debate$Speaker<-as.factor(debate$Speaker)#将演讲者名字转为因子型
debate<-as.data.frame(debate)
Pence<-debate$Text[debate$Speaker=="Pence"]#提取Pence的演讲内容
Kaine<-debate$Text[debate$Speaker=="Kaine"]#提取Kaine的演讲内容
Quijano<-debate$Text[debate$Speaker=="Quijano"]#提取Quijano的演讲内容
sentiments_pense<-cbind("Speaker"="Pence",calculate_sentiment(Pence))#calculate_sentiment计算pence的情感,并将Speaker列与最终的情感值列通过cbind合并
sentiments_Kaine<-cbind("Speaker"="Kaine",calculate_sentiment(Kaine))#同上
sentiments_Quijano<-cbind("Speaker"="Quijano",calculate_sentiment(Quijano))#同上
sentiments<-rbind(sentiments_pense[,-2],sentiments_Kaine[,-2],sentiments_Quijano[,-2])#合并三个人的情绪
sentiments<-as.data.frame(sentiments)
sentiments<-as.data.table(sentiments)
sentiments1 <- sentiments[,.N,by=.(sentiment,Speaker)]#分组计数,即不同speaker的不同情绪的文档数量
sentiments1[,"Total":=sum(N),by=Speaker]#分组统计不同speaker的发言文本数
sentiments1<-sentiments1[,.("Percentage"=100*N/Total),by=.(Speaker,sentiment)]#分组统计每种情绪的发言文本数占比
ggplot(sentiments1,aes(x = sentiment,y = Percentage ,fill=sentiment ))+#以图形形式展示geom_bar(stat = "identity") +#柱状图形式ggtitle("VP Sentiments")+xlab("Sentiment")+ylab("% Sentiment")+ theme(axis.text.x = element_text(angle = 45, size=8,hjust = 1))+facet_wrap(~Speaker)#以speaker作为分组,画分组柱状图
#以下是另外三个总统的情感分析过程与上面相同,所以不再解释
trump <- debate$Text[debate$Speaker=="Trump"]
clinton <- debate$Text[debate$Speaker=="Clinton"]
holt <- debate$Text[debate$Speaker=="Holt"]sentiments_trump = cbind("Speaker"="Trump",calculate_sentiment(trump))
sentiments_clinton = cbind("Speaker"="Clinton",calculate_sentiment(clinton))
sentiments_holt = cbind("Speaker"="Holt",calculate_sentiment(holt))sentiments <- rbind(sentiments_trump[,-2],sentiments_clinton[,-2],sentiments_holt[,-2])
sentiments <- as.data.table(sentiments)
sentiments2 <- sentiments[,.N,by=.(sentiment,Speaker)]
sentiments2[,"Total":=sum(N),by=Speaker]
sentiments2 <- sentiments2[,.("Percentage"=100*N/Total),by=.(Speaker,sentiment)]
sentiments1$group <- "Moderator"#划分党派,以便画出不同党派的的情感柱形图
sentiments1$group[sentiments1$Speaker%in%"Pence"] <- "Republican"
sentiments1$group[sentiments1$Speaker%in%"Kaine"] <- "Democratic"
sentiments2$group <- "Moderator"
sentiments2$group[sentiments2$Speaker%in%"Trump"] <- "Republican"
sentiments2$group[sentiments2$Speaker%in%"Clinton"] <- "Democratic"
sentiments <- rbind(sentiments1,sentiments2)
ggplot(sentiments,aes(x = sentiment,y = Percentage ,fill=interaction(Speaker,group)))+geom_bar(stat = "identity",position = "identity", alpha=.7) +ggtitle("Presidential and VP Sentiments")+xlab("Sentiment")+ylab("% Sentiment")+ theme(axis.text.x = element_text(angle = 45, size=8,hjust = 1))+facet_wrap(~group)

补充一点:cnSentimentR包是与Rsentiment一样功能的中文文本情感分析包,相关资料我暂时没有。关于这部分的数据,上传不了,感兴趣的可以到Kaggle官网找找。

基于R语言的Kaggle案例分析学习笔记(七)相关推荐

  1. 基于R语言的Kaggle案例分析-泰坦尼克号

    背景 泰坦尼克号由位于北爱尔兰贝尔法斯特的哈兰·沃尔夫船厂兴建,是当时最大的客运轮船,由于其规模相当一艘现代航空母舰,因而号称"上帝也沉没不了的巨型邮轮".在泰坦尼克号的处女航中, ...

  2. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  3. 数据挖掘r语言和python知乎_Hellobi Live |R语言爬虫实战案例分享:网易云课堂、知乎live、今日头条、B站视频...

    课程名称 R语言爬虫实战案例分享:网易云课堂.知乎live.今日头条.B站视频 网络数据抓取是数据科学中获取数据中的重要途径,但是一直以来受制于高门槛,都是专业程序员的专属技能.直到R语言和Pytho ...

  4. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

    Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...

  5. 基于R语言的seasonal包使用手册_目录_链接(update20220625_10.)

    简介 **日期**:2022-04-18 **题目**:基于R语言的Census的X-13-ARIMA-SEATS接口 **版本**:1.9.0 **描述**:美国人口普查局的季节性调整软件X-13- ...

  6. R语言与抽样技术学习笔记(Jackknife)

    R语言与抽样技术学习笔记(Randomize,Jackknife,bootstrap) Jackknife算法 Jackknife的想法在我很早的一篇博客<R语言与点估计学习笔记(刀切法与最小二 ...

  7. 基于R语言极值统计学及其在相关领域中的应用

    受到气候变化.温室效应以及人类活动等因素的影响,自然界中极端高温.极端环境污染.大洪水和大暴雨等现象的发生日益频繁:在人类社会中,股市崩溃.金融危机等极端情况也时有发生:今年的新冠疫情就是非常典型的极 ...

  8. python对电影进行预测评分_基于R语言构建的电影评分预测模型

    原标题:基于R语言构建的电影评分预测模型 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数据分析 ...

  9. Protein Cell:基于R语言的微生物组数据挖掘最佳流程(大众评审截止14号晚6点)...

    Protein & Cell综述:基于R语言的微生物组数据挖掘的最佳流程 近日,中国农业科学院刘永鑫组联合南京农业大学袁军组在国际期刊 Protein & Cell (IF = 15. ...

  10. arima 数据预处理_基于R语言的ARIMA模型

    A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...

最新文章

  1. indexedDB数据库的使用
  2. 学生系统优化(三)- -细节优化
  3. 浙江高考艺术类2021年成绩查询,2021年浙江美术高考成绩查询网址:https://www.zjzs.net/...
  4. centos7安装ddos-deflate
  5. mysql备份工具Xtrabackup增量备份还原图解
  6. C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
  7. P4245 【模板】任意模数多项式乘法(NTT)
  8. 前端学习(2466):在前端页面中引入百度地图
  9. oracle追踪触发器语句,Oracle中怎样通过触发器来追踪用户的活动?
  10. SpringBoot系列: 与Spring Rest服务交互数据
  11. 软件项目经理新手上路10 - 要的是计划,还是?
  12. 组件化,插件化和热更新
  13. Atitit 状态码专题 目录 1. FTP 1 1.1. 1xx - 肯定的初步答复 1 1.2. 2xx - 肯定的完成答复 1 1.3. 3xx - 肯定的中间答复 2 1.4. 4xx -
  14. 木马分析(控制分析)实验
  15. python实现火车票查询工具_用 Python 写一个命令行火车票查看器
  16. Android 项目规范 1
  17. PLUS模型教程五:多情景设置,附全套教程练习数据
  18. 数商云商业服务业SaaS管理系统:实现高效业务协作,助力企业完善数字化转型之路
  19. Photoshop无缝背景制作
  20. 企业内容管理(ECM)与文档管理的区别及其优势

热门文章

  1. web前端开发工程师的真实能力如何判定?大厂资深前端指点迷津
  2. Jenkins项目配置-maven项目-全面
  3. php 视频 源码下载,PHP下载哔哩哔哩视频
  4. 关于CDN加速 CDN加速是什么
  5. c/s模型和b/s模型
  6. 只道情深,奈何缘浅!
  7. XFP与SFP+光模块的区别是什么?能相互连接吗?
  8. Linux中CPU使用率低负载高
  9. 让 Flutter 在鸿蒙系统上跑起来
  10. MIT 线性代数导论 第十九、二十讲:行列式公式、代数余子式、克拉默法则