最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

中文是最有效率的語言嗎?-- 趣談信息熵

2019-11-04 06:48 作者:大老李聊數(shù)學(xué)  | 我要投稿

你也許聽說過這種說法: 中文是最有效率的一種語言。同樣一篇文章,比如聯(lián)合國憲章,中文版本永遠(yuǎn)是最薄的。問題是這種說法到底科學(xué)嗎?今天就跟大家聊聊這個問題。科學(xué)家確實找到了一種方法去衡量一種語言的效率,甚至可以定量分析,這就是“信息熵”。

1948年,英國數(shù)學(xué)家克勞德·香農(nóng)提出了一個表征符號系統(tǒng)中單位符號平均信息量的指標(biāo)–信息熵,還給出了一個計算信息熵的公式,這個公式十分簡潔:



公式里出現(xiàn)的pi是指某種符號系統(tǒng)中,某個符號出現(xiàn)的頻率。

比如文字就是一種符號系統(tǒng),每個漢字就是一種符號。而頻率就是某個字在全體文字材料中出現(xiàn)的比例。比如,如果你統(tǒng)計了一本一百萬字的書,這本書中某個字出現(xiàn)了1萬次,那么這個字的頻率就是:1萬/1百萬=0.01=1%。

而香農(nóng)這個公式就是要把某個符號系統(tǒng)中的符號頻率全都統(tǒng)計出來,代入上述公式,就是這個符號系統(tǒng)的信息熵。

聽上去有點抽象,我們來點實際運(yùn)算就容易多了。比如,如果符號系統(tǒng)只有一個符號,信息熵會如何?

因為只有一個符號,那么它的頻率必然就是100%,也就是1。1的對數(shù)是0,所以按這個公式的計算結(jié)果就是0。

這個結(jié)果就香農(nóng)給出的解釋是,如果一個符號系統(tǒng)只有1個符號,那么這個符號系統(tǒng)什么信息都不能傳遞,單個字符能傳遞的信息是0。如果一種文字只有一個字母a,一a到底,那么這種語言真的啥信息能不能傳遞。

那么兩種符號會如何?我們先假設(shè)兩種符號的出現(xiàn)頻率都是50%=0.5。那么按公式:log20.5?=????1 。那么總信息熵,按照公式就是:


???1?×?(0.5?×?(???1)?+?0.5?×?(???1))?=?1

那么這種符號系統(tǒng)的信息熵就是1, 意思就是:這種符號系統(tǒng)的每個符號可以傳遞1比特信息。此時我們能看出之所以公式前面要有一個乘以-1,就是為了使結(jié)果總是大于等于0,因為人對正數(shù)的感受比較直觀。

而我們的另一個發(fā)現(xiàn)是,影響信息熵的有兩個因素:一個是符號的多少,一個是符號的頻率分布。那我們可以固定一個變量,看看其中一個變量對信息熵的影響。

我們先假設(shè)每個符號的頻率是相等的,字符數(shù)不斷增加會如何?假設(shè)某符號系統(tǒng)有n個符號,每個符號的頻率是1/n,則該系統(tǒng)的信息熵是:



即有n個符號的符號系統(tǒng),它的信息熵是log2n。也就是符號越多,信息熵越大。

那我們再考慮一下,如果符號數(shù)量固定,符號的頻率分布改變,對信息熵的值影響如何?你稍加計算就會發(fā)現(xiàn),如果符號的頻率分布越不均勻,則信息熵越小。比如如果只有兩個符號,其中一個符號的出現(xiàn)頻率占90%,另一個只占10%,則代入公式,可以算出這種符號系統(tǒng)的信息熵是0.47左右。而之前算過兩個符號頻率相等的話,信息熵是1。

計算結(jié)果有了,我們來解讀一下。先解讀下為什么符號越多信息熵越大,也就是單個符號提供的信息越多。

你可以設(shè)想,英語不是26個字母,而是有1000個字母了。那么,即使元音字母還是只有a,e,i,o,u這5個,而每個單詞要求至少有一個元音字母,那么用1000個字母,你也可能構(gòu)造出1000?×?5?×?2?=?10000個兩個字母的單詞。而大學(xué)英語六級的詞匯量也就是6000左右,1萬個單詞已經(jīng)非常多了。如果考慮三個字母的組合,那就夠用了。

所以,英語文章如果可以用1000個字母的系統(tǒng)改寫,那么幾乎其中所有單詞都可以用3個或更少的字母的組合來表示,這本書將大大變薄,所以單個字母的信息量是不是就增加非常多?

而漢字系統(tǒng),恰恰有點像有幾千個字母的拼寫系統(tǒng),所以中文單個字的信息熵會比字母會高。

再看看為什么符號頻率越均勻,信息熵越高。這是因為符號頻率越均勻,說明符號前后出現(xiàn)的關(guān)聯(lián)性越小,也就是每個符號都很關(guān)鍵,都不能丟,所以符號信息量大。反之,符號出現(xiàn)的關(guān)聯(lián)越強(qiáng),則有些符號就可以省略了,說明這些符號提供的信息少。

比如,英語里,很多單詞的拼寫中的字母組合是經(jīng)常一起出現(xiàn)的,比如ing, tion等等。 這些組合中,你即使丟掉了一個字母,也不妨礙你閱讀。網(wǎng)上曾經(jīng)出現(xiàn)過一個段子,就是一長串英語句子,其中每個單詞的拼寫都丟掉了1-2個字母,但是你閱讀起來完全無障礙,甚至你都不會注意到這些單詞拼錯了。這就說明這些字母提供的信息少。

一段字母位置錯亂的英語文章,但是仍然不妨礙閱讀:
I cnduo’t bvleiee taht I culod aulaclty uesdtannrd waht I was rdnaieg. Unisg the icndeblire pweor of the hmuan mnid, aocdcrnig to rseecrah at Cmabrigde Uinervtisy, it dseno’t mttaer in waht oderr the lterets in a wrod are, the olny irpoamtnt tihng is taht the frsit and lsat ltteer be in the rhgit pclae. The rset can be a taotl mses and you can sitll raed it whoutit a pboerlm. Tihs is bucseae the huamn mnid deos not raed ervey ltteer by istlef, but the wrod as a wlohe. Aaznmig, huh? Yaeh and I awlyas tghhuot slelinpg was ipmorantt! See if yuor fdreins can raed tihs too.

而中文的話,字與字之間的關(guān)聯(lián)就小多了,一句話丟掉很多字的話,這句話的意思就很難還原了。而關(guān)聯(lián)小,也就是字與字之間出現(xiàn)的頻率差距不大,你不容易猜到下一個字,這時,每個字提供的信息量就大。

那英語與中文的信息熵就究竟有多大?不久前國外知名數(shù)學(xué)博主John D.Cook就發(fā)表了一篇博客,他計算了一下中文的信息熵。它使用的中文詞頻數(shù)據(jù)是2004年,一位美國大學(xué)的研究者發(fā)布在網(wǎng)上的。統(tǒng)計及結(jié)果中,出現(xiàn)頻率最高的漢字是 “的”,大概是4.1%。第二位是“一”,頻率就只有1.5%了。Cook根據(jù)這個詞頻,計算出單個漢字的信息熵是9.56。而一般認(rèn)為單個英文字母的信息熵為3.9,中文的優(yōu)勢是很大的。

(上圖:美國大學(xué)研究者Jun Da 笪駿 jda@mtsu.edu,2004年對中文詞頻的統(tǒng)計)

但這樣是否就可以說中文的信息熵就比英文高一倍多呢?還不那么簡單,因為信息熵的比較還有一些不確定因素,比如比較的對象。之前是比較英文字母和漢字,但你也可以比較英文單詞和漢字。

實際上英文單詞雖然組合多了,但是一句話前后的關(guān)聯(lián)太多,所以單詞的信息熵更低了,香農(nóng)當(dāng)初計算計算出單個英文單詞的信息熵是只有2.62。你也可以對中文也按詞來統(tǒng)計,但是中文怎么切詞仍然是個問題。

(上圖:香農(nóng)計算的英語信息熵,英語單詞的信息熵只有2.62?!?7 letter“是指將“空格”也作為一個字母統(tǒng)計。)

另外一個因素是有關(guān)詞頻的統(tǒng)計。同樣是中文,古文和白話文的詞頻肯定是不一樣。不同領(lǐng)域里的文章里的詞頻也會有很大差異 。不過有一點確定的是,不論哪種語言,數(shù)學(xué)論文的單位字符信息熵肯定遠(yuǎn)大于其他類型的文章,這也是為什么數(shù)學(xué)論文那么難懂的原因。數(shù)學(xué)家是能用公式,就不用文字,能用“顯然”或“易得”就絕不給你展開。往往一個公式你就要在那里琢磨好幾分鐘。而大老李雖然講的啰嗦點,但是能讓你懂對不對?

(上圖:某數(shù)學(xué)論文的一頁)

但不管怎樣,目前不同統(tǒng)計方式下中文的信息熵都還是領(lǐng)先的。 Cook提出了一種新的比較標(biāo)準(zhǔn),即不同語言在單位時間內(nèi)的輸出信息量,并且他提出一個猜想是不同語言在單位時間內(nèi)輸出量是接近的。比如同樣一本圣經(jīng),中文版肯定比英文版薄,但是讓你抄寫一遍,因為中文筆畫多,中文抄的抄的比較慢,所以最終抄寫時間可能差不多。

當(dāng)然,現(xiàn)在電腦時代,更應(yīng)該比較在電腦上輸入的時間。我覺得可以比較一下平均輸入一本中英文版圣經(jīng)所需要的打字次數(shù)(均使用最佳帶聯(lián)想功能的輸入法),望有心的讀者可以嘗試研究。

另外,如果考慮語音輸出的效率,會有一些更有意思的發(fā)現(xiàn)。有一點是可以肯定的,中文當(dāng)以語音形式輸出時,單個信息量的信息量大大減少,因為漢字至少有5千多個,但是發(fā)音組合考慮聲調(diào)時,大概只有1200多種,不考慮聲調(diào)的話 ,只有300多種組合。如果像大老李這樣這樣前后鼻音不區(qū)分的人,信息量就丟失更多了。這就可以解釋生活中的很多現(xiàn)象。

中文帶聲調(diào)拼音組合頻率前十為: 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%

中文無聲調(diào)拼音組合頻率前十為: 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%

比如:中文沒法改成拼音文字,寫出來完全沒法讀,同音字太多。

(上圖:只有拼音的文章念起來是很累的)

再比如:大家玩過一個耳語傳話的游戲,就是一些人,以耳語的形式把一句話傳給下一個人,結(jié)果到6、7人之后這句話就被傳的面目全非。下次各位可以試試看看穿一句簡單的英語,看看是不是容易保持原來的句子。

下次再有老外問:為什么你們中國人講話總是這么大聲?你可以回答: 為中文語音的信息熵低,我不得不大聲說,確保對方每個字都聽清楚。

另外,為什么很多人都討厭微信上總是發(fā)語音的人,也可以用信息熵來解釋,就是相比文字,語音在單位時間內(nèi)接傳遞的信息太少了,而且也容易失真。

總之,Cook猜想,不同語言在單位時間的輸出信息熵是類似的,這一點有興趣的聽眾大可以自己研究一下。

再解釋下為什么香農(nóng)對這個表征信息量大小的這個指標(biāo)命名為“信息熵”?它與物理中的“熵”有何聯(lián)系?當(dāng)然是有聯(lián)系的。物理中的”熵“一種直觀的定義就是表征一個系統(tǒng)的混亂程度,越混亂,熵值越大,越有序,則熵值越低。

維基百科上對“熵”的定義: 化學(xué)及熱力學(xué)中所謂“熵”(英語:entropy),是一種測量在動力學(xué)方面不能做功的能量總數(shù),也就是當(dāng)總體的熵增加,其做功能力也下降,熵的量度正是能量退化的指標(biāo)。熵亦被用于計算一個系統(tǒng)中的失序現(xiàn)象,也就是計算該系統(tǒng)混亂的程度。熵是一個描述系統(tǒng)狀態(tài)的函數(shù),但是經(jīng)常用熵的參考值和變化量進(jìn)行分析比較,它在控制論、概率論、數(shù)論、天體物理、生命科學(xué)等領(lǐng)域都有重要應(yīng)用,在不同的學(xué)科中也有引申出的更為具體的定義,是各領(lǐng)域十分重要的參量。

那在信息熵中,為什么語言越”混亂“,信息量也越大?這一點還是可以從語言的上下文關(guān)聯(lián)度來考慮。比如英語單詞中的字母相關(guān)度是很高的,比如之前提到過的ing, tion,還有等等各種前綴后綴。

因為相關(guān)度大,那么你看到ing或者在tion這樣的后綴組合里拿掉一個字母,完全不影響閱讀,那么就是這些組合中單個字母提供的信息量很小。而中文的上下文關(guān)聯(lián)度就低很多,所以單個漢字信息量大。而上下文關(guān)聯(lián)度高,也可以理解為符號系統(tǒng)越”有序“,而關(guān)聯(lián)度小就是越無序,所以把信息量用“熵”來命名再恰當(dāng)不過了,而它確實與物理中的熵有許多類似性質(zhì)。

最后,討論下信息量的單位。從公式里看,信息熵是沒有單位的,但有時我們也用bit作為其單位(就是計算機(jī)中,比特位的比特)。比如中文平均單個漢字信息熵是9.56,也可以說成,單個漢字提供的信息量是9.56比特。這是為什么呢?這其實是一個符號編碼的問題。

現(xiàn)在我們的計算機(jī)系統(tǒng)中的字符一般采用的是等長的編碼方式,即每個字符的編碼長度是相等的。比如unicode編碼系統(tǒng)中,每個字符用16bit的二級制來編碼。那么理論上,它可以對2^16=65536中字符進(jìn)行編碼,它已經(jīng)足夠?qū)κ澜缟纤形淖址栠M(jìn)行編碼,甚至現(xiàn)在我們還不斷在其中增加表情符(emoji)。

(上圖:unicode已經(jīng)足夠?qū)κ澜缟纤形淖址柧幋a)

但如果你的目標(biāo)是使目標(biāo)文本的編碼總長度最短的話,那么等長編碼方式就不是最優(yōu)方案了。因為每個字符的頻率不同,我們可以考慮對頻率高的字符用比較短的長度進(jìn)行編碼。

比如之前提到,中文文本中,”的“這個字的使用頻率最高,那我就可以對”的“用1位的“0”進(jìn)行編碼,其他所有漢字都用“1”開始的二進(jìn)位編碼。中文中第二頻率高的字符是”一“,那就用“10”兩位對它對編碼,用“110”給第三位頻率的漢字編碼等等。這樣頻率高的漢字編碼長度短,而且不同漢字的編碼在開始的二進(jìn)位都是可以區(qū)分的,所以可以互相之間還是可以區(qū)分。

這種編碼方式在計算機(jī)算法中稱為”哈夫曼編碼“或”前綴碼“,因為不同的字符使用編碼的前綴來區(qū)分。當(dāng)然,漢字中”的“出現(xiàn)的頻率,還沒有搞到值得用1位二進(jìn)制對其編碼。但有一種算法,可以根據(jù)不同字符的頻率表,得出平均碼長最短的編碼方式,此時的編碼結(jié)果稱為“最優(yōu)前綴碼”。

在計算機(jī)數(shù)據(jù)處理中,霍夫曼編碼使用變長編碼表對源符號(如文件中的一個字母)進(jìn)行編碼,其中變長編碼表是通過一種評估來源符號出現(xiàn)幾率的方法得到的,出現(xiàn)幾率高的字母使用較短的編碼,反之出現(xiàn)幾率低的則使用較長的編碼,這便使編碼之后的字符串的平均長度、期望值降低,從而達(dá)到無損壓縮數(shù)據(jù)的目的。

而對某個漢字字符的頻率表,如果你計算出信息熵是9.56,那對同一張頻率表,對其進(jìn)行最優(yōu)前綴碼編碼,你會發(fā)現(xiàn),單個漢字的平均編碼長度就是9.56?。ň唧w原因,請各位自行分析。)但也因此,我們也可以說,信息熵的單位就是“比特”。

到這里又會有一個很有意思的洞察,就是考察不同語言文本文件的壓縮率。比如都是用unicode編碼的中英文版圣經(jīng),分別比較用rar軟件壓縮后文件大小的變化量。因為壓縮軟件,本質(zhì)上就是去除文本中的冗余信息,用接近最優(yōu)編碼方式對文件進(jìn)行編碼的方式,那么如果一個文本壓縮后,能壓縮的很小,就說明原來的文本信息比較冗余,單位字符的信息量低。反之,如果壓縮后,文件大小變化不大,就說明原來的文本信息冗余量少,單位字符信息量大。

那么實際情況當(dāng)然很多人也做了實驗,中文也不負(fù)眾望,中文本文的壓縮率在各種語言的比較中,總是最低的,所以這也側(cè)面驗證了,中文是主流語言中最有效率的語言。

那么有關(guān)信息熵的話題聊的差不多了,我最大感想是香農(nóng)用如此簡單的一個公式,給了我那么多的啟發(fā)和思考,我覺得以后,在提到“最美公式”的時候,香農(nóng)的這個應(yīng)該有一席之地。

而中文在符號上提供的信息量大,是基本上可以確定的。而中文在語音上會丟失的信息的劣勢也是很明顯的(所以大家愛看有字幕的視頻)。

最后,為什么大家喜歡聽播音演員的語音呢?可能就是他們清晰,詳略得當(dāng),使得聽眾可以在單位時間內(nèi)接收到恰好多的信息。而大老李因為沒有受過訓(xùn)練,所以不可能達(dá)到播音演員的語音效果。但我可以保證,大老李的節(jié)目如果你都聽懂的話,你在單位時間內(nèi)接收到的信息量是很大的。下期再見!


喜馬拉雅:ximalaya.com/keji/63106

微信關(guān)注:dalaoli_shuxue

B站: space.bilibili.com/4237

知乎:https://zhuanlan.zhihu.com/dalaoli-shuxue/

電郵:dalaoliliaoshuxue@gmail.com

參考鏈接:

https://www.zhihu.com/question/37998688

https://zh.wikipedia.org/zh-cn/%E5%85%8B%E5%8A%B3%E5%BE%B7%C2%B7%E9%A6%99%E5%86%9C

https://www.johndcook.com/blog/2019/10/18/chinese-character-entropy/



中文是最有效率的語言嗎?-- 趣談信息熵的評論 (共 條)

分享到微博請遵守國家法律
洛隆县| 改则县| 宁夏| 卢龙县| 安乡县| 启东市| 同心县| 浦县| 维西| 牟定县| 青冈县| 宣恩县| 沙雅县| 长宁区| 建平县| 云浮市| 炉霍县| 西乌珠穆沁旗| 铜鼓县| 北票市| 崇阳县| 克东县| 华池县| 连江县| 江孜县| 德钦县| 志丹县| 富顺县| 罗田县| 平安县| 阿拉尔市| 碌曲县| 津市市| 东乡族自治县| 嵊州市| 忻城县| 兰坪| 揭阳市| 六盘水市| 义马市| 平远县|