<thead id="xthz1"></thead>
            <form id="xthz1"></form>

                <sub id="xthz1"><meter id="xthz1"></meter></sub><thead id="xthz1"><meter id="xthz1"></meter></thead>

                <thead id="xthz1"><meter id="xthz1"></meter></thead>

                <th id="xthz1"></th>

                  <font id="xthz1"><meter id="xthz1"><i id="xthz1"></i></meter></font>

                          <nobr id="xthz1"><meter id="xthz1"></meter></nobr>

                          <th id="xthz1"><meter id="xthz1"></meter></th>

                          <nobr id="xthz1"></nobr>

                                  <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                  <th id="xthz1"></th>
                                  <thead id="xthz1"><meter id="xthz1"><b id="xthz1"></b></meter></thead>
                                  
                                  

                                      <pre id="xthz1"><noframes id="xthz1"><track id="xthz1"></track>

                                          <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                          <th id="xthz1"></th>

                                            <address id="xthz1"></address>

                                            <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                <video id="xthz1"><span id="xthz1"><nobr id="xthz1"></nobr></span></video>

                                                  <th id="xthz1"><meter id="xthz1"></meter></th>

                                                  <th id="xthz1"></th>

                                                    <th id="xthz1"></th><track id="xthz1"><meter id="xthz1"></meter></track>

                                                      <font id="xthz1"><meter id="xthz1"></meter></font><th id="xthz1"><meter id="xthz1"></meter></th>

                                                          <sub id="xthz1"><progress id="xthz1"></progress></sub>

                                                              <sub id="xthz1"></sub>

                                                                          <track id="xthz1"><meter id="xthz1"></meter></track>
                                                                              当前位置 > 首页 > 专栏作者原创 > 干货--基于词库的情感分析

                                                                              干货--基于词库的情感分析

                                                                              来源:CPDA数据分析师学习网 | 时间:2018-02-09 | 作者:数据分析学习网

                                                                              作者:刘顺祥

                                                                              浙江工商大学统计学硕士,高级数据分析师,曾就职于大数据咨询公司,服务过联想、亨氏、美丽田园、网鱼网咖等企业项目;曾在唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。

                                                                              文本分析是目前比较热门的一项研究,例如如何切词、文档矩阵的建立、主题模型的应用、文档聚类、分类、情感分析等。就情感分析而言,目前比较流行的方法有两种,一是词库法、二是机器学习法。词库法在下一段落中介绍其思想,而机器学习法则是在已知分类语料的情况下,构建文档--词条矩阵,然后应该各种分类算法(knn、NB、RF、SVM、DL等),预测出其他句子的情感。在此就分享一下自己如何通过词库的方式为每一句评论定性为正面或?#22909;妗?/p>

                                                                              通过词库的方式定性每一句话的情感没有什么高深的理论基础,其思想就是对每一句话进行分词,然后?#21592;?#27491;面词库与?#22909;?#35789;库,从而计算出句子的正面得分(词中有多少是正面的)与?#22909;?#24471;分(词中有多少是?#22909;?#30340;),以及综合得分(正面得分-?#22909;?#24471;分)。虽然该方法通俗易懂,但是非常耗人力成本,如正?#22909;?#35789;库的构建、自定义词典的导入等。

                                                                              言归正传,接下来我们就以某汽车的空间评论数据作为分析对象,来给每条评论打上正面或?#22909;?#30340;标签:

                                                                              # 导入所需的开发包

                                                                              library(readxl)

                                                                              library(jiebaR)

                                                                              library(plyr)

                                                                              library(wordcloud2)

                                                                              # 读入评论数据

                                                                              evaluation <- read_excel(file.choose())

                                                                              head(evaluation)

                                                                              str(evaluation)

                                                                              代码1

                                                                              数据集中包含了两个变量,一个是用户id,一个是用户的具体评价内容(字符串类型)。

                                                                              # 读入正?#22909;?#35789;库及停止词

                                                                              pos <- readLines(file.choose(), encoding = 'UTF-8')

                                                                              neg <- readLines(file.choose(), encoding = 'UTF-8')

                                                                              stopwords <- readLines(file.choose(), encoding = 'UTF-8')

                                                                              # 合并情感词库

                                                                              mydict <- c(pos, neg)

                                                                              # 为jieba分词准备工作引擎

                                                                              engine <- worker()

                                                                              往jieba分词引擎中添加自定义词汇,目的是能够将一些词正常的切开。

                                                                              # 例如,不添加自定义词汇

                                                                              sentence <- '超韧?#35813;埽?#28287;水不易破'

                                                                              segment(sentence, engine)

                                                                              代码2

                                                                              “不易破”被分成了两个词,显然意思就变了,如何使“不易破”被整体切割出来呢?采用的办法是添加自定义词汇。

                                                                              # 添加自定义词汇

                                                                              new_user_word(engine, '不易破')

                                                                              segment(sentence, engine)

                                                                              代码3

                                                                              # 将正?#22909;?#35789;加入到自定义词库中

                                                                              new_user_word(engine, mydict)

                                                                              # 对每一条评论进行切词

                                                                              segwords <- sapply(evaluation$space, segment, engine)

                                                                              head(segwords)

                                                                              代码4

                                                                              # 删除停止词(即对分析没有意义的词,如介词、虚词等)

                                                                              # 自定义函数:用于删除停止词

                                                                              removewords <- function(target_words,stop_words){

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

                                                                              ? return(target_words)

                                                                              }

                                                                              # 删除一个字的词

                                                                              segwords2 <- sapply(segwords, removewords, stopwords)

                                                                              head(segwords2)

                                                                              代码5

                                                                              #自定义情感类型得分函数

                                                                              fun <- function(x,y) x %in% y

                                                                              getEmotionalType <- 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))?

                                                                              }

                                                                              # 计算每条评论的正负得分

                                                                              score <- getEmotionalType(segwords2, pos, neg)

                                                                              head(score)

                                                                              代码6

                                                                              # 将原始数据与得分数据进行合并

                                                                              evalu.score <- cbind(evaluation, score)

                                                                              为给每个评论打上正负情感的标签,?#29615;两?#24635;得分大于等于0的记录设置为正面情感,小于0的记录设置为?#22909;?#24773;感。

                                                                              evalu.score <- transform(evalu.score,?

                                                                              ? ? ? ? ? ? ? ? ? ? ? ? ?emotion = ifelse(total>=0, 'Pos', 'Neg'))

                                                                              # 随机挑选10条评论,做一个验证

                                                                              set.seed(1)

                                                                              validation <- evalu.score[sample(1:nrow(evalu.score),

                                                                              ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?size = 10),]

                                                                              validation[,c(2,6)]

                                                                              代码7

                                                                              通过验证,发现随机挑选的10条评论与判定的情感还是非常吻合的。

                                                                              ?#29615;粒?#25105;们再对评论数据绘制文字云。

                                                                              # 计算词频

                                                                              wf <- unlist(segwords2)

                                                                              wf <- as.data.frame(table(wf))

                                                                              wf <- arrange(wf, desc(Freq))

                                                                              head(wf) ?

                                                                              代码8

                                                                              # 绘制Top50的词云

                                                                              wordcloud2(wf[1:50,], backgroundColor = 'black')

                                                                              代码9

                                                                              有很多一个字的词在词云中,影响了表达的内容,?#29615;?#25105;们在词云中只保留包含2个字及以上的词。

                                                                              #自定义函数:保留至少2个字符长度的词语

                                                                              more2words <- function(x){

                                                                              ? words = c()

                                                                              ? for (word in x) {

                                                                              ? ? if (nchar(word)>1) words = c(words,word)

                                                                              ? }

                                                                              ? return(words)

                                                                              }

                                                                              segwords3 <- more2words(unlist(segwords2))

                                                                              # 计算词频

                                                                              wf2 <- unlist(segwords3)

                                                                              wf2 <- as.data.frame(table(wf2))

                                                                              wf2 <- arrange(wf2, desc(Freq))

                                                                              head(wf2) ?

                                                                              代码10

                                                                              # 绘制Top50的词云

                                                                              wordcloud2(wf2[1:50,], backgroundColor = 'black')

                                                                              代码11

                                                                              由于该评论就是针对汽车的空间加以?#24471;?#30340;,显然词云中的“空间”的存在并没有意义。

                                                                              wordcloud2(wf2[2:51,], backgroundColor = 'black')

                                                                              代码12

                                                                              通过文字云绘制结果可以判断,消费者还是非常认可该款汽车的空间大小,普遍表示满意,表达了空间宽敞、足够用的心情。

                                                                              OK, 有关基于词库的情感分析就讲到这里,虽然在一定程度上保证了预判的准确性,但前期的人工构造词典是非常耗时耗力的,后期我们将尝试用机器学习的方法来对评论做情感预?#23567;?/p>

                                                                              本文的数据及?#21019;?#30721;下载链接:

                                                                              链接:http://pan.baidu.com/s/1slauy1B 密码:1oi4

                                                                               

                                                                                      <thead id="xthz1"></thead>
                                                                                        <form id="xthz1"></form>

                                                                                            <sub id="xthz1"><meter id="xthz1"></meter></sub><thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                            <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                            <th id="xthz1"></th>

                                                                                              <font id="xthz1"><meter id="xthz1"><i id="xthz1"></i></meter></font>

                                                                                                      <nobr id="xthz1"><meter id="xthz1"></meter></nobr>

                                                                                                      <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                      <nobr id="xthz1"></nobr>

                                                                                                              <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                              <th id="xthz1"></th>
                                                                                                              <thead id="xthz1"><meter id="xthz1"><b id="xthz1"></b></meter></thead>
                                                                                                              
                                                                                                              

                                                                                                                  <pre id="xthz1"><noframes id="xthz1"><track id="xthz1"></track>

                                                                                                                      <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                                      <th id="xthz1"></th>

                                                                                                                        <address id="xthz1"></address>

                                                                                                                        <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                            <video id="xthz1"><span id="xthz1"><nobr id="xthz1"></nobr></span></video>

                                                                                                                              <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                              <th id="xthz1"></th>

                                                                                                                                <th id="xthz1"></th><track id="xthz1"><meter id="xthz1"></meter></track>

                                                                                                                                  <font id="xthz1"><meter id="xthz1"></meter></font><th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                      <sub id="xthz1"><progress id="xthz1"></progress></sub>

                                                                                                                                          <sub id="xthz1"></sub>

                                                                                                                                                      <track id="xthz1"><meter id="xthz1"></meter></track>
                                                                                                                                                          快3赚钱方法如下

                                                                                                                                                                  <thead id="xthz1"></thead>
                                                                                                                                                                    <form id="xthz1"></form>

                                                                                                                                                                        <sub id="xthz1"><meter id="xthz1"></meter></sub><thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                        <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                        <th id="xthz1"></th>

                                                                                                                                                                          <font id="xthz1"><meter id="xthz1"><i id="xthz1"></i></meter></font>

                                                                                                                                                                                  <nobr id="xthz1"><meter id="xthz1"></meter></nobr>

                                                                                                                                                                                  <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                  <nobr id="xthz1"></nobr>

                                                                                                                                                                                          <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                                                                                                          <th id="xthz1"></th>
                                                                                                                                                                                          <thead id="xthz1"><meter id="xthz1"><b id="xthz1"></b></meter></thead>
                                                                                                                                                                                          
                                                                                                                                                                                          

                                                                                                                                                                                              <pre id="xthz1"><noframes id="xthz1"><track id="xthz1"></track>

                                                                                                                                                                                                  <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                                                                                                                  <th id="xthz1"></th>

                                                                                                                                                                                                    <address id="xthz1"></address>

                                                                                                                                                                                                    <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                                                        <video id="xthz1"><span id="xthz1"><nobr id="xthz1"></nobr></span></video>

                                                                                                                                                                                                          <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                                          <th id="xthz1"></th>

                                                                                                                                                                                                            <th id="xthz1"></th><track id="xthz1"><meter id="xthz1"></meter></track>

                                                                                                                                                                                                              <font id="xthz1"><meter id="xthz1"></meter></font><th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                                                  <sub id="xthz1"><progress id="xthz1"></progress></sub>

                                                                                                                                                                                                                      <sub id="xthz1"></sub>

                                                                                                                                                                                                                                  <track id="xthz1"><meter id="xthz1"></meter></track>

                                                                                                                                                                                                                                              <thead id="xthz1"></thead>
                                                                                                                                                                                                                                                <form id="xthz1"></form>

                                                                                                                                                                                                                                                    <sub id="xthz1"><meter id="xthz1"></meter></sub><thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                                                                                                    <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                                                                                                    <th id="xthz1"></th>

                                                                                                                                                                                                                                                      <font id="xthz1"><meter id="xthz1"><i id="xthz1"></i></meter></font>

                                                                                                                                                                                                                                                              <nobr id="xthz1"><meter id="xthz1"></meter></nobr>

                                                                                                                                                                                                                                                              <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                                                                                              <nobr id="xthz1"></nobr>

                                                                                                                                                                                                                                                                      <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                                                                                                                                                                                      <th id="xthz1"></th>
                                                                                                                                                                                                                                                                      <thead id="xthz1"><meter id="xthz1"><b id="xthz1"></b></meter></thead>
                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                      

                                                                                                                                                                                                                                                                          <pre id="xthz1"><noframes id="xthz1"><track id="xthz1"></track>

                                                                                                                                                                                                                                                                              <nobr id="xthz1"><meter id="xthz1"><var id="xthz1"></var></meter></nobr>

                                                                                                                                                                                                                                                                              <th id="xthz1"></th>

                                                                                                                                                                                                                                                                                <address id="xthz1"></address>

                                                                                                                                                                                                                                                                                <thead id="xthz1"><meter id="xthz1"></meter></thead>

                                                                                                                                                                                                                                                                                    <video id="xthz1"><span id="xthz1"><nobr id="xthz1"></nobr></span></video>

                                                                                                                                                                                                                                                                                      <th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                                                                                                                      <th id="xthz1"></th>

                                                                                                                                                                                                                                                                                        <th id="xthz1"></th><track id="xthz1"><meter id="xthz1"></meter></track>

                                                                                                                                                                                                                                                                                          <font id="xthz1"><meter id="xthz1"></meter></font><th id="xthz1"><meter id="xthz1"></meter></th>

                                                                                                                                                                                                                                                                                              <sub id="xthz1"><progress id="xthz1"></progress></sub>

                                                                                                                                                                                                                                                                                                  <sub id="xthz1"></sub>

                                                                                                                                                                                                                                                                                                              <track id="xthz1"><meter id="xthz1"></meter></track>