k***g 发帖数: 7244 | 1 以前闲着无聊的时候曾经做过一个《资治通鉴》的字频统计,单以频率计,中国历史不
过是“王”与“人”,“义”与“忠”,“将军”与“刺史”,“长安”与“洛阳”。
既然有了频率,自然也就有了概率和条件概率。根据条件概率,当给出一个序列的字词
后,预测下一个字词是什么,就变成了一个简单的最大似然估计问题。如果觉得这个序
列太长,计算起来太麻烦,可以假设简化的马尔科夫结构,譬如假设下一个词的概率取
决与之前的n个词而不是整个序列,这基本上就是计算语言学里的 n-gram 算法了。
所以我们可以用《资治通鉴》作为语料得出经验条件概率,然后来随机模拟出历史文本
,产生原汁原味(至少是统计意义上的)史书 (技术细节见附录)。 虽然这只是文字
游戏,但是仍然能从概率上看出《资治通鉴》记述的历史中,最容易重现怎样的事件。
譬如下面这则 (random seed = 2000):
撰 刘 崇 俊 以 惟 岳 又 从 入 关 , 宣 等 从 太 子 也 , 惧 履 危 亡 之 事
, 发 步 骑 二 十 骑 自 北 至 北 寺 狱 , 竟 不 使 宗 庙 社 稷 。 宗 元 为
柳 州 司 马 。 坚 大 怒 , 士 气 彫 沮 , 无 事 , 更 为 后 拒 , 倍 急 于
亡 命 聚 众 二 万 会 麻 秋 、 姚 、 宋 赤 眉 将 逢 安 为 新 都 , 剽 掠 。
我们可以这样翻译:
刘崇俊因为惟岳(人名,可能是李惟岳。刘崇俊是五代人,李惟岳是晚唐人,相差不算
太远)一起入关(姑且认为是潼关,但是李惟岳在和河北,真实历史是不会入关的),
而宣(人名)等人却追随太子而去,害怕这是危亡社稷的事情,于是发步骑二十骑(区
区二十骑!估计是武林高手),从北面到北寺狱(这是东汉时候黄门署属下的监狱,鞫
禁将相大臣的,好吧,晚唐也有宦官之祸,这里东汉的宦官乱入了,不过二十骑到北寺
狱,难道是要劫狱?),最终也没有拜谒宗庙(不把皇帝放在眼中啊)。
柳宗元被任命为柳州司马(二王八司马嘛,承接上文,还是和阉祸有关)。
(某)坚大怒(不知道是孙坚?苻坚?杨坚?),士气不振,好在也没有什么大事,继
续抗拒(王师?)。 因急于亡命,聚众两万人与麻秋汇合(麻秋登场,那么坚应该是
苻坚了,但是麻秋很早就被苻坚的伯伯苻健杀死了)。
(与此同时)姚、宋(姚崇,宋璟?)率领赤眉军把逢安(这个地名是自动产生的,历
史上似乎没有,权且当作是四川 蓬安 吧)作为新的都城,四处剽掠。
我们来梳理一下这段模拟历史的脉络:
这大概是一个王朝末年的乱象。 地方农民起义(赤眉),建立政权(所以有新都),
负责讨伐的将领反而形成军阀割据,一些军阀随权臣(刘崇俊)入京,干预朝政(惟岳
),一些军阀在地方反叛(坚),勾结外敌(麻秋是羯族人)。这一切的原因可能是因
为朝廷宦官弄权已久(北寺狱),忠良被贬(柳宗元)。 军阀入京大概是打着清除宦
官的名义(所以要发兵北寺狱),但是同时他们也不把社稷放在眼里。 京城在军阀到
来前似乎已经被反贼攻克,所以皇帝和太子分道逃亡。如今皇帝似乎已经回到京城,而
太子却还在外面招兵买马(宣等人追随),似乎有不臣之心。
简而言之: 中央朝政腐败,宦官专政,两宫不和。地方盗贼风起,军阀割据,外患不
断。
难道这就是随机生成的中国历史最典型的场景? :-)
附录
文中使用的通鉴文本是从维普网上下载的,做了一些简单的清理,上传到了百度云(链
接)。 为了避免古文分词的麻烦,在作 n-gram 的时候以字为单位,所以用 gsub 在每
个字的后面加入空格。 n-gram 选择 n=2.
library(ngram)
file<-"C:/Users/Zeng/Downloads/zztj.txt"
str=scan(file,"character",encoding="GB2312")
s = concat(str)
s = gsub("(.)", "\1 ", s)
ng = ngram(s, 2)
o = babble(ng, 100,seed=2000)
Encoding(o)<-"UTF-8"
o |
r**********g 发帖数: 22734 | 2 用ngram过时了,搞个lstm
【在 k***g 的大作中提到】 : 以前闲着无聊的时候曾经做过一个《资治通鉴》的字频统计,单以频率计,中国历史不 : 过是“王”与“人”,“义”与“忠”,“将军”与“刺史”,“长安”与“洛阳”。 : 既然有了频率,自然也就有了概率和条件概率。根据条件概率,当给出一个序列的字词 : 后,预测下一个字词是什么,就变成了一个简单的最大似然估计问题。如果觉得这个序 : 列太长,计算起来太麻烦,可以假设简化的马尔科夫结构,譬如假设下一个词的概率取 : 决与之前的n个词而不是整个序列,这基本上就是计算语言学里的 n-gram 算法了。 : 所以我们可以用《资治通鉴》作为语料得出经验条件概率,然后来随机模拟出历史文本 : ,产生原汁原味(至少是统计意义上的)史书 (技术细节见附录)。 虽然这只是文字 : 游戏,但是仍然能从概率上看出《资治通鉴》记述的历史中,最容易重现怎样的事件。 : 譬如下面这则 (random seed = 2000):
|
x*********3 发帖数: 1438 | 3 呼唤智商啊。
首先,任何地方都差不多是战乱比和平时代长吧,比如欧洲也有千年的黑暗时代。
其次,写历史总得写个事,和平时代恰恰没啥好写的。比如,某一年花了一个月局部剿
了个匪。史书上可能就只写了这个剿匪,其他十一个月没啥好说的,然后一两句话就带
过了。你这一统计就是这一年都在剿匪了。
一句话,任何历史书,都是以战争为主;其他为辅。 |
b*******8 发帖数: 37364 | |
d****z 发帖数: 9503 | |
v*****s 发帖数: 20290 | 6 这个挺有趣的,可以把圣经啊啥的都拿出来做做看。
【在 x*********3 的大作中提到】 : 呼唤智商啊。 : 首先,任何地方都差不多是战乱比和平时代长吧,比如欧洲也有千年的黑暗时代。 : 其次,写历史总得写个事,和平时代恰恰没啥好写的。比如,某一年花了一个月局部剿 : 了个匪。史书上可能就只写了这个剿匪,其他十一个月没啥好说的,然后一两句话就带 : 过了。你这一统计就是这一年都在剿匪了。 : 一句话,任何历史书,都是以战争为主;其他为辅。
|
T*******x 发帖数: 8565 | 7 以前看过一个分析宋词词频的,然后电脑自动生成宋词。挺好玩。
【在 k***g 的大作中提到】 : 以前闲着无聊的时候曾经做过一个《资治通鉴》的字频统计,单以频率计,中国历史不 : 过是“王”与“人”,“义”与“忠”,“将军”与“刺史”,“长安”与“洛阳”。 : 既然有了频率,自然也就有了概率和条件概率。根据条件概率,当给出一个序列的字词 : 后,预测下一个字词是什么,就变成了一个简单的最大似然估计问题。如果觉得这个序 : 列太长,计算起来太麻烦,可以假设简化的马尔科夫结构,譬如假设下一个词的概率取 : 决与之前的n个词而不是整个序列,这基本上就是计算语言学里的 n-gram 算法了。 : 所以我们可以用《资治通鉴》作为语料得出经验条件概率,然后来随机模拟出历史文本 : ,产生原汁原味(至少是统计意义上的)史书 (技术细节见附录)。 虽然这只是文字 : 游戏,但是仍然能从概率上看出《资治通鉴》记述的历史中,最容易重现怎样的事件。 : 譬如下面这则 (random seed = 2000):
|
c***r 发帖数: 4631 | 8 不错。
【在 v*****s 的大作中提到】 : 这个挺有趣的,可以把圣经啊啥的都拿出来做做看。
|
d****z 发帖数: 9503 | 9 kzeng的模型就是太简化了。这里新人不识kzeng呀。
【在 x*********3 的大作中提到】 : 呼唤智商啊。 : 首先,任何地方都差不多是战乱比和平时代长吧,比如欧洲也有千年的黑暗时代。 : 其次,写历史总得写个事,和平时代恰恰没啥好写的。比如,某一年花了一个月局部剿 : 了个匪。史书上可能就只写了这个剿匪,其他十一个月没啥好说的,然后一两句话就带 : 过了。你这一统计就是这一年都在剿匪了。 : 一句话,任何历史书,都是以战争为主;其他为辅。
|
m***n 发帖数: 12188 | 10 不是战乱比和平时间长,而是“狗咬人不是新闻,人咬狗才是。”
历史也一样,和平,没啥好写的,战乱,故事多。
【在 x*********3 的大作中提到】 : 呼唤智商啊。 : 首先,任何地方都差不多是战乱比和平时代长吧,比如欧洲也有千年的黑暗时代。 : 其次,写历史总得写个事,和平时代恰恰没啥好写的。比如,某一年花了一个月局部剿 : 了个匪。史书上可能就只写了这个剿匪,其他十一个月没啥好说的,然后一两句话就带 : 过了。你这一统计就是这一年都在剿匪了。 : 一句话,任何历史书,都是以战争为主;其他为辅。
|
|
|
c***3 发帖数: 280 | |
l*****f 发帖数: 13466 | 12 以战争为主的是军事史
二十四史基本格式纪表志传
通鉴编年
哪里战争为主? 人物,社会,经济,礼乐,天文地理, 八卦.....
【在 x*********3 的大作中提到】 : 呼唤智商啊。 : 首先,任何地方都差不多是战乱比和平时代长吧,比如欧洲也有千年的黑暗时代。 : 其次,写历史总得写个事,和平时代恰恰没啥好写的。比如,某一年花了一个月局部剿 : 了个匪。史书上可能就只写了这个剿匪,其他十一个月没啥好说的,然后一两句话就带 : 过了。你这一统计就是这一年都在剿匪了。 : 一句话,任何历史书,都是以战争为主;其他为辅。
|
l*****f 发帖数: 13466 | 13 是啊。。。。。
【在 d****z 的大作中提到】 : kzeng的模型就是太简化了。这里新人不识kzeng呀。
|
b****e 发帖数: 119 | |
a***e 发帖数: 27968 | 15 通鉴本来就是狠狠撸过的
估计赶上孔子削春秋了,用这个做样本作统计会大偏
【在 l*****f 的大作中提到】 : 以战争为主的是军事史 : 二十四史基本格式纪表志传 : 通鉴编年 : 哪里战争为主? 人物,社会,经济,礼乐,天文地理, 八卦.....
|
a***e 发帖数: 27968 | 16 本来就是,统计的看互联网
丫就是个Porn的工具,其他都是副作用
【在 m***n 的大作中提到】 : 不是战乱比和平时间长,而是“狗咬人不是新闻,人咬狗才是。” : 历史也一样,和平,没啥好写的,战乱,故事多。
|
m***n 发帖数: 12188 | 17 严格说来,这不是计算历史。类比计算分子动力学之类,计算历史应该是给出初始条件
(比如当前状况)和边界条件(比如外部干涉,自然地理变化),然后计算其发展。
计算历史目前看基本是不太可能的。除非演算一个非常小,非常狭窄的问题。
楼主的这个,是计算语言学,计算文本分析这一块的。
比如说,对红楼梦,圣经的类似分析十几年前就很多了。得出许多有趣结论。
首先,不同作家有自己的文字规律,比如某历史学家大量使用patently 这个词,别人
几乎一次不用。
其次,任何作品,都有许多pattern, form之类。比如圣经里面,上帝用泥土造人,这
就是一个form, 这个form 在许多原始民族的神话里面都有,比如女娲。但是另外还有
一个上帝,用word来创造,是非常形而上的,在原始社会里面找不到的,一股柏拉图的
味道扑面而来。电脑能把这些form找出来,可以大致确定不同章节最初形成的原文年代。
资治通鉴是一个非常有意思的东西,其历史叙述的pattern非常强硬,可以和圣经旧约
的历史类比。
旧约的历史有个模式,以色列拜偶像,远离耶和华,不尊敬祭司,肯定灾难到来;远离
偶像,亲近祭司,必然盛世幸福。
在资治通鉴里面则是:太监必定是邪恶的,武将必定是跋扈的,文官必定是正义的,扩
张必然是不好的,少民必然是贪财的,一旦君主亲近太监,必然坏事,一旦武将得以自
由行事,必然割据,或者乱杀人,文官即使坏事,也是好心办坏事,或者能力不足。君
主有德就昌盛,社会幸福,连自然灾害都没了;失德就完蛋,连自然灾害都多了起来,
什么地震,洪水,天雨血,旱灾。
什么叫有德?读儒家的书,亲近儒生,远离小人(太监,武将,文盲,非儒家,比如法
家,阴阳家,道家,佛家,之类),那就是有德。
司马光的历史叙述基本是这个模式。
而二十四史,所谓的官史,则是以帝王家谱为核心,所谓的“二十四姓之家谱也”(梁
启超语)。
另外,historicity和historical narrative是两码事。比如,以色列的古代史是不是
真的不好好祭祀就失败,祭祀好了就昌盛,那是另外一回事了。这很可能是用神学框架
来叙述的历史。
资治通鉴也一样,其目的性和儒家神学性是极为强烈的。
【在 a***e 的大作中提到】 : 本来就是,统计的看互联网 : 丫就是个Porn的工具,其他都是副作用
|
m***n 发帖数: 12188 | 18 文革时期的小说模式:
“队长犯错误,书记来教育,忆苦又思甜,揪出个老地主。”
人民群众总结的。 |
s******g 发帖数: 466 | 19 楼主很有创意,赞一个。原贴中没有看见文本的百度云连接,请问能否提供? |
R***a 发帖数: 41892 | 20 这个是计算历史
https://en.wikipedia.org/wiki/Psychohistory_%28fictional%29
【在 m***n 的大作中提到】 : 严格说来,这不是计算历史。类比计算分子动力学之类,计算历史应该是给出初始条件 : (比如当前状况)和边界条件(比如外部干涉,自然地理变化),然后计算其发展。 : 计算历史目前看基本是不太可能的。除非演算一个非常小,非常狭窄的问题。 : 楼主的这个,是计算语言学,计算文本分析这一块的。 : 比如说,对红楼梦,圣经的类似分析十几年前就很多了。得出许多有趣结论。 : 首先,不同作家有自己的文字规律,比如某历史学家大量使用patently 这个词,别人 : 几乎一次不用。 : 其次,任何作品,都有许多pattern, form之类。比如圣经里面,上帝用泥土造人,这 : 就是一个form, 这个form 在许多原始民族的神话里面都有,比如女娲。但是另外还有 : 一个上帝,用word来创造,是非常形而上的,在原始社会里面找不到的,一股柏拉图的
|
|
|
s******8 发帖数: 7105 | 21 计算模拟历史根本就没意思,得出结果也不可信。例如李自成那天害病死了或者残废
了,历史就全变了。 |
m******r 发帖数: 4351 | 22 拜。
当年baojie在本版叱咤风云的时候,我老还在长期潜水中。十几年了啊。
当年还有mesh的参合陂。后来某一年mesh上来说自己在家里如何驯鹦鹉,没人理他。
【在 b****e 的大作中提到】 : 拜
|
K****n 发帖数: 5970 | 23 #doit
【在 r**********g 的大作中提到】 : 用ngram过时了,搞个lstm
|
v*****s 发帖数: 20290 | 24 只能说明我们都老了,可以去53俱乐部混了。
【在 m******r 的大作中提到】 : 拜。 : 当年baojie在本版叱咤风云的时候,我老还在长期潜水中。十几年了啊。 : 当年还有mesh的参合陂。后来某一年mesh上来说自己在家里如何驯鹦鹉,没人理他。
|
l*****f 发帖数: 13466 | 25 别的不论"武将必定是跋扈的,文官必定是正义的"这个哪里有?通鉴写作还是严谨的
,名将如云,大臣也绝没有这么忠奸分明,这种是演义手法,而且是明清演义。况且汉
唐间文武之途未分,出将入相的很多。著名的,"左相宣威疆场,右相驰誉丹青"
梁启超本来就是故做过分语。他列的国学之最低限度必读书目,通鉴就在其中
【在 m***n 的大作中提到】 : 严格说来,这不是计算历史。类比计算分子动力学之类,计算历史应该是给出初始条件 : (比如当前状况)和边界条件(比如外部干涉,自然地理变化),然后计算其发展。 : 计算历史目前看基本是不太可能的。除非演算一个非常小,非常狭窄的问题。 : 楼主的这个,是计算语言学,计算文本分析这一块的。 : 比如说,对红楼梦,圣经的类似分析十几年前就很多了。得出许多有趣结论。 : 首先,不同作家有自己的文字规律,比如某历史学家大量使用patently 这个词,别人 : 几乎一次不用。 : 其次,任何作品,都有许多pattern, form之类。比如圣经里面,上帝用泥土造人,这 : 就是一个form, 这个form 在许多原始民族的神话里面都有,比如女娲。但是另外还有 : 一个上帝,用word来创造,是非常形而上的,在原始社会里面找不到的,一股柏拉图的
|
m******r 发帖数: 4351 | 26 不至于吧,你们小小年纪就这么老气横秋的。我老年纪比较大,离53还得十来年呢。
门前流水尚能西,休将白发唱黄鸡。
【在 v*****s 的大作中提到】 : 只能说明我们都老了,可以去53俱乐部混了。
|