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

2021-08-27 14:31:18 字數 1364 閱讀 3528

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

一般在我們得到雙語平行語料之後,在構建雙語統計翻譯系統之前,都會有乙個雙語資料預處理的過程,為後續例如詞對齊處理提供分好詞且格式恰當的雙語資料。這裡以漢英雙語資料舉例。

在中英翻譯系統構建過程中,對於中文和英文的資料預處理,方式是不一樣的。

1)中文分詞處理

之前提到了,這一步可以使用中科院分詞系統ictclas完成,如果不使用這些附加工具的話,例如niutrans翻譯系統,其預處理的分詞系統採用的就是傳統基於詞典的正向最大匹配法來完成的。基本流程圖如下所示:

由於數字、日期、時間、**等不可列舉,無法通過詞典簡單查詢來分詞。

可以採用正規表示式或者自動機進行自動識別,並給予特殊名字進行泛化。例如:

數字型別 $number 如:123

日期型別 $date 如:2023年8月24日

時間型別 $time 如:19:30

**等型別 $literal 如:

實際上大家可以總結更多型別,並自行定義泛化名字進行替換原文。泛化的目的是為了有效解決資料稀疏問題。

需要注意一點的是,在做這一步的時候建議不要對組織機構名進行**為乙個詞彙。例如將「北京郵電大學信通院」最好分成兩個詞「北京郵電大學」「信通院」。這樣做的好處是為了有助於後面規則抽取模組抽取出更多翻譯規則。

另外,在預處理時,中文的全形字符可以考慮改寫為半形字元來處理;

2)英文分詞處理

英文這種阿拉伯語系的語言處理起來相對中文要簡單一些,總的來說主要是處理以下3個問題:

1. 將所有大寫字母改為小寫字母;

2. 將英文句尾結束符與句尾最後乙個單詞用空格分開;

3. 同樣將數字、日期、時間、**等不可列舉的型別進行識別,然後分別採用特殊名字進行泛化處理。

例如雙語句對:

中文:8月24日我買了2臺電腦。

英文:i bought 2 computers on august 24.

預處理結果:

中文:$date 我 買 了 $number 臺 電腦 。

英文:i bought $number computers on $date .

這裡又要提醒幾點:同一型別的泛化名字在中英文中最好一樣,如中文/英文數字=>$number;注意區分英文的句尾符號「.」和「mr. smith」的「.」;

在泛化之後,注意檢查一下雙語句對的泛化結果一致性,例如中文句子中包含$date,正常情況下,英文句子中也應該包含$date等。

機器翻譯的資料預處理

主要分為三大塊 去重 重複的資料會使訓練過程有偏。可以簡單地去除完全相同的句對,也可以計算每兩個句子之間的區域性雜湊值,把相似度小於某個閾值的句對都去除 去空行 空行不能提供任何資訊,而且可能會引起bug 特殊符號處理 這個就需要通過肉眼來觀察,然後確定乙個特殊符號列表了。常見的,包含控制字元 轉義...

機器翻譯重要過程 4 估計概率構造短語翻譯表

經過第三步抽取短語後,獲得基於短語系統使用的翻譯短語對,而接下來的第四步就是短語翻譯表概率估計,它的作用是對翻譯短語對的正確性進行合理的評估。在這裡,我們估計概率主要進行四個分數的計算,即雙向短語翻譯概率 正向 源語言 目標語言 方向 反向 目標語言 源語言 方向 雙向詞彙化權重。首先,在上圖上方給...

機器學習(1) 資料預處理

如圖所示,通過6步完成資料預處理。此例用到的資料,import numpy as np import pandas as pd dataset pd.read csv data.csv 讀取csv檔案 x dataset.iloc 1 values iloc 行,列 y dataset.iloc 3...