文本分類方法介紹N-gram

2021-02-13 奇標大數據

N-gram技術曾被廣泛地用來進行文本壓縮、檢查拼寫錯誤、加速字符串查找等。後來該技術又應用在自然語言處理自動化處理,例如自動分類、自動索引、超鏈的自動生成、文獻檢索、文本的切分等。

目前N-gram最為有用的就是自然語言的自動分類功能。基於n-gram的自動分類方法有兩大類,一類是人工幹預的分類(Classification),又稱分類;一類是無人工幹預的分類(Clustering),又稱聚類。人工幹預的分類,是指人工預先分好類,然後計算機根據特定算法自動地將新添加到資料庫的文獻劃歸某一類。這類方法缺點是,人們須預先具備關於整個文獻庫和分類的知識。無人工幹預的分類,是指計算機自動地識別文獻組(集合),人們勿需預先具備關於整個文獻庫和分類的知識。

(1)特點:N-gram項的生成:為了得到字符串中結尾部分的字符串,對不夠n的字符串追加空格。如:Text的3-gram項為_Te、Tex、ext、xt_、t__。類的表示:先計算類別中所有訓練文本的n-gram項的詞頻,然後按詞頻對其由大到小進行排序,最後保留從第n(實驗中等於300)項開始的k個n-gram項作為此類的特徵值。Note: These profiles are for explanatory purpose only and do not reflect real n-gram frequency statistics.
(2)優點:容錯性強,可以允許文本中有拼寫錯誤等噪聲。
(3)用途:區分測試文檔是何種語言,即語言分類;自動文本分類Bayes分類器是一個性能很好的線性分類器,但是它假設文檔的每個分類特徵屬性間是相互獨立的,這顯然是不成立的。假設di={wi1,wi2,…,win}為一任意文檔,它屬於文檔類C={c1, c2,…, ck}中的某一類cj。根據Bayes分類器有:如果使用Bayes網絡來描述特徵屬性間的聯繫,則失去了Bayes模型的簡單性和線性特徵。我們使用了統計語言學中的N-Gram模型,它假設一個詞在文檔中某個位置出現的概率僅與它之前的n-1個詞有關,即:我們可以得到在某個類別c的文檔集中,w1,w2,…,wT出現的概率為:這樣放鬆了Bayes模型中每個特徵屬性相互獨立的假設,在計算一個文檔在某個類別中的概率時考慮了文本中一些特徵屬性間的相互聯繫。對於文檔中的特徵屬性wi,我們使用N-gram的方法進行生成,這樣使特徵屬性生成的過程獨立於領域、與時間和詞典無關,分類器對詞法方面的噪聲不敏感。直觀地來說,概率 定義1在文檔d中,N-gram項t的頻度用它在d中出現的次數tf表示。定義2在文檔類c中,N-gram項t的分散度用c中包含t的文檔數目df表示。df越大,則t在c中越分散;反之,越不分散。定義3在文檔集D中,N-gram項t的集中度用D中包含t的文檔類數目cf表示。cf越小,則t在D中的越集中;反之,越不集中。直觀地,對於N-gram項t,其在文檔中的頻度越高、在文檔類裡的分散度越大、在訓練文檔集內的集中度越強,則它對分類越有用,即分辨度越強。不過,目前還沒有找到很好的數學方法來綜合頻度、分散度和集中度這三個因素,使得選出的文檔屬性能夠獲得最優分類效果。為了減少提取不必要的N-Gram項,在提取N-gram項時加如下兩個約束條件:約束1對於預先給定的最小頻度值min-tf,在文檔d中某一N-gram項t被提取的先決條件是它在d中的tf ³min-tf。約束2對於預先給定的最小分散度值min-df,在文檔類c中某一N-gram項t被提取的先決條件是它在c中的df ³min-df。在實驗中,我們一般取min-tf和min-df為2。一種直接的N-gram項提取方法是只掃描一遍文檔,一次性將所有滿足上述兩個約束條件的N-gram項取出。由於只需掃描一遍文檔,這種方法對於較小的訓練文檔庫是有效的。但對於大訓練庫,則需要很大的內存空間。否則,就得在內存和外存之間不斷交換中間結果。這裡採用一種分步提取的方法,其基本思想是:先提取符合約束條件的1-gram項;從選擇得到的1-gram項構造候選2-gram項,剔除其中不符合約束條件的候選項,得到真正需要的2-gram項。依此方法,提取其它N-gram(N=3,4,…)項。為了說明N-grams提取算法,先給出一個定義和引理。定義4(子項) 若有i-Gram和j-Gram(i ³ j),且j-Gram包含在i-Gram中,則稱j-Gram為i-Gram的子項,記為j-Gram Í i-Gram。性質1若有i-Gram滿足約束1和2,則i-Gram的所有子項都滿足約束1和約束2。輸入:文檔庫D、min-tf、min-df和max-N(N的最大值)。輸出:滿足約束條件1和2的N-Gram項的集合S(N=1~max-N)。1.       求1-Gram項集合S1:逐個掃描文檔庫D中的文檔,提取所有1-Gram項,拋棄不滿足約束1和約束2的項,得到1-Gram項集合S1;2.       求2-Gram項集合S2:將S1中的項兩兩組合,得到候選2-Gram項集合C2。拋棄C2中不滿足約束1和約束2的項,得到2-Gram項集合S2;3.       求i-Gram項集合Si(i=3~max-M):a)      由Si-1(i=2-max-M)求候選i-Gram項集合Ci;b)     對於Si-1中的任意兩項tm、tn,tm (k)和tn(k) (k=1~ (i-1))分別表示tm和tn中的第k個字。若tm (k+1)=tn(k)(k=1~(i-2)),則Ci =CiÈ tm tn(i-1);c)      拋棄Ci中不滿足約束1和約束2的項,得到i-Gram項集合Si。使用N-Gram項進行文本分類,最基本的要求是所選擇的N-Gram項能夠覆蓋文檔中的詞。因此,並非N-Gram項越多越好。這就涉及如何選擇參數N的問題。根據對中文文檔中詞的字數構成與分布的統計分析,發現中文文檔中主要詞條為1字、2字、3字和4字詞條,因此,用這些詞條可以比較完整地表達文檔語義。這樣意味著在用N-Gram進行文檔分類時,只需取1-Gram、2-Gram、3-Gram和4-Gram項,即最大的N值取4。

相關焦點

  • NLP中的N-gram模型詳解
    :垃圾簡訊分類3.3 用途三:分詞器3.4 機器翻譯和語音識別3.5 N-gram 中 N 的確定3.6 N-gram 的數據平滑方法-Kneser-Ney Smoothing3.7 N-gram 對訓練數據的要求3.8 N-gram 進化版:NNLM3.9 NNLM 進化版:RNNLM
  • 短文本分類常見技術:文本表示
    在chatbot的構建過程中,對用戶的意圖進行識別是其中比較重要的一個部分,而意圖識別的核心問題是如何對短文本進行分類。短文本由於自身內容的長度相較於長文本而言比較短,包含信息量少、容易存在語義歧義,這些都是短文本分類時需要考慮的問題。為了對短文本進行分析,我們首先需要將其轉化為便於計算機處理的數據形式,下面介紹一些常見的建模方法。
  • 【乾貨】自然語言處理中N-Gram模型介紹
    推薦閱讀時間5min~12min主要內容:n-gram模型的詳細講解N-Gram是一種基於統計語言模型的算法。它的基本思想是將文本裡面的內容按照字節進行大小為N的滑動窗口操作,形成了長度是N的字節片段序列。
  • fastText,智慧與美貌並重的文本分類及向量化工具
    fastText開源、免費、輕量級,適用於文本分類和文本向量化表示場景,運行於標準硬體環境。裁剪壓縮過的模型甚至可以輕鬆跑在行動裝置上。 fastText最驚豔的地方在於,和最前沿深度神經網絡模型相比,它在分類精度等指標毫不遜色的情況下,把訓練和推斷速度降低了幾個數量級!
  • 乾貨| 深度學習在文本分類中的應用
    作者:llhthinker個人博客:http://www.cnblogs.com/llhthinker/1 文本分類任務介紹文本分類是自然語言處理的一個基本任務,試圖推斷出給定的文本(句子、文檔等)的標籤或標籤集合
  • 文本分類經典論文:fasttext,textcnn解讀
    文本分類是自然語言處理領域一個非常經典的任務,一般文本分類分為三種,基於規則的文本分類,基於機器學習的文本分類和基於深度學習的文本分類。本文我們重點關注基於深度學習的文本分類,並為大家介紹文本分類中非常經典的fasttext和textcnn。
  • Facebook 開源的快速文本分類器 FastTex
    FastText是Facebook開發的一款快速文本分類器,提供簡單而高效的文本分類和表徵學習的方法,性能比肩深度學習而且速度更快。
  • 乾貨|全面理解N-Gram語言模型
    而N-Gram模型也就是這樣,當m=1,叫1-gram或者unigram ;m=2,叫2-gram或者bigram ;當 m=3叫3-gram或者trigram ;當m=N時,就表示的是N-gram啦。
  • 自然語言處理科普系列(一)N-gram語言模型
    本文討論的語言模型是基於統計方法N-gram實現的,除了N-gram也有不少更複雜的實現方法,例如通過構建神經網絡語言模型去預測文本概率等等。當然,任何技術都要有其應用價值才值得去研究,語言模型有著豐富的應用案例,包括語音識別中糾正聲學模型的結果、搜尋引擎中拼寫糾正或語法錯誤糾正、機器翻譯中提供結果的精度和語法性等,同時語言模型也是很多其它NLP技術的重要基礎。
  • 中文文本分類:你需要了解的10項關鍵內容
    4、分詞、N-gram和Skip-gram由於計算機無法識別自然語言,我們自然也就無法直接將原始文本直接扔到分類算法當中得到分類結果。因此我們需要先將文本轉化為一定格式的特徵編碼,文本分類區別於其他文類問題的特點在於此。
  • 數據挖掘之文本分類技術,最詳細的原理解讀
    (3)N-gram:它是一種基於統計的方法,設定一個大小為 N 的窗口,從文本第一個字符開始,對文本進行分割,所以它不需要分詞操作,可以自動化的處理中文文本。同時 N-gram 是語言無關的,所以可以處理其它各種語言的文本。
  • 【乾貨】通俗理解自然語言處理中N-Gram模型
    推薦閱讀時間5min~12min主要內容:n-gram模型的詳細講解N-Gram是一種基於統計語言模型的算法。它的基本思想是將文本裡面的內容按照字節進行大小為N的滑動窗口操作,形成了長度是N的字節片段序列。
  • 【語言模型】用N-gram來做完形填空
    更詳細的內容請看之前的文章:【語言模型】從N-gram模型講起那麼N-gram模型要如何應用到我們的完形填空任務中呢?首先我們需要有一個語料庫,這裡使用PTB文本數據集,它是語言模型中一個廣泛應用的數據集。
  • 文本分類需要CNN? No!fastText完美解決你的需求(上篇)
    僅這一篇文章,讓你了解word2vec的原理, CBOW、Skip-gram模型,以及目前業界最流行的文本分類算法——fastText。 2013年,Google的大牛Tomas Mikolov開源了word2vec算法,轟動一時(託馬斯大牛現在就職於FaceBook,並在16年中下旬開源了fastText算法,沒辦法,速度太快了)。
  • 「NLP」N-Gram語言模型初探
    在給定文本中出現的次數同樣的用最大似然估計計算條件概率:具體的計算實例可以參考宗成慶老師著《統計自然語言處理(第2版)》二、n-gram 語言模型的工具 — kenlm限於篇幅,這裡我們僅僅介紹如何安裝和使用kenlm,詳細信息參考kenlm官網,後續另開一文詳細介紹這個工具中n-gram分數和ppl_socre(語句通順度)的計算過程。
  • 文本分類六十年
    這裡我們介紹基於機器學習和深度學習的文本分類,主要內容來自北航、伊利諾伊大學等學者聯合發表論文 A Survey on Text Classification: From Shallow to Deep Learning。本文通過回顧文本分類領域自1961年到2020年以來的歷年SOTA模型來填補這類綜述研究的空白,聚焦於從淺層學習到深度學習的各種模型。
  • 文本生成評價方法 BLEU ROUGE CIDEr SPICE Perplexity METEOR
    BLEUBilingual Evaluation Understudy,雙語評估輔助工具核心思想比較候選譯文和參考譯文裡的 n-gram 的重合程度,重合程度越高就認為譯文質量越高。unigram用于衡量單詞翻譯的準確性,高階n-gram用于衡量句子翻譯的流暢性。實踐中,通常是取N=1~4,然後對進行加權平均。計算公式
  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    本文根據易盾文本算法團隊在內容安全領域的實踐經驗,介紹在項目中用過的一些深度學習模型以及對部分技術細節進行討論。深度學習是近幾年來的熱門方向,學術界和工業界的研究人員提出了很多有價值的方法,本文所分享的方法只是其中少數代表性的工作,僅供讀者參考。
  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    本文根據易盾文本算法團隊在內容安全領域的實踐經驗,介紹在項目中用過的一些深度學習模型以及對部分技術細節進行討論。深度學習是近幾年來的熱門方向,學術界和工業界的研究人員提出了很多有價值的方法,本文所分享的方法只是其中少數代表性的工作,僅供讀者參考。
  • 用深度學習(CNN RNN Attention)解決大規模文本分類問題 - 綜述和...
    之所以進行分詞,是因為很多研究表明特徵粒度為詞粒度遠好於字粒度,其實很好理解,因為大部分分類算法不考慮詞序信息,基於字粒度顯然損失了過多「n-gram」信息。具體到中文分詞,不同於英文有天然的空格間隔,需要設計複雜的分詞算法。傳統算法主要有基於字符串匹配的正向/逆向/雙向最大匹配;基於理解的句法和語義分析消歧;基於統計的互信息/CRF方法。