<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等),預測出其他句子的情感。在此就分享一下自己如何通過詞庫的方式為每一句評論定性為正面或負面。

                                                                              通過詞庫的方式定性每一句話的情感沒有什么高深的理論基礎,其思想就是對每一句話進行分詞,然后對比正面詞庫與負面詞庫,從而計算出句子的正面得分(詞中有多少是正面的)與負面得分(詞中有多少是負面的),以及綜合得分(正面得分-負面得分)。雖然該方法通俗易懂,但是非常耗人力成本,如正負面詞庫的構建、自定義詞典的導入等。

                                                                              言歸正傳,接下來我們就以某汽車的空間評論數據作為分析對象,來給每條評論打上正面或負面的標簽:

                                                                              # 導入所需的開發包

                                                                              library(readxl)

                                                                              library(jiebaR)

                                                                              library(plyr)

                                                                              library(wordcloud2)

                                                                              # 讀入評論數據

                                                                              evaluation <- read_excel(file.choose())

                                                                              head(evaluation)

                                                                              str(evaluation)

                                                                              代碼1

                                                                              數據集中包含了兩個變量,一個是用戶id,一個是用戶的具體評價內容(字符串類型)。

                                                                              # 讀入正負面詞庫及停止詞

                                                                              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 <- '超韌細密,濕水不易破'

                                                                              segment(sentence, engine)

                                                                              代碼2

                                                                              “不易破”被分成了兩個詞,顯然意思就變了,如何使“不易破”被整體切割出來呢?采用的辦法是添加自定義詞匯。

                                                                              # 添加自定義詞匯

                                                                              new_user_word(engine, '不易破')

                                                                              segment(sentence, engine)

                                                                              代碼3

                                                                              # 將正負面詞加入到自定義詞庫中

                                                                              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)

                                                                              為給每個評論打上正負情感的標簽,不妨將總得分大于等于0的記錄設置為正面情感,小于0的記錄設置為負面情感。

                                                                              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條評論與判定的情感還是非常吻合的。

                                                                              不妨,我們再對評論數據繪制文字云。

                                                                              # 計算詞頻

                                                                              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

                                                                              有很多一個字的詞在詞云中,影響了表達的內容,不妨我們在詞云中只保留包含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

                                                                              由于該評論就是針對汽車的空間加以說明的,顯然詞云中的“空間”的存在并沒有意義。

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

                                                                              代碼12

                                                                              通過文字云繪制結果可以判斷,消費者還是非常認可該款汽車的空間大小,普遍表示滿意,表達了空間寬敞、足夠用的心情。

                                                                              OK, 有關基于詞庫的情感分析就講到這里,雖然在一定程度上保證了預判的準確性,但前期的人工構造詞典是非常耗時耗力的,后期我們將嘗試用機器學習的方法來對評論做情感預判。

                                                                              本文的數據及源代碼下載鏈接:

                                                                              鏈接: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>