構建語言模型(一):文字語料處理
阿新 • • 發佈:2019-02-20
關於語言模型的訓練,網上搜索到的基本是理論為主,尤其訓練文字的獲取和處理,
往往一筆帶過。通過專案中的實踐經驗,整理成文,可能存在疏漏乃至錯誤。
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
2. 文字語料抓取與處理
2.1 文字抓取
2.2 文字處理
文字處理的目的是,從原始html形式的文字中提取有效資料,並處理成構造語言模型(Language Model)所需要的格式。
步驟如下:
- 預處理。[包括全半形字元轉化,去掉註釋、CSS樣式、標籤(單/多行)、&轉義字元、url、大段英文數字、單個非中文詞、空格等等]
- 分詞。[可自己開發分詞工具,或採用第三方工具,如結巴分詞]
- 純數字轉成中文讀音
- 將中文表示的數字進行拆分,如:一百二十三元 –> 一百 二十 三 元
- 去掉無用字元,保留中英文字元及部分標點,並按標點分句[可根據需要去掉所有標點]
對於大資料文字的處理,可通過拆分合並,每個檔案保持一定的大小,通過多程序並行處理