由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
History版 - [合集] 脍炙《通鉴》
相关主题
问个吃人的问题92年海淀中华书局一套线装的通鉴200rmb
残害小孩在中国是理所当然以前俺们家还有一册宋版的通鉴
关于16至18世纪之“中学西渐”的反思(三)通鉴不好的地方
资治通鉴写得也太简略了不知道毛泽东怎么读的24史,但真的做到了活学活用
ZZ虞云国评袁腾飞《历史是个什么玩意儿》节选开始看《中国人史纲》
从史记和资治通鉴两本书看的出语言的变迁吗大家绕着kirklook/sinta走吧,别跟他无聊下去了
去图书馆借了 张居正讲评紫治通鉴脍炙《通鉴》
谁20岁前读过通鉴请推荐东西晋南北十六朝的通俗点的读物
相关话题的讨论汇总
话题: 脍炙话题: 通鉴
进入History版参与讨论
1 (共1页)
c*****1
发帖数: 3240
1
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Sun Sep 23 01:21:31 2012, 美东) 提到:
(这是一篇关于很枯燥的技术,很枯燥的历史文本,和不太枯燥的统计的 blog)
看过一篇关于《全宋词》词频统计文章,挺有趣的,想用类似的方法处理一下《资治通
鉴》,所以就趁周末花了几个小时作了一下。
词是长短句,统计两个字组成的词频比较合适,《通鉴》是古文,文字结构不同,所以
我统计了单字频,两字词词频,三字词词频,四字词词频,和五字词词频。同时也记录
各个统计单位(字或词)出现的卷数。《通鉴》294卷,从三家分晋到五代结束共共
1362年,所以卷数可以作为时间的度量。
《全宋词》的词频是用 R 作的。R 虽然是不错的统计软件,也是我的最爱之一,但是
R 并不适合作文本分析,更不适合来作数据库操作。所以就用了 C# 和 Kdb +3.0。 C#
用来分析文本,.Net 是懒人的福音,并且多线程运算非常简单,能够大大提升文本处
理速度,Kdb+用来储存数据,它差不多是性能最好的 in-memory 数据库了,从它的网
站上能下载到免费版本。这个分析里数据库是重头戏,因为需要查询数百万行的数据
row,如果用 MySQL,估计会龟速到死。另外 Kdb + 本身只有 300多K,不用安装,很
方便。还有就是 Kdb+ 的 Q 语言也能满足编程需要。
Kdb+ 的网站提供了各种语言 API 的源码,C# 的 API 不支持多线程,所以需要在适当
的地方加锁。Kdb 唯一的问题是不支持 UTF-8。它用的是 UTF-7,所以在注入中文文字
数据的时候可能会出现乱码,为了省事,从 C# 里 publish 数据的时候,直接
publish 为三字节的 int[] 了。query kdb 时用了一个免费的 GUI QPad。QPad 似乎
是用 Java 写的,它的编码默认是 UTF-8,所以在 query Kdb 的时候直接把三字节的
int vector cast 成 char,在 QPad 里显示的就是中文了,所以也很方便。
产生数据的 C# 代码非常简单,发布数据的时候自动生成 Kdb 的 schema。使用的《资
治通鉴》的文本是网上广为流传的国学网简体版,在生成数据前,先用 C# 作了预处理
,主要是用正则表达式替换掉了现代语言的“污染”(譬如:“后一页”,公元xxx年
等)
下表是各个字、词频的数据量:
类别 数据行数
单字 2,586,329
双字 2,102,023
三字 1,633,875
四字 1,221,713
五字 851,403
从上表看,《资治通鉴》应该有近两百六十万字。
单字的字频统计如下:
排名 字 次数 百分比 累积百分比
1 之 66087 2.56% 2.56%
2 以 39874 1.54% 4.10%
3 为 35677 1.38% 5.48%
4 不 34376 1.33% 6.81%
5 王 21578 0.83% 7.64%
6 曰 21279 0.82% 8.46%
7 于 20182 0.78% 9.24%
8 其 20100 0.78% 10.02%
9 人 19035 0.74% 10.76%
10 将 18209 0.70% 11.46%
11 军 18083 0.70% 12.16%
12 使 17160 0.66% 12.82%
13 州 16116 0.62% 13.45%
14 大 16031 0.62% 14.07%
15 子 15600 0.60% 14.67%
16 而 15558 0.60% 15.27%
17 上 15252 0.59% 15.86%
18 兵 14746 0.57% 16.43%
19 者 12826 0.50% 16.93%
20 有 12536 0.48% 17.41%
“之”字当之无愧的排在了第一位。第一个非虚词是“王”,它包含了姓和爵位,第一
个动词是“曰”。“人”的频率也很高,“将”,“军” 在双字词频中也会遇到。“
帝”字排名32,“后”字排名33。但是因为是简体字,“后”并不专指皇\王后。
下面是价值观念的排名:
排名 字 次数 百分比
152 义 3507 0.14%
181 忠 3004 0.12%
223 孝 2475 0.10%
240 礼 2287 0.09%
253 信 2190 0.08%
294 仁 1935 0.07%
767 智 694 0.03%
义、忠、孝排名在前,智排名最后,倒正印证了司马温公那句话:“凡取人之术,苟不
得圣人、君子而与之,与其得小人,不若得愚人。”当然这个数据里噪音很多。
另外还有很多有趣的东西,就不一一叙述了。下面看一下两个字的词频:
排名 词 最早卷数 次数 百分比
1 将军 1 6,176 0.29%
2 刺史 21 4,790 0.23%
3 州刺 21 4,110 0.20%
4 节度 29 3,698 0.18%
5 以为 1 3,479 0.17%
6 度使 203 3,202 0.15%
7 天下 1 2,972 0.14%
8 尚书 20 2,742 0.13%
9 太子 1 2,584 0.12%
10 陛下 6 2,492 0.12%
11 不能 1 2,375 0.11%
12 不可 1 2,351 0.11%
13 太后 3 2,165 0.10%
14 皇帝 6 2,050 0.10%
15 太守 5 2,010 0.10%
16 大将 6 1,813 0.09%
17 遣使 4 1,501 0.07%
18 司马 1 1,480 0.07%
19 二月 4 1,477 0.07%
20 馀人 2 1,463 0.07%
“将军”出现的频率最高,在第一卷里就出现了,“度史”显然是“节度使”里出现的
,虽然在203卷才出现,但是它居然出现了3202次,唉,唐朝啊!“节度”一次出现的
要比“节度使”早。“皇帝”一次最早在第6卷出现,其实那时还是昭襄王元年,但是
因为文本中出现了“秦始皇帝上”。
两字地名出现的最多的是“长安”,排名43,最早出现在第5卷,不过那里的“长安”
并不是长安城,而是赵国的长安君。“洛阳”其次,排名81,最早出现在第2卷,三家
分晋不久,洛阳附近就成了三晋与秦国的战场。
三个字的词频:
排名 词 最早卷数 次数 百分比
1 州刺史 21 4102 0.25%
2 节度使 210 3195 0.20%
3 大将军 6 1547 0.09%
4 平章事 203 933 0.06%
5 同平章 203 901 0.06%
6 十二月 4 704 0.04%
7 之子也 13 700 0.04%
8 十一月 7 686 0.04%
9 部尚书 70 655 0.04%
10 指挥使 254 578 0.04%
比较有趣的是“之子也”,老子英雄儿好汉。
四字字频:
排名 词 最早卷数 次数 百分比
1 同平章事 203 900 0.07%
2 仪同三司 49 403 0.03%
3 都指挥使 254 374 0.03%
4 日有食之 1 368 0.03%
5 中书侍郎 73 325 0.03%
6 节度使李 217 312 0.03%
7 散骑常侍 69 308 0.03%
8 开府仪同 79 300 0.02%
9 府仪同三 79 283 0.02%
10 御史大夫 9 281 0.02%
鉴于“州刺史”在三字字频中频繁出现,所以频率出现比较高的各个州刺史的频率单列
出来:
排名 词 最早卷数 次数 百分比
15 豫州刺史 58 220 0.02%
19 荆州刺史 49 195 0.02%
26 兗州刺史 37 172 0.01%
32 徐州刺史 30 167 0.01%
38 扬州刺史 24 152 0.01%
42 雍州刺史 65 147 0.01%
52 江州刺史 86 122 0.01%
64 益州刺史 39 113 0.01%
68 二州刺史 49 111 0.01%
74 秦州刺史 79 109 0.01%
101 青州刺史 21 91 0.01%
105 梁州刺史 84 90 0.01%
107 冀州刺史 27 88 0.01%
114 并州刺史 52 84 0.01%
135 凉州刺史 31 71 0.01%
165 幽州刺史 50 62 0.01%
196 广州刺史 80 55 0.00%
豫州刺史第58卷时才登场,但是雄踞第一,而豫、荆、兖、徐、扬也勾勒出了中国政治
地理的热点。顺便提一句,最早登场的豫州刺史是王允,而最早登场的荆州刺史是杨震。
五字词已经没有太大的意义:
排名 词 最早卷数 次数 百分比
1 府仪同三司 79 283 0.03%
2 开府仪同三 79 283 0.03%
3 尚书左仆射 77 167 0.02%
4 皇帝上之下 10 140 0.02%
5 为中书侍郎 84 118 0.01%
6 尚书右仆射 81 115 0.01%
7 军都指挥使 256 111 0.01%
8 骠骑大将军 39 107 0.01%
9 河东节度使 214 101 0.01%
10 督中外诸军 74 97 0.01%
最后看看慕容家的英杰们谁的全名被提到的次数最多:
词 次数
慕容彦超 27
慕容垂 26
慕容廆 24
慕容绍宗 15
慕容恪 18
慕容评 18
慕容皝 17
慕容农 15
慕容翰 15
慕容仁 12
慕容白曜 10
似乎是慕容彦超险胜慕容垂……慢着!慕容垂最初的名字是慕容霸,而慕容霸被提及了
10次,所以慕容垂以 36 次远远胜出 (慕容缺这个全名并没有出现在《通鉴》中:)
)。
☆─────────────────────────────────────☆
JackFighter (jf~) 于 (Sun Sep 23 07:43:45 2012, 美东) 提到:
interesting
☆─────────────────────────────────────☆
abook (土人^ 胡子大) 于 (Sun Sep 23 13:24:15 2012, 美东) 提到:
花这功夫
顶一个
仪同三司出现率这么高啊
可见开府仪同三司之滥
平章事出现率也高
不平章事不为真宰相是什么时候的事?


C#
☆─────────────────────────────────────☆
albertazzi (阿尔贝塔奇(废了)) 于 (Sun Sep 23 14:48:08 2012, 美东) 提到:
留后出现的也挺多的,感觉
☆─────────────────────────────────────☆
UnameMe (Autodidactism) 于 (Sun Sep 23 14:59:46 2012, 美东) 提到:
读到第4段,我瞎了。

C#
☆─────────────────────────────────────☆
Esquimau (雪门院) 于 (Sun Sep 23 16:17:53 2012, 美东) 提到:
有才。有空开发一个四书五经二十四史资治通鉴之类的在线查阅系统吧,就像网上圣经
查阅那样,可以查关键词,让我等不会编程的也可以查关键词玩。
☆─────────────────────────────────────☆
fingerling54 (黑暗虎鲸) 于 (Sun Sep 23 21:19:27 2012, 美东) 提到:
为神马最后突然冒出来一个对慕容家的统计?因为天龙八部?
☆─────────────────────────────────────☆
lhr (麻辣呆牛筋~五香花生米) 于 (Mon Sep 24 10:36:19 2012, 美东) 提到:
赞美
文本分词处理大概run了多久

C#
☆─────────────────────────────────────☆
leawolf (执中以宁) 于 (Mon Sep 24 16:17:42 2012, 美东) 提到:
有意思
为什么二月排名高,多事之春?

C#
☆─────────────────────────────────────☆
Esquimau (雪门院) 于 (Mon Sep 24 17:50:05 2012, 美东) 提到:
http://www.wenxue100.com/book_LiShi/bookList.aspx
☆─────────────────────────────────────☆
dahuang (春风又绿江南岸) 于 (Mon Sep 24 22:10:55 2012, 美东) 提到:
能不能把代码共享呢,比如发布到github上?

C#
☆─────────────────────────────────────☆
dimplemac (dimplemac) 于 (Mon Sep 24 22:24:05 2012, 美东) 提到:
好文。当年读通鉴时候,不知道同平章事是什么意思,还以为大官都要带个这个后缀呢

☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:17:01 2012, 美东) 提到:
因为“二月”的 count 里包含了“十二月”啊。一月是正月,所以不会包含十一月。
这里是调整后各个月份的排名:
次数 月份
927 正月
821 四月
808 十月
800 三月
770 七月
773 二月
735 九月
726 五月
719 八月
704 十二月
686 十一月
11 腊月
一般天气暖和的时侯,就是事情多的时候(正月除外),呵呵。
还有这里是闰月的分布:
次数 闰月
7 闰四月
6 闰十月
5 闰正月
3 闰七月
3 闰五月
1 闰三月
1 闰八月
1 闰六月
2 闰十一月
一般来说夏天的闰月比冬天多,但是没有想到闰正月居然出现了5次,呵呵
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:18:51 2012, 美东) 提到:
留后 出现了500次
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:19:39 2012, 美东) 提到:
原来百度国学搜索挺方便的,可惜被关了。。。
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:19:54 2012, 美东) 提到:
haha,为了向前辈致敬
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:21:33 2012, 美东) 提到:
5 个数据表 run 出来不到二十分钟吧
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:33:31 2012, 美东) 提到:
还有一些有趣的统计,譬如葬礼用安平献王故事的有六人
司马攸
王导
苻雄
桓温
冯熙
萧懿

C#
☆─────────────────────────────────────☆
kzeng (寱语·无味赛百味) 于 (Mon Sep 24 23:49:51 2012, 美东) 提到:
"九锡" 在各卷的分布

C#
☆─────────────────────────────────────☆
newcasio (qie) 于 (Tue Sep 25 20:55:11 2012, 美东) 提到:
6 度使 203 3,202 0.15%
2 节度使 210 3195 0.20%
“度使”“比节度使”出现早,多了7次。
☆─────────────────────────────────────☆
leawolf (执中以宁) 于 (Tue Sep 25 21:19:51 2012, 美东) 提到:
哈,糊涂了,忘记这个十二月乐
还是正月最忙,改元啥的?
还有日有食之,可以看看日食频率。。。。
☆─────────────────────────────────────☆
leawolf (执中以宁) 于 (Tue Sep 25 21:28:55 2012, 美东) 提到:
lol
第一个是王莽
两晋南北朝最频繁
没想到唐末有个最高的spike
☆─────────────────────────────────────☆
ahoyleo (profever天堂门) 于 (Wed Sep 26 04:11:03 2012, 美东) 提到:
很有意思的实验。
分析词频的实现楼主可以尝试一下Lucenehttp://lucene.apache.org/core/,非常成熟的开源全文检索系统。它处理文本时建立反向索引,用来进行文本检索的效率远远超过任何基于数据库查询的方法。它建立索引速度也非常快,它的主页上说"over 95GB/hour on modern hardware
主说过通鉴大约两百多万字,那么全文10M左右,在预处理的时候按照章节分割成不同的documents,然后用Lucene建立索引可以说应该是非常迅速的。
在建立的索引基础上,词频分析以及其他更复杂的分析可以一劳永逸地实现,既可以通
过Lucene API(e.g., http://lucene.apache.org/core/old_versioned_docs/versions/3_0_2/api/all/org/apache/lucene/index/TermDocs.html#freq()), 也可以通过一些索引查看工具比如Lukehttp://code.google.com/p/luke/
Lucene可以方便地扩展到处理中文,中科院著名的基于HMM的ictclas分词程序已经有支
持Lucene的APIhttp://code.google.com/p/imdict-chinese-analyzer/。刚查了一下,这个API很早就包括在Lucene的contrib里了,最新版是http://lucene.apache.org/core/3_6_1/api/contrib-smartcn/index.html

C#
☆─────────────────────────────────────☆
oldgaia (勇攀科学高峰) 于 (Tue Oct 2 16:15:58 2012, 美东) 提到:
好东西,mark
楼主说过通鉴大约两百多万字,那么全文10M左右,在预处理的时候按照章节分割成不同的documents,然后用Lucene建立索引可以说应该是非常迅速的。
☆─────────────────────────────────────☆
asp (asp) 于 (Sat Oct 20 12:42:05 2012, 美东) 提到:
易子相食 出现了几次?
1 (共1页)
进入History版参与讨论
相关主题
请推荐东西晋南北十六朝的通俗点的读物ZZ虞云国评袁腾飞《历史是个什么玩意儿》节选
求推荐讲五代十国的书从史记和资治通鉴两本书看的出语言的变迁吗
晒晒压箱底的书去图书馆借了 张居正讲评紫治通鉴
京东商城北美版不错啊,买的书两礼拜就到了谁20岁前读过通鉴
问个吃人的问题92年海淀中华书局一套线装的通鉴200rmb
残害小孩在中国是理所当然以前俺们家还有一册宋版的通鉴
关于16至18世纪之“中学西渐”的反思(三)通鉴不好的地方
资治通鉴写得也太简略了不知道毛泽东怎么读的24史,但真的做到了活学活用
相关话题的讨论汇总
话题: 脍炙话题: 通鉴