您好,登錄后才能下訂單哦!
如何用python實現(xiàn)簡單的文本情感分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
很久沒在公眾號發(fā)布新內容,在這段時間內沒想到有這么多python愛好者關注了我,港真的,心里很興奮激動。
今天給大家?guī)砦覄倓倢崿F(xiàn)了的簡單多文本情感分析代碼,代碼環(huán)境python3.5
原理
比如這么一句話:“這手機的畫面極好,操作也比較流暢。不過拍照真的太爛了!系統(tǒng)也不好?!?/p>
① 情感詞
要分析一句話是積極的還是消極的,最簡單最基礎的方法就是找出句子里面的情感詞,積極的情感詞比如:贊,好,順手,華麗等,消極情感詞比如:差,爛,壞,坑爹等。出現(xiàn)一個積極詞就+1,出現(xiàn)一個消極詞就-1。
里面就有“好”,“流暢”兩個積極情感詞,“爛”一個消極情感詞。那它的情感分值就是1+1-1+1=2. 很明顯這個分值是不合理的,下面一步步修改它。
② 程度詞
“好”,“流暢”和‘爛“前面都有一個程度修飾詞?!睒O好“就比”較好“或者”好“的情感更強,”太爛“也比”有點爛“情感強得多。所以需要在找到情感詞后往前找一下有沒有程度修飾,并給不同的程度一個權值。比如”極“,”無比“,”太“就要把情感分值*4,”較“,”還算“就情感分值*2,”只算“,”僅僅“這些就*0.5了。那么這句話的情感分值就是:4*1+1*2-1*4+1=3
③ 感嘆號
可以發(fā)現(xiàn)太爛了后面有感嘆號,嘆號意味著情感強烈。因此發(fā)現(xiàn)嘆號可以為情感值+2. 那么這句話的情感分值就變成了:4*1+1*2-1*4-2+1 = 1
④ 否定詞
明眼人一眼就看出最后面那個”好“并不是表示”好“,因為前面還有一個”不“字。所以在找到情感詞的時候,需要往前找否定詞。比如”不“,”不能“這些詞。而且還要數(shù)這些否定詞出現(xiàn)的次數(shù),如果是單數(shù),情感分值就*-1,但如果是偶數(shù),那情感就沒有反轉,還是*1。在這句話里面,可以看出”好“前面只有一個”不“,所以”好“的情感值應該反轉,*-1。
因此這句話的準確情感分值是:4*1+1*2-1*4-2+1*-1 = -1
⑤ 積極和消極分開來
再接下來,很明顯就可以看出,這句話里面有褒有貶,不能用一個分值來表示它的情感傾向。而且這個權值的設置也會影響最終的情感分值,敏感度太高了。因此對這句話的最終的正確的處理,是得出這句話的一個積極分值,一個消極分值(這樣消極分值也是正數(shù),無需使用負數(shù)了)。它們同時代表了這句話的情感傾向。所以這句評論應該是”積極分值:6,消極分值:7“
⑥ 以分句的情感為基礎
再仔細一步,詳細一點,一條評論的情感分值是由不同的分句加起來的,因此要得到一條評論的情感分值,就要先計算出評論中每個句子的情感分值。這條例子評論有四個分句,因此其結構如下([積極分值, 消極分值]):[[4, 0], [2, 0], [0, 6], [0, 1]]
以上就是使用情感詞典來進行情感分析的主要流程了,算法的設計也會按照這個思路來實現(xiàn)。
算法設計
第一步:讀取評論數(shù)據(jù),對評論進行分句。
第二步:查找對分句的情感詞,記錄積極還是消極,以及位置。
第三步:往情感詞前查找程度詞,找到就停止搜尋。為程度詞設權值,乘以情感值。
第四步:往情感詞前查找否定詞,找完全部否定詞,若數(shù)量為奇數(shù),乘以-1,若為偶數(shù),乘以1。
第五步:判斷分句結尾是否有感嘆號,有嘆號則往前尋找情感詞,有則相應的情感值+2。
第六步:計算完一條評論所有分句的情感值,用數(shù)組(list)記錄起來。
第七步:計算并記錄所有評論的情感值。
第八步:通過分句計算每條評論的積極情感均值,消極情感均值,積極情感方差,消極情感方差。
實戰(zhàn)
這里是我參考已有代碼,結合自己需要,對代碼進行了簡單的修改。本腳本運行環(huán)境是python3.5 ,使用2.x的盆友們見諒。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。