自然語言處理(NLP)語義分析--文本分類、情感分析、意圖識別


轉載來源:https://blog.csdn.net/weixin_41657760/article/details/93163519

第一部分:文本分類

訓練文本分類器過程見下圖:
alt
文本分類問題: 給定文檔p(可能含有標題t),將文檔分類爲n個類別中的一個或多個
文本分類應用: 常見的有垃圾郵件識別,情感分析
文本分類方向: 主要有二分類,多分類,多標籤分類
文本分類方法: 傳統機器學習方法(貝葉斯,svm等),深度學習方法(fastText,TextCNN等)
文本分類的處理大致分爲文本預處理、文本特徵提取、分類模型構建等。和英文文本處理分類相比,中文文本的預處理是關鍵技術。

一、文本預處理(解決特徵空間高維性、語義相關性和特徵分佈稀疏)

1、中文分詞技術
爲什麼分詞處理?因爲研究表明特徵粒度爲詞粒度遠遠好於字粒度,其大部分分類算法不考慮詞序信息,基於字粒度的損失了過多的n-gram信息。

中文分詞主要分爲兩類方法:基於詞典的中文分詞和基於統計的中文分詞。

  1. 基於詞典的中文分詞
  • 核心是首先建立統一的詞典表,當需要對一個句子進行分詞時,首先將句子拆分成多個部分,將每一個部分與字典一一對應,如果該詞語在詞典中,分詞成功,否則繼續拆分匹配直到成功。所以字典,切分規則和匹配順序是核心。
  1. 基於統計的中文分詞方法
  • 統計學認爲分詞是一個概率最大化問題,即拆分句子,基於語料庫,統計相鄰的字組成的詞語出現的概率,相鄰的詞出現的次數多,就出現的概率大,按照概率值進行分詞,所以一個完整的語料庫很重要。
  1. 基於理解的分詞方法
  • 基於理解的分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由於漢語語言知識的籠統、複雜性,難以將各種語言信息組織成機器可直接讀取的形式,因此目前基於理解的分詞系統還處在試驗階段。

2、去除停用詞
建立停用詞字典,停用詞主要包括一些副詞、形容詞及其一些連接詞。通過維護一個停用詞表,實際上是一個特徵提取的過程,本質 上是特徵選擇的一部分。

二、文本特徵提取

1、詞袋模型

  1. 思想:
  • 建立一個詞典庫,該詞典庫包含訓練語料庫的所有詞語,每個詞語對應一個唯一識別的編號,利用one-hot文本表示。
  1. 文檔的詞向量維度與單詞向量的維度相同,每個位置的值是對應位置詞語在文檔中出現的次數,即詞袋模型(BOW))

  2. 問題:

  • (1)容易引起維度災難問題,語料庫太大,字典的大小爲每個詞的維度,高維度導致計算困難,每個文檔包含的詞語數少於詞典的總詞語數,導致文檔稀疏。
  • (2)僅僅考慮詞語出現的次數,沒有考慮句子詞語之間的順序信息,即語義信息未考慮

2、TF-IDF文本特徵提取

  • 利用TF和IDF兩個參數來表示詞語在文本中的重要程度。

  • TF是詞頻:
    指的是一個詞語在一個文檔中出現的頻率,一般情況下,每一個文檔中出現的詞語的次數越多詞語的重要性更大,例如BOW模型一樣用出現次數來表示特徵值,即出現文檔中的詞語次數越多,其權重就越大,問題就是在長文檔中 的詞語次數普遍比短文檔中的次數多,導致特徵值偏向差異情況。

  • TF體現的是詞語在文檔內部的重要性。

  • IDF是體現詞語在文檔間的重要性

    • 即如果某個詞語出現在極少數的文檔中,說明該詞語對於文檔的區別性強,對應的特徵值高,IDF值高,IDFi=log(|D|/Ni),D指的是文檔總數,Ni指的是出現詞語i的文檔個數,很明顯Ni越小,IDF的值越大。
  • 最終TF-IDF的特徵值的表達式爲:TF-IDF(i,j)=TFij*IDFi

3、基於詞向量的特徵提取模型

  • 想基於大量的文本語料庫,通過類似神經網絡模型訓練,將每個詞語映射成一個定維度的向量,維度在幾十到化百維之間,每個向量就代表着這個詞語,詞語的語義和語法相似性和通過向量之間的相似度來判斷。

  • 常用的word2vec主要是CBOW和skip-gram兩種模型,由於這兩個模型實際上就是一個三層的深度神經網絡,其實NNLM的升級,去掉了隱藏層,由輸入層、投影層、輸出層三層構成,簡化了模型和提升了模型的訓練速度,其在時間效率上、語法語義表達上效果明顯都變好。word2vec通過訓練大量的語料最終用定維度的向量來表示每個詞語,詞語之間語義和語法相似度都可以通過向量的相似度來表示。

三、分類模型

1、傳統機器學習方法:
​ 傳統機器學習算法中能用來分類的模型都可以用,常見的有:NB模型,隨機森林模型(RF),SVM分類模型,KNN分類模型模型。

2、深度學習文本分類模型

  • fastText模型
    alt
    原理: 句子中所有的詞向量進行平均(某種意義上可以理解爲只有一個avg pooling特殊CNN),然後直接連接一個 softmax 層進行分類。

  • TextCNN:利用CNN來提取句子中類似 n-gram 的關鍵信息

    模型結構[4]:
    alt
    alt
    改進: fastText 中的網絡結果是完全沒有考慮詞序信息的,而TextCNN提取句子中類似 n-gram 的關鍵信息。

  • TextRNN

    模型: Bi-directional RNN(實際使用的是雙向LSTM)從某種意義上可以理解爲可以捕獲變長且雙向的的 “n-gram” 信息。
    alt
    改進: CNN有個最大問題是固定 filter_size 的視野,一方面無法建模更長的序列信息,另一方面 filter_size 的超參調節也很繁瑣。

  • TextRNN + Attention

    模型結構:
    alt
    改進:注意力(Attention)機制是自然語言處理領域一個常用的建模長時間記憶機制,能夠很直觀的給出每個詞對結果的貢獻,基本成了Seq2Seq模型的標配了。實際上文本分類從某種意義上也可以理解爲一種特殊的Seq2Seq,所以考慮把Attention機制引入近來。

  • TextRCNN(TextRNN + CNN)

    模型結構:
    alt
    過程:
    利用前向和後向RNN得到每個詞的前向和後向上下文的表示:
    alt
    詞的表示變成詞向量和前向後向上下文向量連接起來的形式:
    alt
    再接跟TextCNN相同卷積層,pooling層即可,唯一不同的是卷積層 filter_size = 1就可以了,不再需要更大 filter_size 獲得更大視野。

第二部分:情感分析

一、概述

​ 情感分析是自然語言處理中常見的場景,比如淘寶商品評價,餓了麼外賣評價等,對於指導產品更新迭代具有關鍵性作用。通過情感分析,可以挖掘產品在各個維度的優劣,從而明確如何改進產品。比如對外賣評價,可以分析菜品口味、送達時間、送餐態度、菜品豐富度等多個維度的用戶情感指數,從而從各個維度上改進外賣服務。

​ 情感分析可以採用基於情感詞典的傳統方法,也可以採用基於機器學習的方法。

二、基於情感詞典的情感分類方法

1、基於詞典的情感分類步驟

​ 基於情感詞典的方法,先對文本進行分詞和停用詞處理等預處理,再利用先構建好的情感詞典,對文本進行字符串匹配,從而挖掘正面和負面信息。如圖:
alt
2、情感詞典
​ 情感詞典包含正面詞語詞典、負面詞語詞典、否定詞語詞典、程度副詞詞典等四部分。一般詞典包含兩部分,詞語和權重。
alt
情感詞典在整個情感分析中至關重要,所幸現在有很多開源的情感詞典,如BosonNLP情感詞典,它是基於微博、新聞、論壇等數據來源構建的情感詞典,以及知網情感詞典等。當然也可以通過語料來自己訓練情感詞典。

3、情感詞典文本匹配算法
​ 基於詞典的文本匹配算法相對簡單。逐個遍歷分詞後的語句中的詞語,如果詞語命中詞典,則進行相應權重的處理。正面詞權重爲加法,負面詞權重爲減法,否定詞權重取相反數,程度副詞權重則和它修飾的詞語權重相乘。如圖:
alt
利用最終輸出的權重值,就可以區分是正面、負面還是中性情感了。
4、缺點
​ 基於詞典的情感分類,簡單易行,而且通用性也能夠得到保障。但仍然有很多不足:

  • 精度不高,語言是一個高度複雜的東西,採用簡單的線性疊加顯然會造成很大的精度損失。詞語權重同樣不是一成不變的,而且也難以做到準確。
  • 新詞發現,對於新的情感詞,比如給力,牛逼等等,詞典不一定能夠覆蓋。
  • 詞典構建難,基於詞典的情感分類,核心在於情感詞典。而情感詞典的構建需要有較強的背景知識,需要對語言有較深刻的理解,在分析外語方面會有很大限制。

三、基於機器學習的情感分類方法

即爲分類問題,文本分類中的各方法均可採用。

第三部分:意圖識別

一、概述

意圖識別是通過分類的辦法將句子或者我們常說的query分到相應的意圖種類。

​舉一個簡單的例子,我想聽周杰倫的歌,這個query的意圖便是屬於音樂意圖,我想聽郭德綱的相聲便是屬於電臺意圖。做好了意圖識別以後對於很多nlp的應用都有很重要的提升,比如在搜索引擎領域使用意圖識別來獲取與用戶輸入的query最相關的信息。舉個例子,用戶在查詢"生化危機"時,我們知道"生化危機"既有遊戲還有電影,歌曲等等,如果我們通過意圖識別發現該用戶是想玩"生化危機"的遊戲時,那我們直接將遊戲的查詢結果返回給用戶,就會節省用戶的搜索點擊次數,縮短搜索時間,大幅提高用戶的體驗。

​再舉一個目前最火熱的聊天機器人來說明一下意圖識別的重要性。目前各式各樣的聊天機器人,智能客服,智能音箱所能處理的問題種類都是有限制的。比如某聊天機器人目前只有30個技能,那麼用戶向聊天機器人發出一個指令,聊天機器人首先得根據意圖識別將用戶的query分到某一個或者某幾個技能上去,然後再進行後續的處理。 做好了意圖識別以後,那種類似於電影場景裏面人機交互就有了實現的可能,用戶向機器發來的每一個query,機器都能準確的理解用戶的意圖,然後準確的給予回覆。人與機器連續,多輪自然的對話就可以藉此實現了。

二、意圖識別的基本方法

1、基於詞典以及模版的規則方法:不同的意圖會有的不同的領域詞典,比如書名,歌曲名,商品名等等。當一個用戶的意圖來了以後我們根據意圖和詞典的匹配程度或者重合程度來進行判斷,最簡單一個規則是哪個domain的詞典重合程度高,就將該query判別給這個領域。

2、基於查詢點擊日誌:如果是搜索引擎等類型業務場景,那麼我們可以通過點擊日誌得到用戶的意圖。

3、基於分類模型來對用戶的意圖進行判別:因爲意圖識別本身也是一個分類問題,其實方法和分類模型的方法大同小異。

三、意圖識別的難點

​ 意圖識別工作最大的難點其實是在於標註數據的獲取。目前標註數據的獲取主要來自兩方面,一方面是專門的數據標註團隊對數據進行標註,一方面是通過半監督的方式自動生成標註數據。

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