中文情感分析 (Sentiment Analysis) 的難點在哪?現在做得比較好的有哪幾家?

點擊上方,選擇星標置頂,每天給你送乾貨

閱讀大概需要25分鐘

跟隨小博主,每天進步一丟丟

來自: 知乎

編輯: 深度學習自然語言處理公衆號

地址: https://www.zhihu.com/question/20700012

本文僅作學術分享,若侵權,請聯繫後臺刪文處理

作者:知乎用戶
鏈接:

https://www.zhihu.com/question/20700012/answer/23452462

最近正在做相關的項目,給題主一些相關的資料。
假設分析的對象是iphone5s的手機評論。從京東、亞馬遜或者中關村都可以找到這款手機的評論。大致都如圖所示。


情感分析(Sentiment Analysis)
第一步,就是確定一個詞是積極還是消極,是主觀還是客觀。這一步主要依靠詞典。
英文已經有偉大詞典資源:SentiWordNet. 無論積極消極、主觀客觀,還有詞語的情感強度值都一併拿下。
但在中文領域,判斷積極和消極已經有不少詞典資源,如Hownet,NTUSD但用過這些詞典就知道,效果實在是不咋滴(最近還發現了大連理工發佈的情感詞彙本體庫,不過沒用過,不好評價)。中文這方面的開源真心不夠英文的做得細緻有效。而中文識別主客觀,那真的是不能直視。
中文領域難度在於:詞典資源質量不高,不細緻。另外缺乏主客觀詞典。

第二步,就是識別一個句子是積極還是消極,是主觀還是客觀。
有詞典的時候,好辦。直接去匹配看一個句子有什麼詞典裏面的詞,然後加總就可以計算出句子的情感分值。
但由於不同領域有不同的情感詞,比如看上面的例子,“藍屏”這個詞一般不會出現在情感詞典之中,但這個詞明顯表達了不滿的情緒。因此需要另外根據具體領域構建針對性的情感詞典。
如果不那麼麻煩,就可以用有監督的機器學習方法。把一堆評論扔到一個算法裏面訓練,訓練得到分類器之後就可以把評論分成積極消極、主觀客觀了。
分成積極和消極也好辦,還是上面那個例子。5顆星的評論一般來說是積極的,1到2顆星的評論一般是消極的,這樣就可以不用人工標註,直接進行訓練。但主客觀就不行了,一般主客觀還是需要人來判斷。加上中文主客觀詞典不給力,這就讓機器學習判斷主客觀更爲困難。
中文領域的難度:還是詞典太差。還有就是用機器學習方法判斷主客觀非常麻煩,一般需要人工標註。
另外中文也有找到過資源,比如這個用Python編寫的類庫:SnowNLP. 就可以計算一句話的積極和消極情感值。但我沒用過,具體效果不清楚。

到了第三步,情感挖掘就升級到意見挖掘(Opinion Mining)了。
這一步需要從評論中找出產品的屬性。拿手機來說,屏幕、電池、售後等都是它的屬性。到這一步就要看評論是如何評價這些屬性的。比如說“屏幕不錯”,這就是積極的。“電池一天都不夠就用完了,坑爹啊”,這就是消極的,而且強度很大。
這就需要在情感分析的基礎上,先挖掘出產品的屬性,再分析對應屬性的情感。
分析完每一條評論的所有屬性的情感後,就可以彙總起來,形成消費者對一款產品各個部分的評價。
接下來還可以對比不同產品的評價,並且可視化出來。如圖。

這一步的主要在於準確挖掘產品屬性(一般用關聯規則),並準確分析對應的情感傾向和情感強度。因此這需要情感分析作爲基礎。首先要找到評論裏面的主觀句子,再找主觀句子裏的產品屬性,再計算屬性對應的情感分。所以前面基礎不牢固,後面要準確分析就有難度。
中文這個領域的研究其實很完善了,技術也很成熟。但需要完善前期情感分析的準確度。

總的來說,就是中文詞典資源不好,工作做得不是很細很準。前期的一些基礎不牢固,後面要得到準確的分析效果就不容易了。

作者:進擊的龍
鏈接:

https://www.zhihu.com/question/20700012/answer/617496069

我下午看了點資料,寫了一篇情感分析的簡單調研,希望對你有幫助。

簡介

情感分析或觀點挖掘是對人們對產品、服務、組織、個人、問題、事件、話題及其屬性的觀點、情感、情緒、評價和態度的計算研究。

現有研究已經產生了可用於情感分析多項任務的大量技術,包括監督和無監督方法。在監督方法中,早期論文使用所有監督機器學習方法(如支持向量機、最大熵、樸素貝葉斯等)和特徵組合。無監督方法包括使用情感詞典、語法分析和句法模式的不同方法。現有多本綜述書籍和論文,廣泛地涵蓋了早期的方法和應用。

大約十年前,深度學習成爲強大的機器學習技術,在很多應用領域產生了當前最優的結果,包括計算機視覺、語音識別、NLP 等。近期將深度學習應用到情感分析也逐漸變得流行。

情感分析的三種粒度

  • 文檔粒度(document level):文檔級情感分類是指爲觀點型文檔標記整體的情感傾向/極性,即確定文檔整體上傳達的是積極的還是消極的觀點。因此,這是一個二元分類任務,也可以形式化爲迴歸任務,例如爲文檔按 1 到 5 星評級。一些研究者也將其看成一個五類分類任務。

  • 句子粒度(sentence level):語句級情感分類用來標定單句中的表達情感。正如之前所討論的,句子的情感可以用主觀性分類和極性分類來推斷,前者將句子分爲主觀或客觀的,而後者則判定主觀句子表示消極或積極的情感。在現有的深度學習模型中,句子情感分類通常會形成一個聯合的三類別分類問題,即預測句子爲積極、中立或消極。

  • 短語粒度(aspect level):也稱爲主題粒度,每一個短語代表了一個主題。與文檔級和語句級的情感分類不同,aspect level 情感分類同時考慮了情感信息和主題信息(情感一般都會有一個主題)。給定一個句子和主題特徵,aspect level 情感分類可以推斷出句子在主題特徵的情感極性/傾向。例如,句子「the screen is very clear but the battery life is too short.」中,如果主題特徵是「screen」,則情感是積極的,如果主題特徵是「battery life」,則情感是消極的。


深度學習模型

  • 文檔/句子粒度:Kim等人(2013) 提出的CNN文本分類工作,成爲句子級情感分類任務的重要baseline之一;

  • 文檔/句子粒度:基本的lstm模型加上pooling策略構成分類模型,是通常用來做情感分析的方法;

  • 短語粒度:Tang等人(2015) 使用兩種不同的rnn網絡,結合文本和主題進行情感分析;

  • 短語粒度:Tang等人(2016) 結合memory-network,解決target-dedependent問題,這裏的target理解爲前面提過的aspect;

  • 短語粒度:Chen等人(2017) 分別使用位置權重記憶和層疊attention的複合機制,建模target詞和文本間的相互交互關係,以解決短語級情感分類問題;

  • 短語粒度:Schmitt1等人(2018) 將aspect和polarity結合在一起進行分類任務訓練,得到情感分析的模型;

  • 現在流行模型:大規模語料預訓練(詞向量/Elmo/GPT/Bert)+ 深度學習分類器(lstm/cnn/transformer),一個很好的示例見AI Challenger 2018:細粒度用戶評論情感分類冠軍思路總結


相關數據

情感詞典

  • 詞性字典1詞性字典2

  • 大連理工大學中文情感詞彙本體庫

  • 清華大學李軍中文褒貶義詞典

  • 知網情感詞典

情感數據集

  • 15 Free Sentiment Analysis Datasets for Machine Learning

  • 大衆點評細粒度用戶評論情感數據集

  • 汽車行業用戶觀點主題及情感識別

  • 電商評論情感數據

  • 酒店評論語料

  • SemEval-2014 Task 4數據集

  • Citysearch corpus 餐館評論數據

  • NLPCC2014評估任務2_基於深度學習的情感分類

  • NLPCC2013評估任務_中文微博觀點要素抽取

  • NLPCC2013評估任務_中文微博情緒識別

  • NLPCC2013評估任務_跨領域情感分類

  • NLPCC2012評估任務_面向中文微博的情感分析

  • 康奈爾大學影評數據集

其他資源

  • Sentiment Analysis with LSTMs in Tensorflow

  • Sentiment analysis on tweets using Naive Bayes, SVM, CNN, LSTM, etc.

  • Chinese Shopping Reviews sentiment analysis

  • AI Challenger 2018:細粒度用戶評論情感分類冠軍思路總結

文獻資料

  • 文本情感分析綜述(騰訊語義團隊)

  • Deep learning for sentiment analysis: A survey

  • 情感分析資源大全

  • Tang D, Qin B, Liu T. Aspect level sentiment classification with deep memory network[J]. arXiv preprint arXiv:1605.08900, 2016.

  • Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.

作者:飛槳PaddlePaddle
鏈接:

https://www.zhihu.com/question/20700012/answer/633947292

您好,首先情感分析這個任務就比較難。

目前的人工智能技術都是基於大量的數據訓練複雜的模型,以此來支持不同場景的應用。因此其核心困難包括模型和數據兩個方面:

一方面,情感是人類的一種高級智能行爲,需要模型能夠在語義層面理解文本的情感傾向。這不是靠寫幾個正則表達式就能完成的。

另一方面,不同領域(如餐飲、體育)的情感表達方式各不相同,即便是同一場景的表達也極其複雜。

所以需要有大規模覆蓋各個領域的優質數據支撐模型訓練。而這些數據又不是一般的開發者所能具備的。這就導致不同領域不同場景的情感分析處處都是難點。

百度在2018年7月開源了其基於語義和大數據的情感分類系統——Senta,將模型和源碼通過Github進行免費技術開放(Github地址在文章結尾處),開發者可以免費使用該技術。

本賬號也專門發佈了一篇文章《PaddlePaddle Fluid實戰:使用百度 Senta 情感分析系統》,詳細講述了使用PaddlePaddle深度學習框架實現Senta 情感分析系統的實戰操作。

目前應用最廣泛的情感分析技術是“評論觀點抽取”,用於精細刻畫用戶對產品或商家的具體觀點和商家的口碑

該技術可以大致理解成兩個過程:

首先,是抽取出評論中的一些涉及觀點的名詞形容詞短語,
然後,通過情感分類技術確定其觀點的情感傾向。

如觀點是"味道不錯"還是"味道不好",是"上菜速度快"還是"上菜速度慢"。百度AI開放平臺上免費開放的評論觀點抽取API,就可以支持電商、美食、酒店、旅遊、購物等13個場景的評論觀點抽取。

以此爲基礎,就可以基於海量的評論數據,建立精細的用戶畫像和商戶畫像,進而改善營銷和服務策略,豐富個性化推薦場景,最終創造更大的商業價值。

百度Senta是怎麼解決這些問題並形成核心技術的?

核心技術一:強大的DNN語義模型和深度學習框架

百度Senta系統採用的是近年取得重大突破的深度學習技術。深度學習的特點是可以不依賴繁複的人工特徵工程,而直接從最原始的文本數據中獲取語義層面的信息,進而進行情感傾向的判斷。

圖3 基於bi-LSTM的情感分類模型

圖3展示了基於bi-LSTM的情感分類模型。它是在大規模語料上有顯著效果的經典深度學習模型。它的特點是能夠提取語句中詞語順序相關的信息,考慮詞與詞之間較長上下文的依賴。

但是光有好的模型設計還不夠,還需要好的深度學習框架來實現。百度Senta情感分析系統基於同樣由百度開源的深度學習框架PaddlePaddle Fluid所實現。

PaddlePaddle Fluid具有一些特別適合於自然語言處理的特性,比如在深度學習模型的訓練過程中,爲了充分利用硬件的計算資源,一般需要進行批量(batch)計算,即一次同時輸入多個句子進行計算。

但是情感分類這類場景所處理的大量文本的長度都是不固定的,一般的深度學習框架需要將一個batch內的句子補長(padding)成同樣的長度再輸入到神經網絡中進行處理。

這種padding方式帶來了額外的存儲和計算開銷。而PaddlePaddle Fluid框架用獨有的LoDTensor原生支持多層級的不等長序列,使得變長文本不需要經過padding即可饋入深度學習模型進行訓練或預測,從而可以顯著地節省儲存空間和計算時間。而對常見的padding數據的支持,PaddlePaddle Fluid 也在不斷地完善中。

另外 PaddlePaddle Fluid對單機多設備及多機分佈式訓練的支持也非常友好。對於單機訓練,框架提供的並行執行器 ParallelExecutor會自動處理參數的分發與聚合,相對於單設備訓練,用戶幾乎不用對模型進行任何修改,使得用戶可以低成本地實現單機多CPU/GPU訓練;而對於多機分佈式訓練,也只需要簡單的配置即可實現,這使得用戶能夠方便地從模型構建快速過渡到多種環境下的模型運行。

另一方面,現實的NLP應用場景往往十分複雜。可能單獨一個情感傾向分析模型很難解決所有問題,需要多種NLP技術綜合運用。而很多現成的NLP應用,比如文本分類、神經機器翻譯、閱讀理解、自動問答等,在PaddlePaddleFluid中都很容易找到相關的網絡接口和文檔。

預訓練詞向量也集成在其中,方便模型熱啓動。百度Senta系統甚至直接把情感傾向分析模型的網絡結構及其參數都開源,方便對其調用與再開發;並且集成了百度詞法分析系統 (LAC),方便用戶直接處理未分詞的語料。

這使得開發者的精力能夠放在構建深度學習模型的高層部分而不必過多關注底層細節上,因此很適合於工業應用,尤其是需要快速開發的場景。

當然,百度還實驗了各種其他的情感分類模型,包括CNN、hierarchical-LSTM、self-attention等。它們都在百度Senta系統的開源代碼中,以滿足用戶不同的選擇。並且百度開源了訓練數據,用戶可以直接在此基礎上訓練自己的模型,以適應自己的場景。

核心技術二:海量優質標註數據

在AI界有一句話,"數據決定了你的模型上限,而模型只是在逼近這個上限"。可見大數據的重要性。然而數據標註是一件十分耗費人力的事。爲了提高標註效率,百度基於強大的NLP技術積累,能夠基於有限的種子數據大量擴充標註數據。

簡單地說,就是先獲得一部分標註好的數據,再找到與這些數據相似評論,進而擴充優質的標註數據。

那麼第一批種子數據從哪裏來?其實,互聯網上天然有大量的弱標記評論數據,比如用戶會對某個商品給予評論,同時給予評分。根據評分的高低就能確定評論的正負傾向。

接下來就是計算那些沒有被標註情感傾向的評論數據與這些種子數據的相似度。這涉及到另一個模型——語義相似度模型。這個模型也是百度的核心技術(百度AI開放平臺也開放了相關api)。它是通過百度積累的龐大的搜索引擎標註數據訓練得到的。因此模型準確度非常高。

更進一步,可以將這些評論數據根據相似度連接成圖結構,最後通過標記傳播算法,將原來未標記數據轉化爲標註數據。經實驗發現,這種方法獲取的數據質量很高。

圖4 基於標記傳播的情感標記數據挖掘

因此,百度Senta系統在各種垂類準確率非常高,整體效果業界領先。而開源項目Senta中,既包含了簡單高效的情感分類語義模型,也包含了百度基於獨有大數據語料訓練好的高精準模型,可以適應不同場景的需求。

另外,用戶甚至可以將自己場景的數據加入到訓練集中,使得模型更符合自身的應用場景。即便自己沒有訓練機器,也可以上傳自身的數據到百度AI開放平臺進行定製化,然後調用定製化好的api即可。

展望

百度在情感分析領域開展了漫長而深入的技術研發。而在未來,百度將繼續深入研發更加廣泛通用的NLP技術和深度學習框架,以適應豐富多樣的業務場景,創造更多價值。同時,百度將及時開源基於PaddlePaddle的最前沿的NLP技術,共同推進AI產業的發展。

參考鏈接
Senta系統(
https://github.com/baidu/Senta

作者:鄧凌佳
鏈接:

https://www.zhihu.com/question/20700012/answer/22168168

fine-grained資源不夠多。
比如
-  ChineseLDC.Org
國內研究使用授權費 5000 RMB
國外研究使用授權費 35000 RMB
(不過這個是研究說話語氣的emotion)

牛逼閃閃的LIWC
Product Catalog
收費是$89.95美元(稅前)

真是研究不起中文啊。。。

====好的噴完了來更新一下答案====
國內COAE和日本舉辦的NTCIR的評測不錯。樓主可以參考。
現在的sentiment analysis比較傾向於machine learning的方法。語料庫越大才能搞出來好的性能。算法什麼的都可以通用。

還有一點,大多數語料庫都是基於商品評論的。比如電腦、相機、酒店,等等。新聞評論這樣的文章中,標註很細緻的語料庫不多。COAE和NTCIR還是有一些的。伸手黨戳這個鏈接:
信息分類與情感發現

也可以參考bilingual的方法。比如這些論文:
http://aclweb.org/anthology/P/P11/P11-1033.pdf
http://aclweb.org/anthology//P/P09/P09-1027.pdf

再找到好的中文鏈接持續更新中,也算是給自己做個筆記。。。

作者:宸風
鏈接:

https://www.zhihu.com/question/20700012/answer/91680744

我只說商業解決方案的難點在哪。

最大的難點是這是一個自定義需求的問題。我們可以看到很多paper提供了各種分類算法解決方案,我們曾經也努力做到過微博正負面九成準確率,後來發現並沒什麼卵用。有的企業要中性,這好說;有的企業還要中性偏負面,什麼鬼。。;有的認爲廣告宣傳是正面,有的覺得是垃圾信息要過濾;有的部分廣告認爲正面部分認爲負面;有的做電商的一點負面聽不得,不管後面誇得多好,只要提到負面的都要提取出來;有的情感詞或表述在不同領域或不同數據源可能情感極性是不一樣的。

每個都做監督訓練的話還要不要活了,二分類還好說,多分類的話通常幾千條監督標註還是不夠準的,就不說電商和微博還得分開做了。

另一個問題是相關性,比如我說[寶馬很差,但奔馳很好,外形漂亮,logo大氣,blahblah],可能整條文本整體偏正面,畢竟絕大多數都在讚美奔馳。但如果要監測的企業是寶馬,那就不好玩了。因此又轉化成一些三元組類抽取、句法分析、詞搭配等問題。

其他比較常見的問題還有中文的博大精深導致的,比如反話等,這些就更不能侷限於單條文本自身了,有條件的還要考慮上下文,又可能涉及到一些消岐、上下文分類等問題。

因此學術與實際應用還是有距離的。。。除非你就是做通用的或只在某個特定範圍做(比如大公司自己特定的需求),那可能比較幸福

作者:知乎用戶
鏈接:

https://www.zhihu.com/question/20700012/answer/24659700

作爲句子和篇章級的應用問題,感覺中英文處理不會有本質的區別,不如好好閱讀這個領域的兩本經典文獻,然後再考慮具體的研究問題:

1. Bing Liu的 Sentiment Analysis and Opinion Mining Morgan & Claypool Publishers

2. Bo Pang的 Opinion Mining and Sentiment Analysis

作者:彭浩
鏈接:

https://www.zhihu.com/question/20700012/answer/90193176

容哲的回答總結了利用情感詞典從詞/句子/特徵等方面進行情感分析, 識別主客觀情感句, 以及對產品特徵更爲細節的情感分值分析和可視化.

情感分析也可以利用機器學習來做, 其核心就是獲取 new representation of the original text, 這裏的 text 可以是一句話/一條評論等. 新的 representation 中行代表 Data point, 列代表 features. 現在獲取特徵比較傳統的方法有 Bag of Words (with or without its TFIDF), Bag of ngrams (with or without its TFIDF), Bag of means on word embedding (e.g. using word2vec embedding). 然後就可以利用一些機器學習的經典算法做分類任務, 如 SVM, Logistics Reg, Naive Bayes, Neural Net 等.

Deep Learning 現正在顛覆各個領域的傳統方法, 其在 Computer Vision, NLP 方向更是產生了極大的影響, 在最近很多顛覆性算法中都可見其身影. 學術界當然不乏將其用在 sentiment classification 的例子. 一年前用於這類任務的常見 Deep learning 方法有: Word-level Convolutional Neural Net (CNN), Word-level Recurrent Neural Network (RNN), and Word-level Long Short Term Memory (LSTM) 等, 這些都曾經取得過 state-of-the-art 的準確率. 關於 word-level 的 CNN 模型, 可以參考這篇論文: http://emnlp2014.org/papers/pdf/EMNLP2014181.pdf"

深度學習模型的特點是參數非常多, 動輒百萬級, 但是由於神經網絡具備模擬任何函數的能力, 所以在數據量極其大的情況下, 訓練出的模型是可以避免過擬合的, 因此這類模型具有很好的泛化能力, 預測新數據的能力也很強.

爲了擴大數據量, researchers 最近從 computer vision task 中借鑑經驗, 提出了基 character level 的 CNN 模型. 其思想就是將文本中詞的每個字符類比成圖片中一個個像素, 通過預處理 (如限制 vocabulary 大小, 設定句子的 max length 等) 和 embedding, 將文本轉化成一張類似圖片的矩陣, 這樣就可以進行和圖片一樣的 convolution operation 了.

從 word-level 到 character-level, 數據量會增長好幾倍 (一個詞平均有5個字母). 乍一看, 這類模型連 word 都不需要了, 直接從 character-level 學習特徵, 似乎太過天真. 可以這樣現象一下, 英文中, I love you, 通過前兩個單詞"I", "love", 推出下一個詞 "you", 這個模型, 我們人類還可以理解; 然而通過字母"I", "space", "L", "O", "V", "E", "space" 推出"Y", "O", "U"這三個字母就不是我們能理解的了. 但現實中, character-level的 CNN 模型在 sentiment classification (or text classification) 中表現非常好, 可以超越 word-level 的 CNN 模型, 具體可以參考Facebook 最近的 Paper : http://arxiv.org/abs/1509.01626

筆者利用 word-level 的 CNN 在 Yelp Challenge 2016 review dataset 中取得了高於 SVM, NN 的準確率, 具體項目在這裏 : GitHub - haoopeng/CNN-yelp-challenge-2016-sentiment-classification: code for training a word level CNN for sentiment classification on yelp's review dataset 2016.

有興趣的同學可以看看. 個人認爲Deep learning非常有趣, 值得學習. 目前正在實現 character-level 的 CNN 模型.

添加個人微信,備註:暱稱-學校(公司)-方向即可獲得

1. 快速學習深度學習五件套資料

2. 進入高手如雲DL&NLP交流羣

記得備註呦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章