1. 程式人生 > >情感分析:幾乎包括你需要知道的所有(二)

情感分析:幾乎包括你需要知道的所有(二)

image.png

情感分析是從書面或口頭語言中,對特定主題,理解觀點的自動過程。 在世界上,我們每天生成2.5QB位元組的資料,情感分析已成為理解這些資料的關鍵工具。 這使得公司能夠獲得關鍵的見解,並自動化各種流程。

但是,它是如何實現的呢? 有哪些不同的方法? 它需要注意什麼,限制是什麼? 你如何在業務中使用情感分析? 接下來,您將找到這些問題的答案,以及您需要了解的,關於情感分析的所有內容。 無論你是經驗豐富的資料科學家,開發人員,營銷人員,產品分析師,還是剛剛開始進行文字分析,這份指南都適合你。

1.情感分析基礎:

1.1 什麼是情感分析:

情感分析也稱為意見挖掘( Opinion Mining),是自然語言處理(NLP)

的一個領域,它構建的系統,用於在文字中識別和提取觀點。 通常,除了識別觀點之外,這些系統還提取描述的特徵,例如:

  • 極性:發言者表達積極或消極的意見;
  • 主題:正在談論的事情;
  • 意見持有人:表達意見的個人或實體。 目前,情感分析是一個很有興趣的話題,因為它有許多實際應用。 由於網際網路上公開可用的資訊不斷增長,在評論網站,論壇,部落格和社交媒體中,可以獲得大量表達意見的文字。 在情感分析系統的幫助下,這種非結構化資訊可以自動轉換為,結構化資料,關於產品,服務,品牌,政治或人們可以表達意見的其他主題。 這些資料對於商業應用非常有用,例如營銷分析,公共關係,產品評論,網路發起人評分,產品反饋和客戶服務。

1.2 什麼是觀點:

在進一步詳細說明之前,讓我們首先給出"觀點"的定義。 文字資訊可以大致分為兩種主要型別:事實和意見。 事實是關於某事的客觀表達。 意見通常是主觀表達,描述人們對主題的情緒,評價和感受。 正如許多其他NLP問題一樣,情感分析可以建模為分類問題,其中必須解決兩個子問題:

  • 將句子分類為主觀或客觀,稱為主觀性分類。
  • 將句子分類為正面,負面或中立的觀點,稱為極性分類。 在一種觀點中,文字所討論的,可以這個物件,它的一部分,一方面,屬性或其特徵。 它也可以是產品,服務,個人,組織,事件或主題。 舉個例子,看下面的觀點:
  • “這款相機的電池續航時間太短。”: 關於實體(相機)特徵(電池壽命)的負面評價。

直接性與比較性的觀點:

觀點分為兩類:直接性的和比較性的。 直接性觀點:直接對實體提出意見,例如:“相機A的畫質很差。”這個直接意見陳述了對相機A的負面看法。

比較性的意見:通過比較實體與另一實體來表達意見,例如:“相機A的影象質量優於相機B的影象質量。”

通常,比較性觀點使用,形容詞或副詞的比較級或最高階形式表達兩個或更多個實體之間的相似性或差異。 在前面的例子中,對於攝像機A有一個積極的看法,相反,對攝像機B有一個負面看法。

明確的和含蓄的觀點:

關於主題的明確觀點,是在主觀句子中明確表達的意見。 以下句子表達了明確的積極觀點:“這款手機的音質令人驚歎。” 對某一主題的含蓄的觀點,是客觀句中隱含的意見。 以下句子表達了一種隱含的否定意見:“耳機在兩天內壞了。”

在隱含的意見中,我們可以包括隱喻,這些隱喻可能是最難分析的觀點型別,因為它們包含大量的語義資訊

1.3 情感分析的範圍:

情感分析可以用於不同級別的範圍:

  • 文字級別:通過完整文件或段落來獲取情緒;
  • 句子級別:獲得單句的情緒。
  • 子句級別:獲得句子中,子表達的情感。

1.4 情感分析的型別:

情感分析有多種型別和風格,情感分析工具的範圍從專注於極性(正面,負面,中立)的系統到檢測情感和情緒(憤怒,快樂,悲傷等)或識別意圖的系統(例如感興趣和沒興趣)。 在下一節中,我們將重點介紹。

細粒度情感分析:

有時您可能想,更加準確地瞭解意見的極性水平,因此你可以考慮,以下類別而不僅僅是談論積極,中立或消極的意見:

  • 非常積極
  • 積極
  • 中性
  • 消極
  • 非常消極

這通常被稱為細粒度情感分析。 例如,這可以在評論中對映到5星評級,例如:非常正= 5星和非常負= 1星。

一些系統還通過識別積極或消極情感是否與特定感覺相關聯,來提供不同的極性風格,例如憤怒,悲傷或憂慮(即負面情緒)或快樂,愛情或熱情(即積極情緒)。

情緒檢測

情緒檢測旨在檢測諸如快樂,沮喪,憤怒,悲傷等情緒。 許多情緒檢測系統採用詞典(即單詞列表和它們傳達的情感)或複雜的機器學習演算法。

訴諸詞典的一個缺點是,人們表達情感的方式變化很大,他們使用的詞彙專案也是如此。 一些詞,像shit和kill,通常表達憤怒(eg.在你的產品中是狗屎,或者你的客戶支援正在殺死我),也可能表達快樂。

基於方面的情感分析:

通常,在分析目標(例如產品)的情感時,您可能不僅對人們是否正在談論產品的極性(積極,中立或負面)感興趣,而且對人們談論的產品的哪些特定方面或特徵感興趣。 這就是基於方面的情感分析。 在我們前面的例子中:“這款相機的電池續航時間太短。”這句話表達了對相機的負面看法,但更準確地說,關於電池壽命,這是相機的一個特殊功能。

意圖分析:

意圖分析基本上是為了檢測人們通過文字做什麼,而不僅僅是人們通過文字說了什麼。 請看以下示例: “你的客戶支援是一場災難。 我已被擱置20分鐘“。 “我想知道如何更換墨盒”。 “你能幫我填一下這張表嗎?” 人們很容易在第一個文字中感覺出抱怨,第二個文字中的問題和第三個文字中的請求。 但是,機器可能會遇到一些問題。 有時,可以從文字中推斷出意圖,但有時,推斷它需要一些上下文知識。

多語言情感分析:

多語言情感分析是一項艱鉅的任務。 通常,需要進行大量預處理,並且預處理會使用大量資源。 大多數這些資源可線上獲得(例如情感詞典),但必須建立許多其他資源(例如翻譯的語料庫或噪聲檢測演算法)。 使用這些資源需要一定的程式設計能力,並且可能需要很長時間才能實現。

另一種方法是自動檢測文字中的語言,然後為您選擇的語言訓練自定義模型(如果文字不是用英語編寫的),最後進行分析。

1.5 為什麼情感分析如此重要?

據估計,世界上80%的資料都是非結構化的,沒有以預先定義的方式組織。 其中大部分來自文字資料,如電子郵件,票據,聊天,社交媒體,調查,文章和文件。 這些文字通常難以分析,理解和分類,既費時又費錢。

情感分析系統能夠讓公司,通過自動化業務流程,獲得可操作的洞察力,以及節省數小時的手動資料處理來理解這種非結構化文字,也就是說,通過提高團隊效率。

情感分析的優點如下所示:

  • 可擴充套件性: 您能想象通過成千上萬的推文,使用者對話或使用者評論手動排序嗎? 手動處理的話,資料太多了。 情感分析允許以有效且低成本的方式大規模處理資料。

  • 實時分析: 我們可以使用情感分析來識別關鍵資訊,以便在特定情景中實時提供態勢感知。 社交媒體即將爆發公關危機嗎? 一個憤怒的客戶即將流失? 情感分析系統可以幫助您立即識別這些情況並採取行動。

  • 一致的標準: 人類沒有觀察到評估一段文字情感的清晰標準。 據估計,在判斷特定文字的情感時,不同的人僅僅在60-65%的情況下同意。 這是一項主觀任務,深受個人經歷,思想和信仰的影響。 通過使用集中情感分析系統,公司可以對所有資料應用相同的標準。 這有助於減少錯誤並提高資料一致性。

檢視“應用案例”部分,檢視針對各種事物使用情感分析的公司和組織的示例。

2.如何實現情感分析

2.1 演算法:

實現情感分析系統的方法和演算法有很多種,可分為:

  • 基於規則:基於一組手動制定的規則執行情緒分析;
  • 自動系統:依靠機器學習技術從資料中學習的;
  • 混合系統:結合了基於規則和自動方法。

基於規則:

通常,基於規則的方法,通過指令碼定義了一組規則,用於識別主觀性,極性或意見主體。

規則可以使用各種輸入,例如:

  • 經典的NLP技術,如詞幹,符號,詞性標註和解析。
  • 其他資源,例如詞典(即單詞和表達方式列表)。

基於規則的實現的基本示例如下:

  1. 定義兩個極化詞列表(例如,差、最差、醜陋等負面詞和好、最佳、美麗等正面詞);
  2. 給出一個文字: 計算文字中出現的積極詞數。 計算文字中出現的否定詞數。 如果正面出現的數量大於否定單詞出現的數量則返回正面情緒,相反,返回負面情緒。 否則,返回中立。

這個系統非常簡單,因為它沒有考慮單詞如何在一個序列中組合。 可以進行更高階的處理,但這些系統很快就會變得非常複雜。 它們可能非常難以維護,因為可能需要新的規則來支援對新表示式和詞彙表。 此外,由於與先前規則的混合,新增新規則可能會產生不好的結果。 因此,這些系統需要在手動調整和維護規則方面佔用很多精力。

自動系統:

與基於規則的系統相反,自動的方法不依賴於手工製作的規則,而是依賴於機器學習。 情感分析任務通常被建模為分類問題,文字餵給分類器,然後返回相應的類別,例如, 正,負或中性(如果正在進行極性分析)。

機器學習分類器通常可以通過以下步驟來實現: image.png

訓練和預測過程:

在訓練過程(a)中,我們的模型學習基於訓練樣本,將特定輸入(即文字)與相應的輸出(標籤)相關聯。 特徵提取器將文字輸入傳輸到特徵向量中。 將成對的特徵向量和標籤(例如,正,負或中性)餵給到機器學習演算法中以生成模型。

在預測過程(b)中,特徵提取器用於將未見過的的文字輸入,變換為特徵向量。 然後將這些特徵向量餵給模型,該模型生成預測標籤(正,負或中性)。

從文字中提取特徵:

機器學習文字分類器的第一步是將文字轉換為數字表示,通常是向量。 通常,向量的每個分量表示預定義字典中的單詞或表達的頻率(例如,極性詞的詞典)。 這個過程被稱為特徵提取或文字向量化,並且經典方法一直是bag-of-words或帶有頻率的bag-of-ngrams

最近,基於詞嵌入(也稱為詞向量)應用了新的特徵提取技術。 這種表示使得具有相似含義的詞可以具有相似的表示,這可以改善分類器的效能。

分類演算法:

分類演算法通常涉及統計模型,如NaïveBayes,Logistic迴歸,支援向量機或神經網路:

  • NaïveBayes:一種概率統計模型,使用貝葉斯定理來預測文字的類別;
  • 線性迴歸:一種非常著名的統計演算法,用於在給定一組特徵(X)的情況下預測某些值(Y);
  • 支援向量機:一種非概率模型,它使用文字示例的表示作為多維空間中的點。 對映這些示例以便不同類別(情緒)的示例屬於該空間的不同區域。然後,新文字被對映到該相同空間並且預測屬於基於它們落入哪個區域的類別。
  • 深度學習:一組多樣化的演算法,試圖通過模仿人類大腦的工作方式,使用人工神經網路來處理資料。

情感分析評估標準:

你可以通過多種指標評估分類器的效能,並瞭解情感分析模型的準確程度。 最常用的一種稱為交叉驗證。

交叉驗證的作用是將訓練資料分成一定數量的訓練資料(75%的訓練資料)和測試測試資料(25%的訓練資料),訓練資料來訓練分類器,根據測試資料對其進行測試以獲得性能指標(見下文)。 該過程重複多次,並計算每個度量的平均值。

如果測試集總是相同的,那麼可能會過度擬合該測試集,這意味著可能會將分析調整到給定的資料集,以至於可能無法分析不同的集。 交叉驗證有助於防止這種情況。 您擁有的資料越多,您可以使用的折越多。

精確度,召回率和準確度(Precision, Recall, and Accuracy) 精確度,召回率和準確度是用於評估分類器效能的標準度量。

  • 精確度(Precision):測量預測為1的樣本中,多少被正確分類;
  • 召回率(Recall):實際為1的樣本中,多少被成功預測;
  • 準確度(Accuracy):測量語料庫中所有文字中正確預測了多少文字

最常見的是,精確度和召回率用於衡量效能,因為僅僅準確性並不能說明分類器的好壞。

對於像分析情感這樣的困難任務,精度和召回水平一開始可能很低。在為分類器提供更多資料時,效能會提高。但是,正如我們將在下面看到的那樣,由於帶註釋的資料可能不準確,因此精度水平可能不會太高。但是,如果您為分類器提供一致標記的資料,那麼結果將與任何其他分類問題的結果一樣好。

註釋之間的協議: 當涉及到註釋之間的協議(即人類對給定註釋任務的協議)時,最常用的指標之一是Krippendorff的Alpha。根據Saif等人的研究,Twitter情緒分析的最佳註釋間協議達到了Krippendorff的Alpha的0.655值。這意味著有很多協議(因為alpha大於零),但我們認為它仍然遠遠不夠(例如:大約0.8,這是社會科學家用來說資料可靠的最低可靠性閾值,見這裡)。這就是說,從上面引用的論文中描述的註釋任務的結果中只能得出推文情感的初步結論。

總而言之,這個0.655也是人類情感分析檢測難度的指標。考慮到機器從它們所餵養的資料中學習,自動預測可能反映了資料中嵌入的人為分歧。

混合方法:

混合方法的概念非常直觀:只需結合兩個方面的優點,即基於規則的方法和自動方法。 通常,通過組合兩種方法,該方法可以提高準確度和精度。

2.2 挑戰:

近年來情感分析的大部分工作都是開發更準確的分類演算法,不斷解決該領域的一些主要挑戰和侷限來。

主觀性和語氣:

主觀和客觀文字的檢測與分析其語氣一樣重要。 事實上,所謂的客觀文字不包含明確的情緒。 比如說,您打算分析以下兩個文字的情緒:“包很好。”“包裹是紅色的。” 大多數人會說第一個情緒是積極的,第二個情緒是中性的,對吧? 所有謂詞(形容詞,動詞和某些名詞)在創造情緒方面不應該被視為相同。 在上面的例子中,nice比red更主觀。

語境和極性:

所有的話語都會在某個時間點發出,在某些地方,對某些人說。所有的話語都是在上下文中說出來的。分析沒有上下文的情感非常困難。但是,如果未明確提及,機器無法瞭解上下文。上下文產生的問題之一是極性的變化。請檢視以下對調查的回覆:“它的一切。”“絕對沒有!” 想象一下上面的迴應,來自某個問題,“你對這次活動有什麼看法?”,的答案。第一個反應是積極的,第二個反應是否定的,對嗎?現在,想象一下另一個問題,“你對這個事件不喜歡什麼?”問題的否定將使情感分析完全改變。 如果我們要考慮產生文字的部分背景,就需要進行大量的預處理或後處理。但是,如何預處理或後處理資料以捕獲有助於分析情感的上下文位並不簡單。

反諷和諷刺:

字面意思和預期意義(即諷刺)之間的差異以及更具侮辱性或諷刺性的諷刺形式(即諷刺)通常會將積極情緒轉變為消極情緒,而消極情緒或中性情緒可能會改為正面情緒。然而,檢測諷刺或諷刺需要對文字產生的背景進行大量分析,因此很難自動檢測。

例如,對於問題,“您是否有過良好的客戶體驗?” “是啊,當然。”“不是一個,而是很多!”

上面的回答分別是什麼情感?可能你已經多次聽過第一個回覆,你會說是消極的,對嗎?問題是沒有任何文字提示會使機器學習負面情緒,因為大多數情況下,“是的”,肯定屬於正面或中性文字。

第二個迴應在這種情況下,情緒是積極的,但存在提出許多不同的背景,其中相同的反應可以表達負面情緒。

比較

如何處理情緒分析中的“比較”是另一個挑戰。 看看下面的文字: “這款產品首屈一指。”“這比舊工具更好。”“這總比沒有好。”

有一些比較,如上面的第一個,不需要任何上下文線索,可以被正確分類。 不過,第二和第三個文字更難被分類。 你會把它們歸類為中性還是積極的? 也許你更有可能為第二個選擇正面而第三個選擇中立,對嗎? 上下文可以再次發揮作用。 例如,如果第二個文字所討論的舊工具在上下文中被認為是無用的,那麼第二個文字與第三個文字非常相似。 但是,如果沒有提供上下文,這些文字會有所不同。

表情符號:

根據Guibon等人有兩種型別的表情符號。西方表情符號(例如 ?)僅編碼為一個字元或其中幾個字元的組合而東方表情符號(例如¯\ (ツ) /¯) 是垂直性質的更長的組合。 特別是在推文中,表情符號在文字的情感中非常重要。

通過推文進行的情感分析需要特別注意字元級別和單詞級別。 但是,這兩種都可能需要進行大量的預處理。 例如,您可能希望預處理社交媒體內容並將西方和東方表情符號轉換為tokens並將其列入白名單(即始終將其作為分類用途的特徵),以幫助改善情緒分析效能。

定義中性:

定義中性是另一個挑戰,以便進行準確的情緒分析。與所有分類問題一樣,定義類別 - 在本例中為中性標記 - 是問題中最重要的部分之一。當你訓練情緒分析模型時,你的中立,正面或負面意味著什麼。由於標記資料要求標記標準一致,因此必須對問題進行良好定義。

關於中性文字可能包含以下內容:

  • 1.客觀文字。正如我們在這裡所說的,所謂的客觀文字不包含明確的情緒,因此您應該將這些文字包含在中性類別中。
  • 2.無關的資訊。如果您尚未預處理資料,以過濾掉不相關的資訊,則可以將其標記為中性。但是要小心!只有在你知道這會如何影響整體效能時才這樣做。有時,你會在分類器中新增噪音,效能可能會變差。
  • 3.包含願望的文字。有些希望,例如希望產品有更多功能,通常是中性的。然而,包括“比較”在內的那些,比如我希望產品更好,很難分類。

2.3 情感分析到底有多準確:

情感分析:即使對於人類來說,這也是一項非常艱鉅的任務。也就是說,情感分析分類器可能不如其他型別的分類器那麼精確。請記住,註釋間協議非常低,機器從它們所提供的資料中學習(見上文)。

你可能會說,這值得努力嗎?答案很簡單:確實值得!有可能情感預測會不時出錯,但通過使用情感,對文字進行分類,可以再70-80%的時間內正確對待。

如果您或您的公司之前沒有使用過情緒分析,那麼您會很快看到一些改進。對於典型的用例,例如票證路由,品牌監控和VoC分析(見下文),這意味著您將節省大量時間和金錢——現在可能投資於內部的手動處理——並提高你(或你公司的)生產力。