Skip to main content

文科生泡妞利器被码工摧毁了

你羡慕那些出口就会吟诗的文人吗?现在可以不用再羡慕他们了!因为一位网友“
yixuan”闲来无事,把《全宋词》拿出来“捣鼓”,算出了其中的99个高频词汇。熟记
这些高频词,你就可以随性所欲进行创作了!你还可以用“无序”的数字来创造一首“
美妙绝伦”的宋词,圆周率也可以哦!

简化宋词就是“东风何处在人间”  

署名为“yixuan”的网友在个人博客里写道:“突然想看看宋词里面什么样的意象是最
常见的,比如可以做个频率分析什么的。当然文本挖掘需要分词,我没法在其中花太多
时间,于是想出了一个土办法。宋词的句子都很短,如果穷举可能的字的组合的话并不
是太多,况且最常见的词语一般是两三个字,这样可能的组合就更少了。”比如“犹解
嫁东风”这句话,可能的二字组合是“犹解”“解嫁”“嫁东”“东风”,三字组合是
“犹解嫁”“解嫁东”“嫁东风”,词的字数越多,可能的组合就越少。如果把每句话
可能的字的组合都列举出来,就可以整体统计频率了。”大家一致分析这位网友一定是
个理科生。

随后, “yixuan”贴出了他算出来的高频词,排在前面的分别是:

1、1485
2、东风(1382)
3、何处(1230)
4、人间(1202)
5、风流(857)
6、归去(812)
7、春风(802)
8、西风(779)
9、归来(771)
10、江南(765)
……

至于为什么第一名是数字,他解释:“排在第一的是无效字符,这跟数据源有关。”

这个结果一出来,一位网友就一语道破了“玄机”,“原来,最流行的宋词就是‘东风
何处在人间’啊!”

生日、手机号 随意组合都很美

还有更绝的呢!署名为“达芬奇的鸡蛋”的果壳网友不知怎么地,就想到了拿大家都会
背一点的圆周率进行创作,两个数字一断,对照高频词表,一首“华丽丽”的词就出来
了!还附上了说明,特别像模像样。

达芬奇的鸡蛋 @ 果壳

清平乐·圆周率

回首明月(一看就是抒情诗)
14 15
悠悠心事空(果然,貌似失恋了)
92 65
西湖何事寂寞中(触景生情)
35 89 79
风吹斜阳匆匆(回忆那天下午的艳遇)
32 38 46

芳草平生斜阳(平生见过最美的太阳和芳草,都是因为那里有你的身影)
26 43 38
风吹寂寞今日(到现在就剩我自己)
32 79 50
一枝富贵年年(好花美丽年年开,好景宜人不常在)
28 84 19
断肠长安不知(我的思念远方的你可知道?)
71 69 39

如梦令·根号二

深处时节千里(过了许多年,男猪脚来到了很遥远的地方)
41 42 13
消息当年鸳鸯(这。。找老相好去了?)
56 23 73
归来今日(妹子,我胡汉三回来啦)
09 50
一点无情多少(你还知道来看我啊!)
48 80 16
今夜,今夜(要出问题了。。。)
88 88
而今时节归来(仿佛重回当年,男猪脚依然那么坚挺)
72 42 09

看完这首诗,网友们一边膜拜,一边自己的创作灵感也被打开了。

“丘寒”留言道:“试着用某个号码创作了一首:天上相思,芳草年年,昨夜江南,回
首一笑多情。”
“零Ronnie”很有创作激情:“我的生日:年年江上,江南春风;我的手机号:明月芳
草去年,江南阑干归去……还真挺上口的!我也能做诗人了哈哈!”

理科生欢呼:消灭文科生的日子来了

可是这么一来,文科生又不淡定了,一群文科生跳起来反击。

“雯名霞迩”大叫:“统统拖出去,斩了!这让学中文的人情何以堪啊!”
“Rockfish”代表理科生还击:“理科宅男们消灭文科生的日子到来了!拿起你的计算
器,消灭文艺青年吧!”
“可可”童鞋呼唤:“就让科技小清新来得更猛烈些吧!” 

还有一群网友七嘴八舌讨论着。

“沌世界”淡定地说:“不知宋词的粉丝看了是不是有一种偶像破灭的感觉。”
“家杰仕”童鞋也总结道:“文艺男女已经阻止不了技术宅作诗了!”
网友“Rakin”点评:“理科生文艺得真凶猛!”
“焰心Spring”呼吁:“想文艺一回的同学请转!”
“ChanIm”表示:“当时学写诗的时候超鄙视这些,现在淡定了,因为没那么多愁善感
了。”
“思念的秋天”感慨:“穿越必备!”
“NetCharm”说:“背熟了,随便组合一下,写出来的也不会太烂。”
“huahualipo”童鞋还提出了意见:“高人,能不能把平仄也加上……如果平仄太困难
,至少考虑一下词尾押韵如何?韵脚也就十来个,每个都分配一个数值,然后每隔一行
,末尾的词就只从一个值下选。这样会大大增加仿真度啊!”

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



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

数据:《全宋词》文本

代码:

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,1:(x.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

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



试了下在R下面执行此代码, 不过在我机子上好像有问题. 于是按照这个思路用KNIME做
了个简单统计流程. (数据源相同)

因为多处理了一点异常, 双字词频顺序基本一样, 数量稍有区别, 不重复贴了. 不过可
以贴出短句句频:D
"到如今",50  "君知否",46  "谁知道",30  "功名事",28

"须信道",28  "最好是",27  "人间世",26  "从今去",26

"凝伫",25  "归去",24  "不如归去",23  "知否",23

"谁信道",23  "倚阑干",21  "到而今",21  "又还是",21

"归去来兮",21  "人不见",20  "当此际",20  "记当年",19

"东风里",18  "怎奈向",18  "春去也",18  "须知道",18

"争知道",17  "更那堪",17  "留不住",17  "谩赢得",17

"那堪更",17  "一觞一咏",16  "休休",16  "君不见",16

"家山好",16  "归来也",16  "思往事",16  "悠悠",16

"无绪",16  "还知否",16  "追往事",16  "人间天上",15

"最苦是",14  "疏影横斜",14  "空怅望",14  "空惆怅",14

"记年时",14  "人间事",13  "又只恐",13  "回首处",13

"夜沈沈",13  "断人肠",13  "早归来",13  "有多少",13

"空凝伫",13  "向尊前",12  "微雨过",12  "情脉脉",12

"斜阳外",12  "无语",12  "月明中",12  "朱颜绿鬓",12

"绿鬓朱颜",12  "谁念我",12  "还知么",12  "问何如",12

"不堪回首",11  "东风恶",11  "人何处",11  "人正在",11

"今老矣",11  "从别后",11  "倚东风",11  "又何须",11

"多少事",11  "天长地久",11  "安阳好",11  "对东风",11

"对西风",11  "广寒宫殿",11  "归去也",11  "归来晚",11

"愿年年",11  "江南岸",11  "空回首",11  "终不似",11

"肠断",11  "肠断处",11  "落花飞絮",11  "西源好",11

"阑干外",11  "风流",11  "飕飕",11  "与谁同",10

"五云深处",10  "人间何处难忘酒",10  "人静",10  "从此去",10

"倚西风",10  "分明是",10  "功名富贵",10  "南徐好",10

"岁岁年年",10  "思晴好",10  "想当年",10  "无限事",10

"朝朝暮暮",10  "歌窈窕",10  "独自个",10  "竹篱茅舍",10

"纶巾羽扇",10  "良辰美景",10  "记当时",10  "诗曰",10

"醉归来",10  "七十古来稀",9  "人如玉",9  "人尽道",9

"何处",9  "凝望处",9  "千古恨",9  "千秋岁",9

"去年今日",9  "向此际",9  "坐中客",9  "天赋与",9

"好天良夜",9  "年年今日",9  "待归来",9  "愁绝",9

"故人何处",9  "明月清风",9  "暗香浮动",9  "曲水流觞",9

"浑不似",9  "清绝",9  "盈盈",9  "空肠断",9

"空赢得",9  "算人间",9  "算只有",9  "缘底事",9

"记当日",9  "还又是",9  "道骨仙风",9  "都付与",9

"都休问",9  "酒醒时",9  "问人间",9  "问何时",9

"风不定",9  "一声声",8  "不见",8  "二十年",8

"人散后",8  "人易老",8  "从今后",8  "休去",8

"休辞醉",8  "依然是",8  "几时休",8  "凭阑久",8

"去天尺五",8  "又谁知",8  "君且住",8  "吾老矣",8

"回首",8  "堪羡",8  "多少恨",8  "夜来风雨",8

"天下事",8  "天如水",8  "如何得",8  "嫣然一笑",8

"寂寞",8  "山居好",8  "归去来",8  "心下事",8

"怎知道",8  "思悠悠",8  "恁时节",8  "悄无人",8

"愿岁岁",8  "文章太守",8  "无个事",8  "最关情",8

"最好处",8  "有谁知",8  "浮世事",8  "满城风雨",8

"玉骨冰肌",8  "画堂深",8  "登临处",8  "看不足",8

"真个是",8  "知何处",8  "知音少",8  "称寿处",8

"空相忆",8  "笑人间",8  "纱窗外",8  "落花流水",8

"长安道",8  "问当年",8  "雨初晴",8  "频回首",8

"风又雨",8  "风流云散",8  "一杯酒",7  "一蓑烟雨",7

"三千岁",7  "东风外",7  "人去后",7  "人未老",7

"人道是",7  "今夜里",7  "但怅望",7  "佳人何处",7

"再相逢",7  "冰肌玉骨",7  "净几明窗",7  "凄凉",7

"凌波微步",7  "凝望久",7  "千山万水",7  "卷珠帘",7

"又何妨",7  "又过了",7  "叹人生",7  "君看取",7

"吴头楚尾",7  "地久天长",7  "堪恨处",7  "堪爱处",7

"多应是",7  "夜将阑",7  "天付与",7  "天寒日暮",7

"如今憔悴",7  "山无数",7  "帘栊静",7  "广寒宫里",7

"待明朝",7  "忆当年",7  "急管繁弦",7  "恨悠悠",7

"憔悴",7  "携手处",7  "无一事",7  "暗香疏影",7

"最难忘",7  "月明风细",7  "有个人人",7  "水悠悠",7

"江南春早",7  "深院宇",7  "深院静",7  "清风明月",7

"画图中",7  "留恋",7  "留春不住",7  "相逢",7

"相逢处",7  "看明年",7  "算惟有",7  "经行处",7

"绮罗丛里",7  "缓带轻裘",7  "肠欲断",7  "自别后",7

"莫匆匆",7  "行乐处",7  "许多愁",7  "试与问",7

"试屈指",7  "谈笑里",7  "谩回首",7  "还知道",7

"送君南浦",7  "都不管",7  "都莫问",7  "酒巡未止",7

"采菱拾翠",7  "长亭路",7  "问谁是",7  "难忘处",7

"非烟非雾",7  "风前月下",7  "黯销魂",7  "一叶扁舟",6

"一年一度",6  "一杯相属",6  "一枝枝",6  "一轮明月",6

"下缺",6  "不知今夕何夕",6  "东风起",6  "举杯相属",6

"之句",6  "人似玉",6  "人别后",6  "人生行乐",6

"人都道",6  "人间",6  "今夕何夕",6  "仙风道骨",6

"似当年",6  "但回首",6  "但赢得",6  "佳丽地",6

"依前是",6  "依然",6  "便从今",6  "便直饶",6

"凝眸",6  "几番风雨",6  "凭谁说",6  "凭阑处",6

"凭阑干",6  "分付与",6  "分携处",6  "别离情绪",6

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...