雜記 › 資源分享 › 120 回的「紅樓夢」整本貼進文本頻率統計,榜首為什麼是 59260 次的逗號

120 回的「紅樓夢」整本貼進文本頻率統計,榜首為什麼是 59260 次的逗號

「紅樓夢」120 回全本 TXT 實測 2605929 位元組、5496 行,整本貼進文本頻率統計後榜首是 59260 次的逗號,回數按三種口徑分別命中 124、112 與 120。

把一整部 120 回的書貼進文本頻率統計

有人把一整部 120 回的公版古籍原文粘進文本頻率統計的字元框,回車後榜首不是任何漢字,而是一個出現 59260 次的逗號。這份 TXT 實測 2605929 位元組、5496 行、無 BOM 的單一 UTF-8,非 ASCII 位元組佔 99.78%。

位元組、碼元、漢字是三本帳

這份 120 回全本的原始檔案在站內資源頁 紅樓夢資源頁,位元組數由 wc -c 與 fs.statSync 雙口徑互證都是 2605929。介面統計欄讀的是 text.length,即 UTF-16 碼元 872515,比位元組少 1733414,位元組除以碼元約 3.0;而按 /[\u4e00-\u9fff]/g 只數漢字又是 732628。把整本餵進文本頻率統計,那一格讀到的是 872515,不是檔案名裡的 2.6 MB——三個數各說各的帳,不能互相替換。

回數三法為什麼差 124、112、120

寬鬆正則命中 124 次,不等於 120 回:124 裡有 120 個是回目行(【與】各出現 120 次),另 3 處落在正文敘述、1 處是不帶方括號的裸回目重出。嚴格漢字數字正則只命中 112 次,差的 12 處全在第 100 回之後——這段回目用「零」寫法,字元類沒收錄「零」就整批漏計,112 加 12 與 124 閉合。第三條獨立證據是把 120 個漢字回目逐行寫進關鍵字欄,總命中報 124 次、未出現 0 個。

榜首是逗號,前 10 名裡 4 個標點

整榜 4454 項按次數降序,漢字第一名是「了」21221 次排第 3、比逗號少 38039 次,「的」15719 排第 4;範本只跳四類空白、標點全參與排名,於是前 10 名裡混進 4 個標點。下表給前 10 名:

名次字元次數佔比
1,592606.8
2。294623.4
3了212212.4
4的157191.8
5不150531.7
6一121791.4
7:117861.4
8来114451.3
9道110591.3
10”106821.2

文言虛詞全在低位:之 2147 次(全榜第 75 名)、也 6116、者 416、乎 70、矣 65、焉 26、哉 26。單看「之」只有「的」的 13.7%,教科書那條字母 E 約 12.7% 的密度尺子在這裡沒有任何單項接近。

逐回字數與行數不成正比

120 段去空白口徑平均 7211.3 字每回、漢字平均 6105.2;最長第六十二回 11760 字,最短第十二回 4215 字,差 7545、比 2.79 倍。按行排名次會整個反過來:第七十八回 123 行只有 10653 字(詩帖行多),第七十四回 25 行卻有 10956 字,逐回字數榜只能按去空白字數排。

逐回去空白字數(條形=字數,右側=行數) 62回 11760 59行 74回 10956 25行 78回 10653 123行 12回 4215 31行

圖 1:字數榜 74 回高於 78 回,行數卻是 78 回 123 對 74 回 25,兩套名次互換

英文詞頻只出 7 項網址殘渣

英文詞頻那一格的分詞口徑是 /[a-zA-Z]+/g,只抓連續 ASCII 字母串:732628 個漢字貢獻 0 個詞,整本總單詞數只有 8,預設 30 項停用詞吃掉 by 後榜單剩 7 項,每行各 1 次 12.5%,全是末尾來源說明裡的 https、zh、wikisource、org、wiki、cc、sa 網址殘渣。勾上區分大小寫變 8 項(BY 漏過濾),停用詞清空是 8 項且佔比和 100.0%(預設那檔只有 87.5%);按回拆開餵,120 段裡 119 段直接是「暫無資料」。

關鍵字計數讀的是字樣不是人物

關鍵字計數走 indexOf 非重疊掃描。三個角色詞寫三行:寶玉 3992、鳳姐 1751、黛玉 1377,統計欄總命中 7120 次、未出現 0 個,三數相加正好閉合。但那一格百分比是次數除以 872515 碼元,寶玉顯示 0.5%,按實佔算是 7984 碼元即 0.9151%,兩格差一倍。清單不去重:黛玉寫兩遍就報 4 個關鍵字、8497 次,而文本裡真實只有 7120 處。「林黛玉把花具且都放下」10 字在 23 回葬花段,「凤姐儿偏拣了一碗鸽子蛋放在刘姥姥桌上」18 字在 40 回。

三檔字數口徑逐檔可解釋

字數三檔口徑,每檔差值都能用另一檔實測解釋:碼元 872515 減範本跳過的四類空白 5742 得範本口徑 866773;範本不吃全形空格,再減 1412 得去空白口徑 865361;再減標點符號 132733 得漢字口徑 732628。整榜 4454 項各自佔比相加只有 81.4%,因為被跳過的空白仍留在分母。

同一文本的字數口徑階梯(單位:字) 全量碼元 872515 範本口徑 866773 減 5742 空白 去空白口徑 865361 減 1412 全形空格 漢字口徑 732628 減 132733 標點符號 整榜佔比相加 81.4%,空白仍在分母

圖 2:碼元到漢字四檔口徑逐檔相減可閉合

整本一次貼進的可行性算帳

範本四個輸入欄位都沒有 maxlength,瀏覽器實測 .maxLength 讀到 −1、getAttribute 為 null,程式碼裡也無截斷語句。按無上限口徑,全文 872515 碼元一次進框可容,賦值 4.7 毫秒、取回碼元相等;連 3 倍全文 2617545 碼元也塞得下,榜首隨之變 177780 次正好三倍。代價在渲染:4454 行整表一次寫入是 JS 77.3 毫秒加首幀 1046.7 毫秒約 1.12 秒,容器 scrollHeight 106896 像素對可視 320 像素,這個量級要貼一次算一次。

逐回跑與整本跑互相印證

120 段各跑一次字元頻率共 117.7 毫秒、平均每次 0.98 毫秒,每回榜平均 953.2 項而整本一次 4454 項;但逐回次數合計 866773 與整本一次完全相等,切段不吞字。三模式耗時(Node 計時)是字元頻率 58.7 到 76.9 毫秒、英文詞頻 3.2 到 7.0 毫秒、關鍵字三詞 0.7 到 1.1 毫秒。文案對照 14 條判定 6 條一致、2 條衝突,衝突都落在密度口徑上。

FAQ

Q:命中 124 次是不是說明有 124 回?

不是。124 是「第X回」字樣出現次數,120 是回目行條數;多出的 4 處裡 3 處是正文敘述用詞、1 處是重複排版的裸回目。嚴格正則少 12 處只因「零」沒進字元類。

Q:英文詞頻為什麼幾乎是空的?

切分運算式只認 ASCII 字母串,732628 個漢字進不了這張榜,整本只有末尾來源說明裡的 8 個詞,過濾停用詞後剩 7 項殘渣。

Q:那一格百分比能當關鍵字密度嗎?

不能。分母是總碼元而非該詞實佔,寶玉顯示 0.5% 而實佔是 0.9151%。小文本上字頻、詞頻與停用詞的入門讀數見舊文 文本頻率停用詞與中文計數說明。

Q:逗號當榜首有分析價值嗎?

這是跳過名單不含標點所致,漢字首榜看「了」21221、虛詞看「之」2147。

📎 相關文章

SOS 只有 9 個音,整句字母表要 104 個音:摩斯碼的節奏怎麼算出來 2026-10-21 轉盤上寫「權重 30」是幾成機會?扇區角度、放回與不放回的兩種抽法 2026-10-21 漸層底上的白字為什麼總看不清?把 WCAG 對比度逐個色標算一遍 2026-10-21 老照片放大就發糊?畫質提升能救回多少細節 2026-10-15 庫存標籤要條碼?CODE128 與 EAN-13 怎麼選 2026-10-15