研究人工智慧數十年了,看了近千本語言學以及人工智慧技術的書籍,寫了百萬字的筆記,清理過數百萬的詞彙、句子資料庫,發明了自己的預測輸入法(手機)與中文校對軟體、分詞系統、標註系統。接觸過很多理論與技術,發現很多問題。最近感覺年紀也差不多了,這麼多的筆記、資料,沒有整理,人走了就是廢物了,也感覺是虛耗了以前的生命。所以開了這個專題,把相關的筆記、感想、發現整理一下。不一定都是什麼高深的玩意,而可能有很多很基礎的東西,這些東西可能被人忽視甚至輕視,或者以為沒什麼影響卻其實影響整體效能非常深遠,甚至達到無法解決的地步。
如果就中文自然語言處理這一塊來說,很多問題(有些極簡單)大家瞎忙了半個世紀,嘗試過無數辦法,卻依然沒有解決。要說搞什麼大工程,中國過去數十年搞了一大堆大工程,譬如詞彙信息庫、標註庫等等都已經做過,而且規模很大;至今還在維護與新增的也還有(北大)。但即使如此,結合當代的機器學習技術,很多問題雖然被發現了(有些數十年前就發現了),但始終沒法解決。確實,這結果有點讓人不可思議。怎麼可能一大堆高級菁英掌握了龐大的資源(包含資金、人才、機器、理論、時間)卻還是解決不了一個類似「The box was in the pen」的翻譯問題,或者甚至中文分詞的精確度始終無法達標(那些號稱95%以上的分詞系統,在實際運用中大概都只有70%左右的準確度。這些都會在以後的介紹清單之中。)。但事實就是如此。
華人百科關於「中文分詞」有這樣一段話:「統計結果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進一步提高切分的準確率。」但事實上關於什麼是正確與錯誤這件事本身就存在嚴重的分歧。這大概分為兩種情況:
一是用來比對的句子本身就是錯的,包含缺字、多字、錯字(元素類),甚至整個句子都錯的情況(語法、語義等類)。但一般人(尤其幾年來)都會誤以為只要數據庫夠大,可以不用理會這些錯誤。直到這一年多來,現實才漸漸讓原本如此主張的人沉默了。
二是怎麼分才算對的問題。而這其實佔據的比例遠比第一項大得多,影響也大得多。譬如:「構成太陽能板的太陽能電池可由不同光伏材料製成」,可以分成:
1.構成-太陽能板-的-太陽能電池-可-由-不-同-光伏材料-製成
2.構成-太陽能板-的-太陽能-電池-可由-不同-光伏-材料-製成
哪一種才算對?這時候的對與錯已經不是句子元素本身的問題而是「標準」的問題。但很不幸的,關於什麼是「詞」的標準至今無法得出一個大家都能遵循的標準!怎麼分詞,自然也就更無標準可言。即使你拿著一套標準,給標註、分詞人員遵循,甚至給了一套工具輔助他們的工作,很快的,你也很容易發現效果仍然不理想。遑論沒有工具與標準的時候!(甚至意識不到標準的重要的時候)你只是拿到了這些人覺得對的分詞結果。而事實上在語言學界,甚至有為了某些詞的詞性爭論不休的情況,一個詞應該是副詞、形容詞尚且無法認定,試問詞性標註的標準又何在?(以後會談)
而關於上面這一個句子的分詞標準不一的問題,其實普遍存在於開源的分詞資料庫之中。那麼可以想像,當你以第一種為標準去比對分詞後的句子,那麼第二種就是錯誤的,但事實上,要說它錯,恐怕很多人不會同意(每個人都有自己的主觀標準)。假設你用來訓練的分詞庫、標註庫充斥著一大堆標準不一的分詞結果(通常人是無法直觀知道分詞標準不一的,因為在人的理解上,它並沒有錯。),那麼會導致什麼結果,不言可喻!譬如你發現了問題,去調東調西,把針對測試集的分數提上去了,但事實上面對真實語料的能力反而下降了,主管喜歡看哪一種結果?哪一種結果更好交差?那麼這樣標準不一的比例有多少?有些資料庫可能有50%的句子觸及到不同標準的分詞方式。50%,人眼看不出標準的問題(除非有意識、記憶力強、有相關輔助工具),便很容易不知道問題出在哪了!於是去調一大堆參數,以為就能解決問題。其實解決了這個問題,卻造成了其他問題,只是可能客戶端還沒試出來罷了!
單單把「錯誤+標準」的問題結合起來,就能讓一大堆的運用大打折扣了!而尤其標準的問題影響更深遠,因為「錯誤」很容易發現與剃除(至少相對來說),而「標準」卻不容易發現與標準化。
所以看到這裡大概你也能懂,為什麼Bert能在問答系統、翻譯系統表現得比其他需要借助分詞的系統取得更好的成果!為什麼?因為它是字級別的(不分詞),不用觸碰到分詞的「標準」問題。所以寫到這裡,Bert為什麼能在多個系統中達到輾壓其他借助分詞的系統的成果,以及「標準」問題有多大的影響力,大家應該已經有了深刻的理解了!可惜的是並非所有中文自然語言處理都不需要用到分詞,中文分詞仍有其存在的必要性!因此「標準」問題無法迴避!