最近工作中涉及到新詞的識別,在漫長的程式執行期間,記錄下相關心得。這裡為較原始的新詞識別演算法,起到乙個了解的作用。
新詞: 指未在已經訓練完的詞庫或語料庫中大量出現的詞稱為新詞(很多情況下也成為未登入詞)。
目前新詞識別的技術主要包括3個方向:1. 基於規則;2. 基於統計概率;3. 規則和統計相結合;
1. 基於統計
基於統計的新詞識別技術包括
1.1 互資訊
互資訊之統計模型中衡量2個隨機變數x,y之間的關聯程度,而在新詞的識別中則特指相鄰2個詞之間的關聯程度。
mi(x,y)=log2(p(x,y)/p(x)*p(y))
那麼當『xy』未在已經訓練完的詞庫中出現,且該互資訊高於某一閥值值,那麼我們就假定該詞為新詞。
1.2 頻率
當某一組連續相鄰的字在新的語料庫或網路日誌中大量出現而未在詞庫中登記時,那麼我們也可假定該詞為新詞。
這種方法思路很簡單,實現的**也相當容易,但是該方法必須基於大規模的語料庫才能準確識別。
注:此處當處理海量語料庫時 效能問題是最需要關注的。下文將詳細講解。
2. 新詞識別工作
在本文中假設還未建立訓練詞庫,需訓練。
2.1 大規模語料庫準備
2.2 候選詞選取方案
2.3 訓練詞庫
2.4 統計並選取新詞
2.1 大規模語料庫
2.2 候選詞選取
候選詞的選取在很大程度上會影響程式的效能。主要包括2類方法:1)基於分詞演算法的n元片語;2)基於字的n元片語
在使用分詞演算法的情況下,需要分詞詞庫,而n元片語就不需要詞庫。
2.2.1 分詞演算法
若語料:「中文新詞識別」,若分詞後結果:中文/,新/,詞/,識別/。
然後候選2元片語:中文新/,新詞/,詞識別/。最後統計詞頻以此來決定是否加入詞庫(分詞詞庫必須加入該詞庫)。
2.2.2 n元片語
若語料:「中文新詞識別」,若2元片語,則結果:中文/,文新/,新詞/,詞識/,識別/。然後統計該2元片語的詞頻,並決定是否加入詞庫。
從上面2種方法可以看到按字的n元片語會分出更多的片語,需要處理更多的資料,效率會較低,但這種方法較全面,不會遺漏資料,不受分詞詞庫影響。比如:「文新」 這個片語在分詞中會遺漏,而按字n元不會遺漏。
2.3 統計並確定是否加入詞庫
2.4 新詞獲取
新詞獲取的前面幾個步驟與上文一樣,包括候選詞的獲取。然後統計該詞頻率或計算相鄰詞之間的互資訊,以此與設定的閥值進行比較決定是否為新詞。最後將識別出來的新詞再詞新增到詞庫中,不斷學習不斷識別,以此迴圈。
至此,簡單的新詞識別工作完成,只要語料庫足夠強大,統計方法會得到較好的效果,且方法簡單。
————後續將繼續深入新詞識別演算法,採用語言模型來進行新詞識別,上述方法較為原始。————
注:考慮到海量語料庫和詞頻統計的特點,非常適合在hadoop平台進行mapreduce
模型計算。
下一步將新詞識別應用在hadoop平台上。
Pyhanlp自然語言處理中的新詞識別
新詞發現 本 新詞發現 模組基於資訊熵和互資訊兩種演算法,可以在無語料的情況下提取一段長文字中的詞語,並支援過濾掉系統中已存在的 舊詞 得到新詞列表。呼叫方法 靜態方法 一句話靜態呼叫介面已經封裝到hanlp中 提取詞語 param text 大文字 param size 需要提取詞語的數量 ret...
Pyhanlp自然語言處理中的新詞識別
新詞發現 本 新詞發現 模組基於資訊熵和互資訊兩種演算法,可以在無語料的情況下提取一段長文字中的詞語,並支援過濾掉系統中已存在的 舊詞 得到新詞列表。呼叫方法 靜態方法 一句話靜態呼叫介面已經封裝到 hanlp中 提取詞語 param text 大文字 param size 需要提取詞語的數量 re...
Pyhanlp自然語言處理中的新詞識別
新詞發現 本 新詞發現 模組基於資訊熵和互資訊兩種演算法,可以在無語料的情況下提取一段長文字中的詞語,並支援過濾掉系統中已存在的 舊詞 得到新詞列表。呼叫方法 靜態方法 一句話靜態呼叫介面已經封裝到 hanlp中 提取詞語 param text 大文字 param size 需要提取詞語的數量 re...