你也許聽說過這種說法: 中文是最有效率的一種語言。同樣一篇文章,比如聯合國憲章,中文版本永遠是最薄的。問題是這種說法到底科學嗎?今天就跟大家聊聊這個問題。科學家确實找到了一種方法去衡量一種語言的效率,甚至可以定量分析,這就是"信息熵"。
1948年,英國數學家克勞德·香農提出了一個表征符号系統中單位符号平均信息量的指标–信息熵,還給出了一個計算信息熵的公式,這個公式十分簡潔。請大家看下這期節目介紹,裡面有這個公式:
公式裡出現的是指某種符号系統中,某個符号出現的頻率。
比如文字就是一種符号系統,每個漢字就是一種符号。而頻率就是某個字在全體文字材料中出現的比例。比如,如果你統計了一本一百萬字的書,這本書中某個字出現了1萬次,那麼這個字的頻率就是:1萬/1百萬=0.01=1%。
而香農這個公式就是要把某個符号系統中的符号頻率全都統計出來,代入上述公式,就是這個符号系統的信息熵。
聽上去有點抽象,我們來點實際運算就容易多了。比如,如果符号系統隻有一個符号,信息熵會如何?
因為隻有一個符号,那麼它的頻率必然就是100%,也就是1。1的對數是0,所以按這個公式的計算結果就是0。
這個結果就香農給出的解釋是,如果一個符号系統隻有1個符号,那麼這個符号系統什麼信息都不能傳遞,單個字符能傳遞的信息是0。如果一種文字隻有一個字母a,一a到底,那麼這種語言真的啥信息能不能傳遞。
那麼兩種符号會如何?我們先假設兩種符号的出現頻率都是50%=0.5。那麼總信息熵,按照公式就是:
所以這種符号系統的信息熵就是1, 意思就是:這種符号系統的每個符号可以傳遞1比特信息。此時我們能看出之所以公式前面要有一個乘以-1,就是為了使結果總是大于等于0,因為人對正數的感受比較直觀。
而我們的另一個發現是,影響信息熵的有兩個因素:一個是符号的多少,一個是符号的頻率分布。那我們可以固定一個變量,看看其中一個變量對信息熵的影響。
我們先假設每個符号的頻率是相等的,字符數不斷增加會如何?假設某符号系統有n個符号,每個符号的頻率是1/n,則該系統的信息熵是:
即有n個符号的符号系統,它的信息熵是。也就是符号越多,信息熵越大。
那我們再考慮一下,如果符号數量固定,符号的頻率分布改變,對信息熵的值影響如何?你稍加計算就會發現,如果符号的頻率分布越不均勻,則信息熵越小。比如如果隻有兩個符号,其中一個符号的出現頻率占90%,另一個隻占10%,則代入公式,可以算出這種符号系統的信息熵是0.47左右。而之前算過兩個符号頻率相等的話,信息熵是1。
計算結果有了,我們來解讀一下。先解讀下為什麼符号越多信息熵越大,也就是單個符号提供的信息越多。
你可以設想,英語不是26個字母,而是有1000個字母了。那麼,即使元音字母還是隻有a,e,i,o,u這5個,而每個單詞要求至少有一個元音字母,那麼用1000個字母,你也可能構造出個兩個字母的單詞。而大學英語六級的詞彙量也就是6000左右,1萬個單詞已經非常多了。如果考慮三個字母的組合,那就夠用了。
所以,英語文章如果可以用1000個字母的系統改寫,那麼幾乎其中所有單詞都可以用3個或更少的字母的組合來表示,這本書将大大變薄,所以單個字母的信息量是不是就增加非常多?
而漢字系統,恰恰有點像有幾千個字母的拼寫系統,所以中文單個字的信息熵會比字母會高。
再看看為什麼符号頻率越均勻,信息熵越高。這是因為符号頻率越均勻,說明符号前後出現的關聯性越小,也就是每個符号都很關鍵,都不能丢,所以符号信息量大。反之,符号出現的關聯越強,則有些符号就可以省略了,說明這些符号提供的信息少。
比如,英語裡,很多單詞的拼寫中的字母組合是經常一起出現的,比如ing, tion 等等。 這些組合中,你即使丢掉了一個字母,也不妨礙你閱讀。網上曾經出現過一個段子,就是一長串英語句子,其中每個單詞的拼寫都丢掉了1-2個字母,但是你閱讀起來完全無障礙,甚至你都不會注意到這些單詞拼錯了。這就說明這些字母提供的信息少。
而中文的話,字與字之間的關聯就小多了,一句話丢掉很多字的話,這句話的意思就很難還原了。而關聯小,也就是字與字之間出現的頻率差距不大,你不容易猜到下一個字,這時,每個字提供的信息量就大。
那英語與中文的信息熵就究竟有多大?不久前國外知名數學博主John D.Cook就發表了一篇,他計算了一下中文的信息熵。他使用的中文詞頻數據是2004年,一位美國大學的發布在網上的。統計結果中,出現頻率最高的漢字是 "的",大概是4.1%。第二位是"一",頻率就隻有1.5%了。Cook根據這個詞頻,計算出單個漢字的信息熵是9.56。而一般認為單個英文字母的信息熵為3.9,中文的優勢是很大的。
(上圖:美國大學研究者Jun Da 笪駿 [email protected],2004年對中文詞頻的統計)
但這樣是否就可以說中文的信息熵比英文高一倍多呢?還不那麼簡單,因為信息熵的比較還有一些不确定因素,比如比較的對象。之前是比較英文字母和漢字,但你也可以比較英文單詞和漢字。
實際上英文單詞雖然組合多了,但是一句話前後的關聯太多,所以單詞的信息熵更低了,香農當初計算計算出單個英文單詞的信息熵是隻有2.62。你也可以對中文也按詞來統計,但是中文怎麼切詞仍然是個問題。
(上圖:香農計算的英語信息熵,英語單詞的信息熵隻有2.62。"27 letter"是指将"空格"也作為一個字母統計。)
另外一個因素是有關詞頻的統計。同樣是中文,古文和白話文的詞頻肯定是不一樣。不同領域裡的文章裡的詞頻也會有很大差異 。不過有一點确定的是,不論哪種語言,數學論文的單位字符信息熵肯定遠大于其他類型的文章,這也是數學論文那麼難懂的原因。數學家是能用公式,就不用文字,能用"顯然"或"易得"就絕不給你展開。往往一個公式你就要在那裡琢磨好幾分鐘。而大老李雖然講的啰嗦點,但是能讓你懂對不對?
(上圖:某數學論文的一頁)
但不管怎樣,目前不同統計方式下中文的信息熵都還是領先的。 Cook提出了一種新的比較标準,即不同語言在單位時間内的輸出信息量,并且他提出一個猜想:不同語言在單位時間内輸出量是接近的。比如同樣一本聖經,中文版肯定比英文版薄,但是讓你抄寫一遍,因為中文筆畫多,中文抄得比較慢,所以最終抄寫時間可能差不多。
當然,現在電腦時代,更應該比較在電腦上輸入的時間。我覺得可以比較一下平均輸入一本中英文版聖經所需要的打字次數(均使用最佳帶聯想功能的輸入法),望有心的讀者可以嘗試研究。
另外,如果考慮語音輸出的效率,會有一些更有意思的發現。有一點是可以肯定,中文當以語音形式輸出時,單個漢字的信息量大大減少,因為漢字至少有5千多個,但是對發音組合,考慮聲調時,大概隻有1200多種,不考慮聲調的話 ,隻有300多種組合。如果像大老李這樣前後鼻音不區分的人,信息量就丢失更多了。這就可以解釋生活中的很多現象。
中文帶聲調拼音組合頻率前十為: de, 4.63% shi4, 2.23% yi1, 1.71% bu4, 1.49% ta1, 1.21% zai4, 1.13% le, 1.10% ren2, 0.97% you3, 0.96% shi2, 0.90%
中文無聲調拼音組合頻率前十為: de, 5.05% shi, 3.60% yi, 3.04% ji, 1.58% bu, 1.52% zhi, 1.42% you, 1.42% ta, 1.23% ren, 1.20% li, 1.20%
比如:中文沒法改成拼音文字,寫出來完全沒法讀,同音字太多。
(上圖:隻有拼音的文章念起來是很累的)
再比如:大家玩過一個耳語傳話的遊戲,就是一些人,以耳語的形式把一句話傳給下一個人,結果到6、7人之後這句話就被傳的面目全非。下次各位可以試試看看傳一句簡單的英語,看看是不是容易保持原來的句子。
下次再有老外問:為什麼你們中國人講話總是這麼大聲?你可以回答: 為中文語音的信息熵低,我不得不大聲說,确保對方每個字都聽清楚。
另外,為什麼很多人都讨厭微信上總是發語音的人,也可以用信息熵來解釋,就是相比文字,語音在單位時間内接傳遞的信息太少了,也容易失真。
總之,Cook猜想,不同語言在單位時間的輸出信息熵是類似的,這一點有興趣的聽衆大可以自己研究一下。
再解釋下為什麼香農對這個表征信息量大小的這個指标命名為"信息熵"?它與物理中的"熵"有何聯系?當然是有聯系的。物理中的"熵"一種直觀的定義就是表征一個系統的混亂程度,越混亂,熵值越大,越有序,則熵值越低。
維基百科上對"熵"的定義: 化學及熱力學中所謂"熵"(英語:entropy),是一種測量在動力學方面不能做功的能量總數,也就是當總體的熵增加,其做功能力也下降,熵的量度正是能量退化的指标。熵亦被用于計算一個系統中的失序現象,也就是計算該系統混亂的程度。熵是一個描述系統狀态的函數,但是經常用熵的參考值和變化量進行分析比較,它在控制論、概率論、數論、天體物理、生命科學等領域都有重要應用,在不同的學科中也有引申出的更為具體的定義,是各領域十分重要的參量。
那在信息熵中,為什麼語言越"混亂",信息量也越大?這一點還是可以從語言的上下文關聯度來考慮。比如英語單詞中的字母相關度是很高的,之前提到過的ing, tion,還有等等各種前綴後綴。
因為相關度大,那麼你看到ing或者在tion這樣的後綴組合裡拿掉一個字母,完全不影響閱讀,說明這些組合中單個字母提供的信息量很小。而中文的上下文關聯度就低很多,所以單個漢字信息量大。而上下文關聯度高,也可以理解為符号系統越"有序",而關聯度小就是越“無序”,所以把信息量用"熵"來命名再恰當不過了,而它确實與物理中的熵有許多類似性質。
最後,讨論下信息量的單位。從公式裡看,信息熵是沒有單位的,但有時我們也用bit作為其單位(就是計算機中,比特位的比特)。比如中文平均單個漢字信息熵是9.56,也可以說成,單個漢字提供的信息量是9.56比特。這是為什麼呢?這其實是一個符号編碼的問題。
現在我們的計算機系統中的字符一般采用的是等長的編碼方式,即每個字符的編碼長度是相等的。比如unicode編碼系統中,每個字符用16bit的二進制位來編碼。那麼理論上,它可以對2^16=65536中字符進行編碼,它已經足夠對世界上所有文字符号進行編碼,甚至現在我們還不斷在其中增加表情符(emoji)。
(上圖:unicode已經足夠對世界上所有文字符号編碼)
但如果你的目标是使目标文本的編碼總長度最短的話,那麼等長編碼方式就不是最優方案了。因為每個字符的頻率不同,我們可以考慮對頻率高的字符用比較短的長度進行編碼。
比如之前提到,中文文本中,"的"這個字的使用頻率最高,那我就可以對"的"用1位的"0"進行編碼,其他所有漢字都用"1"開始的二進位編碼。中文中第二頻率高的字符是"一",那就用"10"兩位對它對編碼,用"110"給第三位頻率的漢字編碼等等。這樣頻率高的漢字編碼長度短,而且不同漢字的編碼在開始的二進位都是可以區分的,所以可以互相之間還是可以區分。
這種編碼方式在計算機算法中稱為"哈夫曼編碼"或"前綴碼",因為不同的字符使用編碼的前綴來區分。當然,漢字中"的"出現的頻率,還沒有高到值得用1位二進制對其編碼。但有一種算法,可以根據不同字符的頻率表,得出平均碼長最短的編碼方式,此時的編碼結果稱為"最優前綴碼"。
在計算機數據處理中,霍夫曼編碼使用變長編碼表對源符号(如文件中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符号出現幾率的方法得到的,出現幾率高的字母使用較短的編碼,反之出現幾率低的則使用較長的編碼,這便使編碼之後的字符串的平均長度、期望值降低,從而達到無損壓縮數據的目的。
而對某個漢字字符的頻率表,如果你計算出信息熵是9.56,那對同一張頻率表,對其進行最優前綴碼編碼,你會發現,單個漢字的平均編碼長度就是9.56!(具體原因,請各位自行分析。)但也因此,我們也可以說,信息熵的單位就是"比特"。
到這裡又會有一個很有意思的洞察,就是考察不同語言文本文件的壓縮率。比如都是用unicode編碼的中英文版聖經,分别比較用rar軟件壓縮後文件大小的變化量。因為壓縮軟件,本質上就是去除文本中的冗餘信息,用接近最優編碼方式對文件進行編碼的方式,那麼如果一個文本壓縮後,能壓縮的很小,就說明原來的文本信息比較冗餘,單位字符的信息量低。反之,如果壓縮後,文件大小變化不大,就說明原來的文本信息冗餘量少,單位字符信息量大。
實際情況當然很多人也做了實驗,中文也不負衆望,中文本文的壓縮率在各種語言的比較中,總是最低的,所以這也側面驗證了,中文是主流語言中最有效率的語言。
那麼有關信息熵的話題聊的差不多了,我最大感想是香農用如此簡單的一個公式,給了我那麼多的啟發和思考,我覺得以後,在提到"最美公式"的時候,香農的這個應該有一席之地。
而中文在符号上提供的信息量大,是基本上可以确定的。而中文在語音上會丢失的信息的劣勢也是很明顯的(所以大家愛看有字幕的視頻)。
最後,為什麼大家喜歡聽播音演員的語音呢?可能就是他們清晰,詳略得當,使得聽衆可以在單位時間内接收到恰好多的信息。而大老李因為沒有受過訓練,所以不可能達到播音演員的語音效果。但我可以保證,大老李的節目如果你都聽懂的話,你在單位時間内接收到的信息量是很大的。下期再見!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!