機器翻譯的資料預處理

2021-10-08 05:17:36 字數 1292 閱讀 7338

主要分為三大塊:

去重:重複的資料會使訓練過程有偏。可以簡單地去除完全相同的句對,也可以計算每兩個句子之間的區域性雜湊值,把相似度小於某個閾值的句對都去除;

去空行:空行不能提供任何資訊,而且可能會引起bug;

特殊符號處理:這個就需要通過肉眼來觀察,然後確定乙個特殊符號列表了。常見的,包含控制字元、轉義字元、url符號等的都需要處理,至於處理方式是刪除符號、還是刪除句對,就得人為確定了;

上面幾步不需要tokenize就可以做,下面幾步要在tokenize之後再進行。

長度篩選:長度太短的句對,對訓練沒有幫助;長度太長的句對,在送入模型後也會進行截斷,所以也沒有必要保留;

長度比篩選:長度比偏離3倍標準差的句對,基本上都是有問題的句對,可以刪去;

對齊篩選:計算對齊得分,前向和後向相加,得分太低的句對都可以刪除;

語言模型篩選:計算語言模型得分,源端和目標端相加,得分太低的句對都可以刪除;

2.tokenization:對輸入的文字進行分詞、大小寫轉換等操作。注意,因為翻譯是生成式任務,所以很多操作需要保證是可恢復的,也就是說,切分完了之後,還得有能力還原,最後送給使用者的是未經過切分的語句。

全半形轉換:有些時候輸入文字中存在全形的符號、數字等,這個都需要統一轉換為半形;

標點正則化:比如英文中不應當出現中文的標點符號,所以如果出現了,就需要進行轉換;

編碼正則化:在unicode中,某些字元能夠用多個合法的編碼表示,這個時候就需要進行編碼正則化。python的unicodedata模組裡實現了這個功能。

tokenize:對於英文來說,tokenize主要是將標點和句子切分開;對於中文/日語來說,除了將標點和句子分開,更重要的是將連續的字元切分開。這一步非常重要,而且要記錄好切分的規則,以便於生成結果後進行還原。

truecase:即將每個單詞的大小寫形式轉換為它原本的寫法。這個並非簡單地將全部大寫轉換為小寫(比如命名實體類似un, usa就不會做處理),而是將那些句首的大寫字母轉換為小寫(比如將my轉換為my)。不過個人認為,基於子詞的機器翻譯,本身是有能力處理大小寫問題的,所以引入truecase可能還會有額外的誤差。

3.子詞切分:常見的演算法大概就是wordpiece和bpe兩種,有很多開源工具可以使用,這裡不再贅述。

接下來就是訓練和解碼流程了。等到解碼得到結果之後,還需要進行三步操作:

去子詞。一般的子詞切分都是固定的符號,一條linux命名就可以去除了;

detruecase。如果你做了truecase,記得把模型留著,然後這裡要進行detruecase;

detokenize。記得把tokenize的規則記錄好,然後這裡要進行detokenize;

機器翻譯重要過程 1 資料預處理

目前有如之前基於統計的開源翻譯系統介紹中提到的許多開源統計翻譯系統,在由原始平行語料到形成最後的翻譯系統的整個過程中,它們有一些相同的處理步驟,從這次的文章開始,陸續介紹幾個最重要的過程做法及其意義。一般在我們得到雙語平行語料之後,在構建雙語統計翻譯系統之前,都會有乙個雙語資料預處理的過程,為後續例...

機器翻譯(待續)

機器翻譯 語言模型 翻譯模型 語言模型如 n元語言模型 n元語言模型 舉例,三元語言模型,乙個詞至於它相鄰的2個詞有關。條件概率 p 我吃飯 表示詞語組合合理的概率。p 我吃飯 p 飯 我吃 p 我吃 p 我吃 p 吃 我 p 我 得到 p 我吃飯 p 飯 我吃 p 吃 我 p 我 基礎統計概率這樣...

1958 機器翻譯

time limit 1 sec memory limit 128 mb submit 55 solved 28 submit status web board 小晨的電腦上安裝了乙個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中...