杂记 › 资源分享 › 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