1. 程式人生 > >構建語言模型(一):文字語料處理

構建語言模型(一):文字語料處理

關於語言模型的訓練,網上搜索到的基本是理論為主,尤其訓練文字的獲取和處理,
往往一筆帶過。通過專案中的實踐經驗,整理成文,可能存在疏漏乃至錯誤。

1. 語言模型概述與流程

1.1 LM概述   

  語言模型(Language Model, LM),是針對某種語言建立的概率模型,目的是建立一個能夠描述給定詞序列在語言中的出現的概率的分佈。

  Ngram模型是最常用的建模技術,採用了馬爾科夫假設(馬爾科夫假設:一個詞的出現僅僅依賴與它前面出現的有限的一個或者幾個詞。),可表示為p(S)=p(w1,w2,w3,w4,w5,…,wn)=p(w1)p(w2|w1)p(w3|w1,w2)…p(wn|w1,w2,…,wn-1)

  語言模型技術廣泛應用於語音識別、OCR、機器翻譯、輸入法等產品上。語言模型建模過程中,包括詞典、語料、模型選擇等,對產品的效能有至關重要的影響。
  

1.2 構建整體流程

構建語言模型的流程如下:

LM構建整體流程

  • 利用爬蟲從網際網路抓取大量網頁文字語料
  • 網頁文字處理成所需格式
  • 文字訓練生成LM

2. 文字語料抓取與處理

2.1 文字抓取

2.2 文字處理

  文字處理的目的是,從原始html形式的文字中提取有效資料,並處理成構造語言模型(Language Model)所需要的格式。
  
  步驟如下:

  • 預處理。[包括全半形字元轉化,去掉註釋、CSS樣式、標籤(單/多行)、&轉義字元、url、大段英文數字、單個非中文詞、空格等等]
  • 分詞。[可自己開發分詞工具,或採用第三方工具,如結巴分詞]
  • 純數字轉成中文讀音
  • 將中文表示的數字進行拆分,如:一百二十三元 –> 一百 二十 三 元
  • 去掉無用字元,保留中英文字元及部分標點,並按標點分句[可根據需要去掉所有標點]

對於大資料文字的處理,可通過拆分合並,每個檔案保持一定的大小,通過多程序並行處理