1. 程式人生 > >NLP︱句子級、詞語級以及句子-詞語之間相似性(相關名稱:文件特徵、詞特徵、詞權重)

NLP︱句子級、詞語級以及句子-詞語之間相似性(相關名稱:文件特徵、詞特徵、詞權重)

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~

———————————————————————————


      關於相似性以及文件特徵、詞特徵有太多種說法。弄得好亂,而且沒有一個清晰邏輯與歸類,包括一些經典書籍裡面也分得概念模糊,所以擅自分一分。


——————————————————————————————————————————————

一、單詞的表示方式

1、詞向量

      詞向量是現行較為多的方式,另外一篇部落格已經寫了四種詞向量的表達方式,兩兩之間也有遞進關係,BOW可升級到LDA;hash可升級到word2vec,繼續升級doc2vec。參考:

自然語言處理︱簡述四大類文字分析中的“詞向量”(文字詞特徵提取)

2、TF

詞頻有兩類:在本文件的詞頻以及單詞在所有文件的詞頻。

3、TFIDF

TF-IDF(term frequency–inverse document frequency)是一種用於資訊搜尋和資訊挖掘的常用加權技術。在搜尋、文獻分類和其他相關領域有廣泛的應用。

TF-IDF的主要思想是,如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF詞頻(Term Frequency)指的是某一個給定的詞語在該檔案中出現的次數。IDF反文件頻率(Inverse Document Frequency)的主要思想是:如果包含詞條的文件越少,IDF越大,則說明詞條具有很好的類別區分能力。

使用TF*IDF可以計算某個關鍵字在某篇文章裡面的重要性,因而識別這篇文章的主要含義,實現計算機讀懂文章的功能。

4、ATC,Okapi,LTU

這三種權重方案都是TF-IDF的變種,引入了其它的因素。ATC引入了所有文件中的詞語的最大頻率,同時使用了歐幾里德距離作為文件長度歸一化考慮。Okapi和LTU使用了類似的方式來考慮文件長度(文件長度越長,那麼相對來說,詞語的頻率也越高,所以,需要對於長文件給出一定的懲罰,但又不能懲罰太厲害,因此:dl/avg_dl),但它們採用了不同的方式來處理詞語的頻率。LTU使用的是log(fij),而Okapi使用的是fij/(fij + 2)。


(圖片來源:文件中詞語權重方案一覽

——————————————————————————————————————————————

二、詞語與詞語間

1、點間互資訊(PMI)

點間互資訊(PMI)主要用於計算詞語間的語義相似度,基本思想是統計兩個詞語在文字中同時出現的概率,如果概率越大,其相關性就越緊密,關聯度越高。兩個詞語word1與word2的PMI值計算公式如下式所示為:
(從中可以看到這個值代表著,x在y出現情況的概率,同時也y在x出現情況下的概率)
P(word1&word2)表示兩個詞語word1與word2共同出現的概率,即word1與word2共同出現的文件數, P(word1)與P(word2)分別表示兩個詞語單獨出現的概率,即word出現的文件數。若兩個詞語在資料集的某個小範圍內共現概率越大,表明其關聯度越大;反之,關聯度越小。P(word1&word2)與P(word1)P(word2)的比值是word1與word2兩個詞語的統計獨立性度量。其值可以轉化為3 種狀態:P(word1&word2) > 0;兩個詞語是相關的;值越大,相關性越強。 P(word1&word2) = 0;兩個詞語是統計獨立的,不相關也不互斥。P(word1&word2) < 0;兩個詞語是不相關的,互斥的。

當X,Y關聯大時,MI(X,Y)大於0;當X與Y關係弱時,MI(X,Y)等於0;當MI(X,Y)小於0時,X與Y稱為“互補關係”(參考於部落格:關鍵詞與關鍵詞之間的相關度計算

2、PMI延伸版:情感傾向SO-PMI

情感傾向點互資訊演算法(Semantic Orientation Pointwise Mutual Information, SO-PMI)是將PMI方法引入計算詞語的情感傾向(Semantic Orientation,簡稱SO)中,從而達到捕獲情感詞的目地。基於點間互資訊SO-PMI 演算法的基本思想是:首先分別選用一組褒義詞跟一組貶義詞作為基準詞,假設分別用Pwords與Nwords來表示這兩組詞語。這些情感詞必須是傾向性非常明顯,而且極具領域代表性的詞語。若把一個詞語word1跟Pwords的點間互資訊減去word1跟Nwords的點間互資訊會得到一個差值,就可以根據該差值判斷詞語word1的情感傾向。其計算公式如下式所示:
通常情況下,將0作為SO-PMI 演算法的閥值。由此可以將得到三種狀態:SO-PMI(word1)  > 0;為正面傾向,即褒義詞 SO-PMI(word1) = 0;為中性傾向,即中性詞SO-PMI(word1) < 0;為負面傾向,即貶義詞

(1)互資訊(Mutual Information,MI)在文字自動分類中的應用,體現了詞和某類文字的相關性

(2)新詞發現的思路如下:對訓練集中的文字進行字頻的統計,並且統計相鄰的字之間的互資訊,當互資訊的值達到某一個閥值的時候,我們可以認為這兩個字是一個詞,三字,四字,N字的詞可以在這基礎上進行擴充套件
(3)計算 檢索的關鍵字與檢索結果的相關性,而這種計算又可以轉換為 檢索的關鍵字與檢索結果的詞的相關性計算。此時還是可以使用互資訊(Mutual Information,MI)來進行計算,但是計算的數量要增加不少

(4)互資訊(Mutual Information,MI) 的缺點是 前期預處理的計算量比較大,計算結果會形成一個 big table,當然只要適當調整閥值還是可以接受的。

3、MI進化版——左右資訊熵★

熵這個術語表示隨機變數不確定性的量度。具體表述如下: 一般地, 設X 是取有限個值的隨機變數( 或者說X 是有限個離散事件的概率場) , X 取值x 的概率為P ( x ) , 則X 的熵定義為:

左右熵是指多字詞表達的左邊界的熵和右邊界的熵。左右熵的公式如下:

具體計算方法是,以左熵為例,對一個串左邊所有可能的詞以及詞頻,計算資訊熵,然後求和。

上面的結果中很多熵是0,說明它只有一種接續。

——————————————————————————————————————————————

三、詞語與句子間

1、DF(Document Frequency)/IDF

DF:統計特徵詞出現的文件數量,用來衡量某個特徵詞的重要性,DF的定義如下:

  DF的動機是,如果某些特徵詞在文件中經常出現,那麼這個詞就可能很重要。而對於在文件中出現很少(如僅在語料中出現1次)特徵詞,攜帶了很少的資訊量,甚至是"噪聲",這些特徵詞,對分類器學習影響也是很小。

  DF特徵選擇方法屬於無監督的學習演算法(也有將其改成有監督的演算法,但是大部分情況都作為無監督演算法使用),僅考慮了頻率因素而沒有考慮類別因素,因此,DF演算法的將會引入一些沒有意義的詞。如中文的"的"、"是", "個"等,常常具有很高的DF得分,但是,對分類並沒有多大的意義。

2、MI(Mutual Information)

  互資訊法用於衡量特徵詞與文件類別直接的資訊量,互資訊法的定義如下:

  繼續推導MI的定義公式:

  從上面的公式上看出:如果某個特徵詞的頻率很低,那麼互資訊得分就會很大,因此互資訊法傾向"低頻"的特徵詞。相對的詞頻很高的詞,得分就會變低,如果這詞攜帶了很高的資訊量,互資訊法就會變得低效。

3、IG(Information Gain)

  資訊增益法,通過某個特徵詞的缺失與存在的兩種情況下,語料中前後資訊的增加,衡量某個特徵詞的重要性。

資訊增益的定義如下:

  依據IG的定義,每個特徵詞ti的IG得分前面一部分:計算值是一樣,可以省略。因此,IG的計算公式如下:

IG與MI存在關係:

因此,IG方式實際上就是互資訊與互資訊加權。

4、CHI(Chi-square)

CHI特徵選擇演算法利用了統計學中的"假設檢驗"的基本思想:首先假設特徵詞與類別直接是不相關的,如果利用CHI分佈計算出的檢驗值偏離閾值越大,那麼更有信心否定原假設,接受原假設的備則假設:特徵詞與類別有著很高的關聯度。CHI的定義如下:

對於一個給定的語料而言,文件的總數N以及Cj類文件的數量,非Cj類文件的數量,他們都是一個定值,因此CHI的計算公式可以簡化為:

CHI特徵選擇方法,綜合考慮文件頻率與類別比例兩個因素

要選擇一種度量,來有效地選擇出特徵詞向量。基於論文《A comparative study on feature selection in text categorization》,我們選擇基於卡方統計量(chi-square statistic, CHI)技術來實現選擇,這裡根據計算公式:

其中,公式中各個引數的含義,說明如下:

  • N:訓練資料集文件總數
  • A:在一個類別中,包含某個詞的文件的數量
  • B:在一個類別中,排除該類別,其他類別包含某個詞的文件的數量
  • C:在一個類別中,不包含某個詞的文件的數量
  • D:在一個類別中,不包含某個詞也不在該類別中的文件的數量

要想進一步瞭解,可以參考這篇論文。
使用卡方統計量,為每個類別下的每個詞都進行計算得到一個CHI值,然後對這個類別下的所有的詞基於CHI值進行排序,選擇出最大的topN個詞(很顯然使用堆排序演算法更合適);最後將多個類別下選擇的多組topN個詞進行合併,得到最終的特徵向量。

5、WLLR(Weighted Log Likelihood Ration)

WLLR特徵選擇方法的定義如下:

  計算公式如下:

6、WFO(Weighted Frequency and Odds)

最後一個介紹的演算法,是由蘇大李壽山老師提出的演算法。通過以上的五種演算法的分析,李壽山老師認為,"好"的特徵應該有以下特點:

  • 好的特徵應該有較高的文件頻率
  • 好的特徵應該有較高的文件類別比例

WFO的演算法定義如下:

如果

否則:

不同的語料,一般來說文件詞頻與文件的類別比例起的作用應該是不一樣的,WFO方法可以通過調整引數,找出一個較好的特徵選擇依據。

——————————————————————————————————————————————

四、句子與句子間

句子之間的相似性,一般用詞向量組成句向量。

根據詞向量組成句向量的方式:

如果是一詞一列向量,一般用簡單相加(相加被證明是最科學)來求得;

一個詞一值的就是用詞權重組合成向量的方式;

谷歌的句向量sen2vec可以直接將句子變為一列向量。



——————————————————————————————————————————————

五、一些案例摘要

1、利用點間互資訊+滑動視窗  組成短語

怎樣確定兩個詞是否是固定的搭配呢?我們通過計算兩個詞間的歸一化逐點互資訊(NPMI)來確定兩個詞的搭配關係。逐點互資訊(PMI),經常用在自然語言處理中,用於衡量兩個事件的緊密程度。

歸一化逐點互資訊(NPMI)是逐點互資訊的歸一化形式,將逐點互資訊的值歸一化到-1到1之間。

如果兩個詞在一定距離範圍內共同出現,則認為這兩個詞共現。篩選出NPMI高的兩個詞作為固定搭配,然後將這組固定搭配作為一個組合特徵新增到分詞程式中。如“回答”和“問題”是一組固定的搭配,如果在標註“回答”的時候,就會找後面一段距離範圍內是否有“問題”,如果存在那麼該特徵被啟用。

歸一化逐點互資訊(npmi)的計算公式逐點互資訊(pmi)的計算公式

滑動視窗

可以看出,如果我們提取固定搭配不限制距離,會使後面偶然出現某個詞的概率增大,降低該統計的穩定性。在具體實現中,我們限定了成為固定搭配的詞對在原文中的距離必須小於一個常數。具體來看,可以採用倒排索引,通過詞找到其所在的位置,進而判斷其位置是否在可接受的區間。這個簡單的實現有個比較大的問題,即在特定構造的文字中,判斷兩個詞是否為固定搭配有可能需要遍歷位置陣列,每次查詢就有O(n)的時間複雜度了,並且可以使用二分查詢進一步降低複雜度為O(logn)。

其實這個詞對檢索問題有一個更高效的演算法實現。我們採用滑動視窗的方法進行統計:在列舉詞的同時維護一張詞表,儲存在當前位置前後一段距離中出現的可能成詞的字元序列;當列舉詞的位置向後移動時,視窗也隨之移動。

這樣在遍歷到 “回答” 的時候,就可以通過查表確定後面是否有 “問題” 了,同樣在遇到後面的 “問題” 也可以通過查表確定前面是否有 “回答”。當列舉下一個詞的時候,詞表也相應地進行調整。採用雜湊表的方式查詢詞表,這樣計算一個固定搭配型時間複雜度就可以是O(1)了。

通過引入上述的上下文的資訊,分詞與詞性標註的準確率有近1%的提升,而對演算法的時間複雜度沒有改變。我們也在不斷迭代升級以保證引擎能夠越來越準確,改善其通用性和易用性。

——————————————————————————————————————————————

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~

———————————————————————————