找回密码
 FreeOZ用户注册
查看: 1897|回复: 6
打印 上一主题 下一主题

[原创交流] 东风何处是人间

[复制链接]
跳转到指定楼层
1#
发表于 7-12-2011 16:42:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

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

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

数据:《全宋词》文本

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

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

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

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

评分

参与人数 2威望 +70 收起 理由
mohan29 + 20 谢谢分享!
泡沫 + 50 你太有才了!

查看全部评分

回复  

使用道具 举报

2#
发表于 7-12-2011 16:59:54 | 只看该作者
举个栗子
今天是2012年12月7日,选了20/12/7
看到这个帖子的时候是17点53分 选17/5/3

万里梅花春风
如今风流何处

y2kgo题: all gone


[ 本帖最后由 y2kgo 于 7-12-2011 18:01 编辑 ]

评分

参与人数 2威望 +70 收起 理由
泡沫 + 50 你太有才了!
关毅仁 + 20 你太有才了!

查看全部评分

回复  

使用道具 举报

3#
发表于 7-12-2011 17:39:36 | 只看该作者
原帖由 枫林晚 于 7-12-2011 17:42 发表
再次神经短路,突然想看看宋词里面什么样的意象是最常见的,比如可以做个频率分析什么的。当然文本挖掘需要分词,我没法在其中花太多时间,于是想出了一个土办法。宋词的句子都很短,如果穷举可能的字的组合的话并不 ...


发现就把这些词放一起,就成了辞了

东风何处,
人间风流。
归去春风,
西风归来。

江南相思,
梅花千里。
回首明月,
多少如今。

评分

参与人数 2威望 +40 收起 理由
mohan29 + 20 你太搞笑了!自动诗!
泡沫 + 20 你太有才了!

查看全部评分

回复  

使用道具 举报

4#
发表于 8-12-2011 00:35:07 | 只看该作者
中文牛X的地方啊,词性改变而形式不变。
中文难读的地方哦,看着有点意思,其实没有太大意思
回复  

使用道具 举报

5#
发表于 8-12-2011 09:58:20 | 只看该作者
请问是不是原创?原创就加精,转载就高亮。

评分

参与人数 1威望 +20 收起 理由
枫林晚 + 20 转的。在题目前面就写了。:)

查看全部评分

回复  

使用道具 举报

6#
发表于 8-12-2011 09:59:52 | 只看该作者

回复 #4 mason00 的帖子

词汇只是表象。背后的意境才是最重要的。
王国维说,无意境无诗,楼主的暴力拆解,其实就是印证了这句话。
回复  

使用道具 举报

7#
发表于 8-12-2011 10:59:43 | 只看该作者

回复 #5 mohan29 的帖子

前几天就在网上看到过的
要是这是这位楼主原创的话那就太太太厉害啦
回复  

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 29-4-2024 15:20 , Processed in 0.037392 second(s), 23 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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