我的雲端生活網 - Life+

Monday, December 7, 2009

自然語言處理

資料統計方式的文件翻譯

2009年三月 Google 的 Alon Halevy 等人放出一篇通俗的文章,題名為 The Unreasonable Effectiveness of Data ,說明了用資料統計方法處理文章翻譯的好處。

他們提到,即使 Eugene 撰文 The Unreasonable Effectiveness of Mathematics in the Natural Sciences 說明物理學學者怎麼都愛用數學式做優雅的表達,但是碰到英文翻譯就不一定都有好處,好比經濟學家用數學也不好處理人文社會的情況。 Google 處理大量的網頁資料,他們的資料庫 (corpus) 特別沒有規矩,存在許多拼字錯誤、用法錯誤、甚至有造假文字。但是他們能用統計方法,處理這些網頁資料,得到他們要的翻譯。

所謂翻譯,是指處理文件及資料。翻譯是自然語言處理的其中一種應用,其他有語源分析、資訊萃取等等。翻譯文件是人們大量使用的應用方式,所以在網路上有各種文件的各種語言版本,不需要多少人力處理。而專用於傳統語言處理的語料庫 (corpus) 則需要相當大量的人力,做語法、語意的定義工作。所以,傳統自然語言處理方法的語料整理工夫已消耗太多人力。然而,考慮到文件翻譯,網路上已經存在許多可用的語料庫了,應絯善用這些網路資料。

在網路文件的錯誤方面,雖然在百萬級 (million) 資料量中,文件中存在的錯誤可能有影響,但是當語料庫數量達到十億級 (billion) 甚至兆級 (trillion) 數量,文件錯誤佔了相對更少的比例。使用統計式的自然語言處理可以收到自然的正確結果。 MapReduce 恰好非常適用於統計式翻譯。

統計式翻譯方法的缺點是,無法糾正來源的語料庫存在的錯誤,也不容易對抗一些造假的事實。不過,翻譯工作只需要把一個文件變成另一種語言版本,而不是要做推理。

語言的組合性

在語言學中,自然語意的解釋,是指有用一種後設語言 (meta-language) 處理某一種目標語言 (object-language) 的句子意思。例如,用英文解釋波蘭文句子的意思,波蘭文是目標語言,英文則是後設語言。按照這種思維,電腦程式語言是哪個層次的語言呢?

回到語言理論,Allan Keith的書 Natural Language Semantics 提到傳統語言處理。語言是由許多單字組成,而單字的意義是可以組合的。句子或片語的意思可以由所構成單字的意思組成。 Allan James 的書 Natural language understanding 也提到,語言處理在應用上可分為幾個類型,其中一種是將語言應用系統做為問答系統,另一種是將語言系統做為用語言發送指令。我想,採用複雜事件處理的概念,或許可以將一個句子的每個單字當做是各別到達的事件,我們對句子做複雜事件的偵測,把一些關鍵詞的意思抓出來,根據每個關鍵詞的前後順序決定這個句子對應成什麼意思、代表什麼指令,然後對系統發出指令。

自然語言句子做為指令的系統,實作上的基本優勢是:雖然自然語言理論上有無窮數量的語料庫,但電腦系統接受的指令是有限的,所以自然語言對應到電腦的句子語料庫少了很多。至少這是可慶幸的。

No comments:

Blog Archive