我是如何用 AI 把「請洗手」翻譯成 500 種語言的?

2020-04-20 18:44:00

通過使用人類和機器生成的翻譯,可以將關鍵的健康短語翻譯成世界各地的當地語言。

你可能不知道,目前世界上有 7117 種語言在使用,不是方言,而是在用的語言! 然而,世界上許多數位媒體只能使用幾十種語言,而像谷歌翻譯這樣的翻譯平台只支援 100 種左右的語言。這樣的現實意味著,由於缺乏及時獲取資訊的機會,全世界有數十億人被邊緣化。當前的冠狀病毒(COVID-19)大流行已經讓人痛苦地意識到了這一點,凸顯了將健康相關的短語(如“請洗手wash your hands”或“保持距離”等)即時、快速翻譯成小眾語言的必要性。

為此,我應用了最先進的 AI 技術,用 544 種語言構建出了與“請洗手”相近的短語並進行了統計(我的 GPU 還在執行)。多語言無監督和受監督嵌入Multilingual Unsupervised and Supervised Embeddings(MUSE)方法被用來訓練這 544 種語言和英語之間的跨語言單詞嵌入。然後,這些嵌入方法可以從現有文件中提取出與目標短語相似的短語。

我與 SIL 國際公司的同事們合作完成了這項工作,他們收集了該短語的更多的人工翻譯結果。這些人工翻譯結果和我的一些機器翻譯結果的組合可以在這個民族語指南頁面上搜尋到(機器生成的短語用一個小的機器人圖示表示),更多的翻譯將在生成/收集到的時候加入。

利用現有的語料庫

SIL 國際公司已經完成了 2000 多種語言的語言工作,目前管理著 1600 多個語言專案。因此,當我解決這個特殊的問題時,我知道我們很可能已經多次將“請洗手”和/或類似的短語翻譯成了數百種語言,而這一猜測得到了回報。我很快就從我們的檔案庫中收集到了超過 900 種語言的文件(主要是完成的貝殼書模板、教材和聖經)。這些文件中的每一份都有一個英文的對應版本,其中必然包括“請洗手”和/或類似“請洗臉”這樣的短語。此外,這些文件的品質都很高,並與當地語言社群合作進行了翻譯和檢查。

這是相當多語言的資料集。然而,有兩個問題需要克服。首先,這個資料包含了大多數語言的數千種樣本,這與訓練機器翻譯模型所使用的數百萬個樣本形成了鮮明對比。其次,即使文件中包含目標語言中的“請洗手”這個短語,我們也不知道這個短語在周圍文字中的確切位置。

我們當然可以利用低資源語言的機器翻譯中的一些最新技巧,但是需要花費一些時間來調整自動化方法,以快速適應每種語言對中的翻譯模型。此外,我們所針對的許多語言都沒有現成的的基線,可以用來比較評估指標(例如 BLEU 評分)。考慮到對冠狀病毒大流行的迫切擔憂,我們希望比這更快一點(儘管我們計劃在將來再來解決這個問題)。

我選擇通過在現有的文件中尋找短語本身或短語的元件(如“請洗”或“你的手”)來嘗試構建“請洗手”這個短語。為了找到這些成分,我使用 Facebook Research 的多語言無監督和受監督嵌入(MUSE)對每個 {英語、目標語言} 對進行了跨語言cross-lingual嵌入訓練。MUSE 以單語言monolingual的單詞嵌入作為輸入(我使用 fasttext 來生成這些詞),並使用對抗性方法學習了從英語到目標嵌入空間的對映。這個過程的輸出是跨語言cross-lingual的單詞嵌入。

一旦產生了跨語言嵌入,我們就可以開始在目標語言文件中尋找短語元件。結果發現,整個文件中清楚地使用了“請洗臉”這個短語以及單獨的“手”、“請洗”等詞。對於每一種語言,我都通過 n-gram 搜尋我預期該短語會出現的地方(根據其在英語的對應版本中的用法)。使用跨語言嵌入法對 n-gram 進行了向量化處理,並使用各種距離指標與英語短語的向量化版本進行了比較。在嵌入空間中,與英文短語“最接近”的 n-gram 被確定為與目標語言匹配。

最後,將與英語對應的成分短語進行組合,生成目標語言中的“請洗手”短語。這種組合方式再次利用了跨語言嵌入,以確保以合適方式組合元件。例如,如果我們在目標語言中匹配“請洗腳”這個短語,就必須將“腳”對應的 n-gram 替換成“手”對應的 n-gram。下面是伯利茲·克里奧爾Belize Kriol英語的一個例子:

當然,在這個匹配過程中,會做一些假設,這個過程完全有可能不能產生語法上正確的預測。例如,我假設在大多數語言中,“手”的單詞和“腳”的單詞都是一個字元token長的(字元由空格和標點符號隔開)。當然並非總是如此。這可能會造成類似於“和洗和手你”或類似的瑕疵詞條。希望我們可以克服其中的一些局限性,並在未來擴充套件這個系統,但是,現在,我們選擇用圖形來強化這個想法。

我們將世界衛生組織的洗手說明改編成了一個 PNG 圖片模板。然後,我們把我們翻譯和生成的短語,用 Bash 和 Go 指令碼的組合將其渲染到洗手影象中。這樣,在文字和影象中都強調了正確洗手的理念(以防萬一我們生成的翻譯很尷尬)。

結果

到目前為止,我已經能夠訓練出 544 種語言的跨語言嵌入。我使用上述討論過的方法嘗試為所有這些語言構建“請洗手”這個短語。因為我沒有許多語言對的對齊資料,所以我使用了同樣包含“請洗手”成分的單獨的保留文件來幫助驗證構造短語中的字元。這讓我們對公開發布的翻譯版本有了一些信心(至少它們包含了表示“洗”和/或“手”的資訊)。此外,我還將該方法與谷歌翻譯支援的和/或有可用的人工翻譯的語言對進行了比較。以下是來自 Ethnologue 帶有語言統計的翻譯樣本。

語言:意大利語 [Ita]

  • 地點:意大利
  • 人口: 68,000,000
  • 我們的系統: làvati la mani
  • 谷歌翻譯: Lavati le mani

語言:保加利亞語 [bul]

  • 地點:保加利亞
  • 人口:8,000,000
  • 我們的系統:умий ръцете
  • 谷歌翻譯:Измий си ръцете

語言: 荷蘭語 [nld]

  • 地點:荷蘭
  • 人口:24,000,000,000
  • 我們的系統:wast uw handen
  • 谷歌翻譯:Was je handen

語言: Pijin [pis]

  • 地點:所羅門群島
  • 人口: 550,000
  • 我們的系統:wasim han
  • 谷歌翻譯:不支援

語言:Tikar [tik]

  • 地點:喀麥隆
  • 人口:110,000
  • 我們的系統:??si fyà?
  • 谷歌翻譯:不支援

語言:Waffa [waj]

  • 地點:巴布亞新幾內亞
  • 人口:1,300
  • 我們的系統:yaakuuvaitana nnikiiyauvaa fini
  • 谷歌翻譯:不支援

構造的短語類似於參考翻譯,或者似乎是“請洗手”的另一種說法。例如,在保加利亞語中,我預測為“умий ръцете”,而谷歌翻譯預測為“Измий си ръцете”。 然而,如果我用谷歌翻譯回譯我的預測,我還是會得到“請洗手”。有一些不確定的地方,我無法與參考譯文(例如,所羅門群島的 Pijin [pis])或人類注釋的跨度進行比較,但我仍然可以驗證“洗”(wasim)和“手”(han)分別用在其他必定是談論洗或手的參考檔案中。 大約有 15% 的譯文可以用這個方法驗證,我希望在收集參考文獻字典的過程中能進行更多的驗證。

請注意,我最多使用了每種語言中大約 7000 個句子來得到上述譯文,即使是意大利語這樣的高資源語言也是如此。我也不依賴語言對之間的對齊句子。儘管存在這種資料非常稀缺、無監督的情況,但對於兩個系統都支援的語言,我仍然能夠獲得類似於谷歌翻譯的短語。這證明了這種“混合”方法(無監督的單詞嵌入+基於規則的匹配)在將短語翻譯成資料非常少的語言中的潛在用途。

注意:我絕對不是說這是解決冠狀病毒和其他健康相關的資訊傳播問題的解決方案。這裡仍有很多東西需要探索和正式評估,我們正在為此努力。在很多情況下,這種方法無法幫助構建數百種語言的重要資訊資料。但是,我認為,我們所有人都應該嘗試著為當前危機的相關問題制定創造性的解決方案。也許這只是一個非常大的拼圖中的一塊。

你可以在這個民族語言指南上檢視經過驗證的譯文加上人工翻譯的完整列表。此外,我們即將以論文的形式對這一系統進行更深入的描述和分析。我們歡迎公眾對翻譯進行反饋,以幫助系統進行微調,最重要的是,確保將健康資訊傳遞給世界各地的邊緣化語言社群。

製作自己的洗手海報

我們已經開源了用於渲染複合的指令碼和生成洗手海報的程式碼。這種方法應該能夠處理幾乎所有的語言和指令碼。你可以在海報中新增你自己的“請洗手”的翻譯,以幫助傳播,或者根據自己的本地語境進行翻譯。請務必在社交媒體上以 #WashYourHands 為標籤分享你生成的海報。

培養你的 AI 技能

有很多令人興奮的 AI 問題,可以給世界帶來巨大的影響。如果你想用人工智慧解決像上面提到的問題,或者你認為你的企業可能需要開始利用人工智慧來做其他事情(供應鏈優化、推薦、客戶服務自動化等),那麼不要錯過今年 5 月的AI 課堂培訓活動AI 課堂是一個沉浸式的、為期三天的虛擬培訓活動,適合至少有一定程式設計經驗和數學基礎知識的人參加。該培訓提供了使用 Python 和開源框架(如 TensorFlow 和 PyTorch)進行現實的 AI 開發的實用基礎知識。完成課程後,學員將有信心開始開發和部署自己的 AI 解決方案。

本文經許可轉載自 https://datadan.io/blog/wash-your-hands