機器翻譯簡史:八十多年來,人類就是要再造一座通天塔
夏乙 編譯自 FreeCodeCamp
量子位 出品 | 公眾號 QbitAI
長久以來,人們一直在尋找不同語言之間的溝通方法。
《聖經》中記載,人類曾經聯合起來興建能通往天堂的高塔,為了阻止人類的計劃,上帝讓人類說不同的語言,使人類相互之間不能溝通,計劃因此失敗,人類自此各散東西。
學習和掌握一門外語,也是中國學生必須具備的能力。
但精通外語始終不是一個簡單的事。所以無論是現實中,還是科幻電影中,人們一直希望能有一個機器,能夠讓人不學外語也能暢快溝通。
隨著技術進步,這個夢想正在一步步接近成真。
來自俄羅斯的Ilya Pestov,最近寫就了一篇《機器翻譯簡史》,較為完整的回顧了人類幾十年來在機器翻譯方面的探索和努力。量子位對內容略有增減。
這是一段人類如何再造通天塔的歷史。
最初
故事開始於1933年。
當時,前蘇聯科學家Peter Troyanskii向蘇聯科學院介紹了一種能將一種語言翻譯成另一種語言的機器。
這個發明超級簡單由各種語言的卡片、打字機和老式膠片相機組成,用起來是這樣的:操作員對著一段文字中的第一個詞,找到相應的卡片,拍張照,然後用打字機打出它的形態特徵,比如說這是個複數屬格名詞。然後,將打字機帶子和相機膠片組合在一起,每個詞和它的屬性構成一幀。
不過,前蘇聯政府認為這臺機器沒什麼用。Troyanskii又花了20年的時間來完成這件發明,後來死於心絞痛。
如果不是1956年又有兩名蘇聯科學家發現了他的專利,世界上不會有人知道,曾經有人構想過這樣一臺機器。
那是冷戰初期,1954年1月7日,Georgetown–IBM experiment在紐約的IBM總部開始了,IBM 701計算機完成了史上首例機器翻譯,自動將60個俄語句子翻譯成了英語。
IBM隨後在新聞稿中如此描述他們的成就:
一個根本不會俄語的姑娘在IBM卡片上打出這些俄語資訊,我們的“大腦”指揮著一臺自動印表機,以每秒兩行半的速度飛快印出它們的英語譯文。
△ IBM 701
然而,得意洋洋的新聞稿隱藏了一些細節,誰也沒有提到,這些翻譯的例句經過了精心的挑選和測試,排除了一切歧義。如果用到日常場景中,這個系統不會比一本單詞書強多少。
就算這樣,機器翻譯的軍備競賽還是開始了,加拿大、德國、法國、日本都投入其中。
軍備競賽
四十年來,改進機器翻譯的努力一直持續著。
1966年,美國科學院的自動語言處理諮詢委員會(ALPAC)釋出了一份著名的報告,稱機器翻譯昂貴、不準確、沒前途。他們建議專注於詞典開發,結果是美國科學家幾乎有10年沒有參與競爭。
即便如此,科學家們的努力還是為現代自然語言處理技術打下了基礎,現在的搜尋引擎、垃圾郵件過濾、智慧助理都得歸功於當年這些互相監視的國家。
基於規則的機器翻譯(RBMT)
第一波基於規則的機器翻譯想法出現在70年代,科學家們研究著翻譯員的工作,想讓笨重龐大的計算機來重現這些行為。
RBMT的系統包括:
雙語詞典(例如俄英雙語詞典)
每種語言的語言學規則(例如俄語中以-heit、-keit、-ung字尾結尾的名詞是陰性的)
如果有需要,還可以再給系統補充一些小功能,比如里名稱列表、拼寫糾錯、音譯程式等。
RBMT系統中比較著名的包括PROMPT和Systran,去看看Aliexpress上那些英文商品名,就能感受到這個黃金時代的氣息。
不過這一類系統也並非完全一樣,還可以再細分為各種子類別。
直接機器翻譯
這類翻譯最為簡單,它將為本分成單詞,翻譯出來,稍微修正一下形態,然後協調句法,讓整句話聽起來多少像那麼回事,就可以了。
直接機器翻譯需要訓練有素的語言學家為每個詞編寫規則,輸出的語句可以說是一種譯文,但通常很詭異。
這種方法,現在已經淘汰了。
基於轉換的機器翻譯
與直接機器翻譯相比,這種方法需要先確定句子的語法結構,然後對整個結構進行處理,而不是按詞來處理。
這樣能得到很不錯的語序轉換。理論上。
而實際上,譯文還是逐字翻出來的,語言學家還是精疲力盡。
中介語機器翻譯
這種方法會將源文字轉換為一種中間表示,這種表示法是全世界各種語言通用的,相當於笛卡爾夢想“元語言”,遵循通用規則、能和各種語言互相轉換。
由於需要轉換,中介語經常會和基於轉換的方法混淆。它們之間的區別在於,設定的語言學規則是針對每種語言和中介語的,而不是針對兩種語言之間的對應。
用這種方法,建立三種語言和中介語之間的轉換規則,就可以完成這三種語言之間的互相翻譯,而如果用基於轉換的方法,就需要為這三種語言兩兩建立規則。
看起來很美對吧?總有現實來打臉。創造這種通用的中介語是非常難的,科學家們前赴後繼貢獻一生,也沒能成功。不過他們為後世留下了形態、句法甚至語義層面的表示方法。
用中介語實現直接機器翻譯顯然也行不通,但彆著急,這種思想還會迴歸。
用現代的眼光來看,所有RBMT分支都笨得可怕,所以,除了天氣預報等特定場景,已經見不到這類方法。l
RBMT有它的優點,比如形態的準確性、結果的可復現性、針對特定領域進行調整的能力等等。
但是,要創造一個理想的RBMT系統,就算讓語言學家盡力窮盡一切拼寫規則來增強它,也總會遇到例外。英語有不規則動詞、德語有可分離字首、俄語有不規則的字尾,在人們說話的時候又會有各自的特點,別忘了有些詞根據上下文還會產生不同的意思。要考慮所有細微規則,要耗費巨大的人力資源。
語言不是基於一套固定規則發展的,規則的形成受到不同群體交流、融合的影響。怎麼向一臺機器來解釋這些歷史?
於是,四十年的冷戰和軍備競賽也沒能帶來任何優秀的解決方案,RBMT死了。
基於例子的機器翻譯(EBMT)
日本也是個機器翻譯大國,原因很簡單:它們雖然沒參與到冷戰之中,但國內懂英語的人太少了,這在全球化浪潮中是一個嚴重問題。因此,日本人在機器翻譯研究上,有著強大的動力。
基於規則的英日翻譯非常複雜,這兩種語言有著完全不同的結構,每翻譯一句話都要重新排列所有單詞,再增加一些新詞。
1984年,京都大學的長尾真提出了一種新想法:直接用已經準備好的短語,不用重複翻譯。
比如說,我們之前翻譯過“我要去劇院”這句話,現在要翻譯一句類似的話:“我要去電影院”。那麼,只要比較一下這兩句話,找出其中的區別,然後翻譯不一樣的那個詞“電影院”就好了。已有的例子越多,翻譯結果就越好。
EMBT給全世界的科學家帶來了一道曙光:給機器提供已有的翻譯例句,別花幾十年來定義規則和例外了。
這種方法出現時並沒有立刻風靡,但它走出了革命的第一步,之後不到5年,就出現了統計機器翻譯。
統計機器翻譯
90年代早期,IBM研究中心首次展示了對規則和語言學一無所知的機器翻譯系統。這個系統分析了兩種語言中類似的文字,嘗試理解其中的模式。
這個想法簡潔優雅。將兩種語言中同義的句子切分成詞進行匹配,然後去計算“Das Haus”這個詞有多少次對應著“house”、“building”、“construction”等等。大部分時候,它是和house相對應的,於是機器就用了這種譯法。
在這個過程中,沒有規則,沒有詞典,所有的結論都是機器根據統計資料得出的。它背後的邏輯很簡單,就是“如果人們都這麼翻譯,我也這麼翻”。
統計機器翻譯就此誕生。
它比之前所有方法都更加準確高效,也不需要語言學家。我們給機器更多的文字,它就給我們更好的翻譯。
機器怎麼知道句子中“Das Haus”對應的是“house”呢?一開始是不知道的。最初,機器會認為“Das Haus”和譯文中任何一個詞都相關,接下來,它遇到更多包含“Das Haus”的句子,逐漸增強這個詞和“house”的相關性。
這就是現在大學裡機器學習課程的一個典型任務:“字對齊演算法”。
要收集每個單詞的相關統計資料,機器都需要上百萬對例句。這些例子從哪來呢?答案是歐盟和聯合國安理會的會議紀要。這些紀要都會有各成員國語言的版本,現在依然可以下載。
UN Corpora:[https://catalog.ldc.upenn.edu/LDC2013T06](https://catalog.ldc.upenn.edu/LDC2013T06*)
Europarl Corpora:[http://www.statmt.org/europarl/](http://www.statmt.org/europarl/*)
基於詞的SMT
最初的統計翻譯系統會先將句子分解成單詞,這樣最直接,又合乎邏輯。
IBM的第一個統計機器翻譯模型叫做模型1(Model 1)。優雅吧?等你看到第二個模型叫什麼就不覺得了。
模型1:詞袋
模型1用了一種經典方法,將句子切分成詞然後進行統計,不考慮語序。這個模型中唯一用到技巧的地方,就是將一個詞翻譯成多個詞,比如將“Der Staubsauger”翻譯成“Vacuum Cleaner”,但反過來不一定是這個結果。
如果對這個統計機器翻譯的老祖宗感興趣,可以看看這份Python程式碼:
[https://github.com/shawa/IBM-Model-1](https://github.com/shawa/IBM-Model-1*)
模型2:考慮句中詞序
不考慮語序是模型1的大缺陷,在某些情況下還很關鍵。
於是,就有了解決這個問題的模型2。它記住了單詞在輸出句子中經常所處的位置,並在翻譯過程中重新排列順序,讓整句話看起來更自然。
譯文好多了,但還是不太對。
模型3:引入新詞
在翻譯中,經常要引入原句中沒有的新詞,比如說德語裡的冠詞,英語裡表示否定時要加的“do”。
我們的例句“Ich will keine Persimonen.”,在英語中應該翻譯成“I do not want Persimmons.”
於是,模型3中又增加了兩個步驟:
1. 如果機器考慮引入新詞,就要在原文中插入NULL標記。
2. 為每個標記詞選擇正確的新詞或語法單位。
模型4:字對齊
模型2考慮了詞的對應,但沒有考慮重新排序。比如說形容詞和名詞的位置經常變換,無論模型記憶詞的位置記得多好,都沒法輸出更好的結果。
因此,模型4引入了“相對順序”,如果兩個詞總是互換位置,模型會學到。
模型5:錯誤修正
這個模型中沒什麼新東西,它獲得了更多的學習引數,解決了單詞位置衝突的問題。
這些基於詞的系統雖然具有革命性,但依然無法處理詞的格、性,也搞不定同音詞。在這類系統中,每個詞會有唯一的翻譯方式。
後來,基於短語的方法取代了它們。
基於短語的SMT
這種方法和基於詞的SMT有著同樣的原則:統計、重新排序、在詞彙上用一些技巧。
不過,它不僅要將文字分成詞,還要分成短語,確切地說是n個單詞的連續序列,稱為n-grams。
機器就這樣學會了翻譯單詞的穩定組合,明顯提高了準確性。
這種方法有一個訣竅,所謂“短語”並不一定符合句法結構,如果有語言學知識的人干涉了句子結構,翻譯的質量會大大下降。
除了準確性的提高,基於短語的SMT還為雙語語料帶來了更多的選擇。對於基於詞的方法來說,來源語料的精確匹配非常重要,要排除一切意譯和自由發揮。而基於短語的方法可以用這樣的語料來學習。
為了改進翻譯演算法,科學家們甚至開始不同語言的新聞網站。
2006年,這種方法開始普及了。Google翻譯、Yandex、微軟必應等等線上翻譯工具都用上了基於短語的SMT,一直用到了2016年。
在這個時期,你所聽到的“統計機器翻譯”通常指的就是基於短語的SMT,直到2016那年,它都被視為最先進的機器翻譯方法。
基於句法的SMT
這個方法也應該簡單提及。在神經網路出現之前的許多年裡,基於句法的翻譯被認為是“翻譯的未來”,但這個想法並沒有起作用。
基於句法翻譯的支持者認為,這個方法有可能與基於規則的方法合併。這個方法是對句子進行精確的句法分析,確定主謂賓等,然後構建一個句法樹。使用這種方法,機器學習在語言之間轉換句法單元,並通過單詞或短語翻譯其餘部分。
這將徹底解決字對齊問題。
問題是,句法分析的效果非常不好,儘管我們認為這件事早就被解決了似的。好幾次我都嘗試用句法樹來解決比分析主謂賓更復雜的任務,但每次都鎩羽而歸。
神經機器翻譯(NMT)
2014年,一篇關於在機器翻譯中使用神經網路的論文對外發布。作者包括蒙特利爾大學的Kyunghyun Cho、Yoshua Bengio等人。
但這篇很有意思的論文並未引發廣泛關注,除了Google——他們立刻開始動手。兩年後的2016年9月,Google宣佈了一個顛覆性的進展。
這就是神經機器翻譯。
與之相關的論文,共有31位作者。Google也宣佈把這個新的技術應用到Google翻譯等產品之中。神經機器翻譯是怎麼工作的呢?
我們先從畫畫說起。對於一隻小狗,如果能用語言準確的描述小狗的特徵,即便你從來沒有見過這隻狗,也能根據描述畫出一個類似的小狗。
翻譯同理。如果可以找到一句話裡的特徵,也可以將一種語言的文字,翻譯成另外一種語言。問題在於,怎麼找到這些特徵?
三十年前,科學家們已經在嘗試建立通用語言程式碼,最後以失敗告終。
但現在,我們有了深度學習,找特徵的事情它最擅長。卷積神經網路CNN適合處理圖片,而在文字領域,迴圈神經網路RNN更適合。
兩年來,神經網路超過了翻譯界過去幾十年的一切。神經翻譯的單詞錯誤減少了50%,詞彙錯誤減少17%,語法錯誤減少19%。
以前統計機器翻譯的方法,始終以英語為本。如果從俄文翻譯成德文,機器需要首先把俄文翻譯成英文,然後再從英文翻譯成德文,中間會產生兩次損失。
而神經翻譯不需要這樣。於是,兩種語言之間即便沒有詞典,也能互相翻譯理解這件事,第一次成為可能。
Google釋出的九種語言的神經機器翻譯被稱為GNMT。它由8個編碼器和8個RNN解碼器層構成,解碼器網路中還有注意力連線。
這套系統還引入了眾包機制。使用者可以選擇他們認為最正確的翻譯版本,在某種程度上,這相當於幫助Google的資料打標籤,以及幫助訓練神經網路。
結論和未來
每個人都對“巴別魚”這個概念感到興奮。
巴別魚(babel fish)是科幻喜劇《銀河系搭便車指南》中虛構的一種生物。巴別魚以聲音中的語言概念為食,消化後排出跟寄主同調的腦波。只要塞到耳朵裡去,就可以聽懂各種語言。所以,巴別魚也成為即時語音翻譯的代名詞。
目前各家在這方面也有所進展。例如Google推出了Pixel Buds,而在國內網易有道、科大訊飛、搜狗等公司也都先後推出了翻譯機類產品。
最近有個朋友就試用了一臺最新的產品。翻譯出來是這樣的:
當然還有很多的進步空間。例如目前訓練神經網路,都是通過一組一組的平行語料。神經網路還不能像人類一樣通過自主閱讀來提高翻譯技能。
不過已經有人開始這方面的嘗試了。比如這篇論文Word Translation Without Parallel Data,幾位作者來自Facebook AI Research等機構。
期待更多的進展出現。
實用資料
《Statistical Machine Translation》(統計機器翻譯)。這本書的作者是Philipp Koehn,其中集結了非常全面的方法。
https://book.douban.com/subject/3618926/
Moses,一個用於建立統計翻譯的流行庫。
http://www.statmt.org/moses/
OpenNMT,另外一個庫,用於神經翻譯機器。
http://opennmt.net/
還有一篇解釋RNN和LSTM的部落格。
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
一段視訊,解釋瞭如何構建一個語言翻譯器。
https://www.youtube.com/watch?v=nRBnh4qbPHI
自行建立神經翻譯器的文字指南,來自TensorFlow。
https://www.tensorflow.org/tutorials/seq2seq
— 完 —
加入社群
量子位AI社群15群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
相關文章
- 微軟機器翻譯系統:中-英翻譯水平可“與人類媲美”微軟
- AI一分鐘 | 騰訊將成立機器人實驗室;機器翻譯重大突破:中英翻譯已達人類水平AI機器人
- 化繁為簡的翻譯機——直譯器模式模式
- 《人類簡史》筆記筆記
- 谷歌大腦開發機器思維的“人類翻譯器”,打破AI“黑盒”新方式谷歌AI
- 機器人極簡史:從周朝跳舞機器人到波士頓動力狗機器人
- [譯] 給人類的機器學習指南??機器學習
- 類人型自主機器人會打太極拳,但功夫很弱-史丹佛HumanPlus機器人機器人
- 人類簡史:從動物到上帝
- 那個聲稱要毀滅人類的機器人網紅機器人
- SDRAM簡要歷史
- [譯] HTTP簡史HTTP
- 神經機器翻譯實戰
- 論機器翻譯之淺薄
- 【翻譯】ECMAScript裝飾器的簡單指南
- 人類簡史、軟體架構和中臺架構
- 如何用PaddlePaddle實現機器翻譯?
- 10分鐘教你用Python實現微信翻譯機器人Python機器人
- 微信翻譯大型翻車現場?機器翻譯到底有哪些不確定性
- 馬雲:AI應該翻譯為機器智慧,機器和人有不同的智慧邏輯AI
- 讀寫給大家的AI極簡史筆記05機器人AI筆記機器人
- [小米集團未來星校招] 機器翻譯研究員 (急招)
- 【小米集團未來星校招】機器翻譯研究員 (急招)
- 從冷戰到深度學習:一篇圖文並茂的機器翻譯史深度學習
- 人類未來:性愛機器人是美女還是野獸機器人
- 百度機器翻譯SDK實驗
- [譯] 理解編譯器 —— 從人類的角度(版本 2)編譯
- 從ALOHA邁向Humanplus,史丹佛開源人形機器人,「高配版人類」上線機器人
- 從人臉識別到機器翻譯:58個超有用的機器學習和預測API機器學習API
- 監管機器翻譯質量?且看阿里如何搭建翻譯質量評估模型阿里模型
- C# 10分鐘完成百度翻譯(機器翻譯)——入門篇C#
- 文件翻譯器怎麼用?如何翻譯Word文件?
- 人工翻譯的分類 安睿傑線上翻譯平臺
- Datawhale AI夏令營-機器翻譯挑戰賽AI
- 史丹佛機器人制造者吳恩達:生活中的機器人,將是專用機器人機器人吳恩達
- [譯]JS模組化簡史JS
- 《Nature》子刊:不僅是語言,機器翻譯還能把腦波「翻譯」成文字
- 用Mac訓練個機器人疊衣服,HuggingFace開源全套教程,開源AI機器人革命要來了?Mac機器人AI