水云间

 找回密码
 注册
搜索
查看: 2107|回复: 2

[文 学] [转帖]东风何处是人间——对宋词的统计分析...

[复制链接]
发表于 2011-11-30 21:07:59 | 显示全部楼层 |阅读模式

【转载】东风何处是人间

云来想说:这是对全宋词里的词汇出现频率统计...我个人部分赞同此文的结论。

但是填词不只是把宋词收入数据库,再让电脑通过某种规则组合就能写出来的。

我觉得词到当代虽然流亡了,可是词的精神还是在于创新,也就是说,数据库是无限的。 

以下是正文。



转自果壳网

————————————————————
from 车东 
by yixuan 
http://yixuan.cos.name/cn/2011/03/text-mining-of-song-poems/ 


再次神经短路,突然想看看宋词里面什么样的意象是最常见的,比如可以做个频率分析什么的。当然文本挖掘需要分词,我没法在其中花太多时间,于是想出了一个土办法。宋词的句子都很短,如果穷举可能的字的组合的话并不是太多,况且最常见的词语一般是两三个字,这样可能的组合就更少了。比如“犹解嫁东风”这句话,可能的二字组合是“犹解”“解嫁”“嫁东”“东风”,三字组合是“犹解嫁”“解嫁东”“嫁东风”,词的字数越多,可能的组合就越少。如果把每句话可能的字的组合都列举出来,就可以整体统计频率了。 

当然里面会有很多无意义的字的组合,不过这类“词语”本身的出现就是一个偶然,所以可以预期的是它们整体的频数会很低,是入不了“大雅之堂”的。话不多说,直接上代码和结果。 

数据:《全宋词》文本 

代码: 

l=scan("Ci.txt","character",sep="\n"); 
l.len=nchar(l); 

# 某些行是作者和标题,所以选取长度大于10的行; 
# 另外这个文本文件不太规整,有些网址什么的, 
# 所以也要排除那些长度太长的。 

ci=l; 

# 句子用标点符号分割。 

sentences=strsplit(ci,",|。|!|?|、"); 
sentences=unlist(sentences); 
sentences=sentences[sentences!=""]; 
s.len=nchar(sentences); 

# 单句太长了说明有可能是错误的字符,去除掉。 

sentences=sentences[s.len<=10]; 
s.len=nchar(sentences); 

# 暴力挨个拆分,比如“犹解嫁东风”的所有二字组合为 
# “犹解”“解嫁”“嫁东”“东风”, 
# 无意义的词其频数自然就落在后面了。 

splitwords=function(x,x.len) substring(x,1x.len-1),2:x.len); 

words=mapply(splitwords,sentences,s.len,SIMPLIFY=TRUE,USE.NAMES=FALSE); 
words=unlist(words); 
words.freq=table(words); 
words.freq=sort(words.freq,decreasing=TRUE); 
data.frame(Word=names(words.freq[1:100]),Freq=as.integer(words.freq[1:100])); 

结果(排在第一的是无效字符,这跟数据源有关): 

Word Freq 
1 1485 
2 东风 1382 
3 何处 1230 
4 人间 1202 
5 风流 857 
6 归去 812 
7 春风 802 
8 西风 779 
9 归来 771 
10 江南 765 
11 相思 753 
12 梅花 732 
13 千里 676 
14 回首 656 
15 明月 651 
16 多少 648 
17 如今 642 
18 阑干 630 
19 年年 613 
20 万里 590 
21 一笑 582 
22 黄昏 550 
23 当年 542 
24 天涯 537 
25 相逢 528 
26 芳草 527 
27 尊前 516 
28 一枝 512 
29 风雨 505 
30 流水 472 
31 依旧 472 
32 风吹 471 
33 风月 461 
34 多情 457 
35 故人 451 
36 当时 450 
37 无人 445 
38 斜阳 438 
39 不知 430 
40 不见 429 
41 深处 422 
42 时节 403 
43 平生 398 
44 凄凉 398 
45 春色 394 
46 匆匆 383 
47 功名 383 
48 一点 378 
49 无限 377 
50 今日 369 
51 天上 368 
52 杨柳 362 
53 西湖 356 
54 桃花 354 
55 扁舟 353 
56 消息 351 
57 憔悴 344 
58 何事 339 
59 芙蓉 338 
60 神仙 334 
61 一片 334 
62 桃李 333 
63 人生 332 
64 十分 331 
65 心事 329 
66 黄花 328 
67 一声 325 
68 佳人 324 
69 长安 321 
70 东君 319 
71 断肠 316 
72 而今 315 
73 鸳鸯 314 
74 为谁 313 
75 十年 310 
76 去年 309 
77 少年 308 
78 海棠 307 
79 寂寞 306 
80 无情 306 
81 不是 305 
82 时候 304 
83 肠断 303 
84 富贵 303 
85 蓬莱 303 
86 昨夜 303 
87 行人 302 
88 今夜 301 
89 谁知 300 
90 不似 299 
91 江上 298 
92 悠悠 296 
93 几度 295 
94 青山 295 
95 何时 294 
96 天气 293 
97 惟有 293 
98 一曲 291 
99 月明 291 
100 往事 290 

不知各位看官看到上面这些既熟悉又悠远的话语又将作何感想?或许,她们就是我们千百年来的精神寄托吧。

 楼主| 发表于 2011-11-30 21:10:21 | 显示全部楼层
按照如何排列的编号顺序,圆周率可以写成一首词。
我猜音律肯定不对,不过看起来还是有点像模像样...

清平乐·圆周率

回首明月(一看就是抒情诗)

14 15

悠悠心事空(果然,貌似失恋了)

92 65

西湖何事寂寞中(触景生情)

35 89 79

风吹斜阳匆匆(回忆那天下午的艳遇)

32 38 46

芳草平生斜阳(平生见过最美的太阳和芳草,都是因为那里有你的身影)

26 43 38

风吹寂寞今日(到现在就剩我自己)

32 79 50

一枝富贵年年(好花美丽年年开,好景宜人不常在)

28 84 19

断肠长安不知(我的思念远方的你可知道?)

71 69 39

回复

使用道具 举报

发表于 2011-12-2 10:37:02 | 显示全部楼层
云来小朋友好兴致啊!这个宋词词频统计很有意思,高频词中凝结了不少中国文化的独特色彩和情调。你还可以从语言学角度想想,这一个个多次出现的词语反映出的语言学原理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|水云间

GMT+8, 2025-5-16 05:18 , Processed in 0.068004 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表