3月 21

山人何处君不见?东风一花倚阑干! ——《全唐诗》、《全宋词》统计分析报告

山人何处君不见?东风一花倚阑干!

——《全唐诗》、《全宋词》统计分析报告

一、源起

前两天看到了邱怡轩写的统计词话(一)。受其启发,决定利用自己的编程及统计分析能力,对《全唐诗》和《全宋词》进行一个较为全面的统计分析与比较。于是便有了你现在看到的这篇文章。
此处使用到的原始数据、程序脚本及结果图表等均可以在文末找到下载链接。

二、数据

《全唐诗》及《全宋词》的原始数据均来自于网络。
通过基本的编码转换以及“简单”的过滤筛选之后,就得到了用于后续统计分析的数据。

三、工具

系统平台:Linux(Ubuntu 10.10,AMD64)。
Shell命令行:转换编码(iconv)与换行符(fromdos)。
Perl(v5.10.1):用来过滤、筛选原始数据,得到可以用于后续分析的格式化数据。
R(v2.12.2):统计分析及图表绘制。
其他:Vim(v7.2.330),TimeForScience

四、结果

1.基本信息

general_info
补充:只考虑诗或词的主体内容的话,《全唐诗》共使用了7513种(个)汉字,而《全宋词》则使用了5750种(个)汉字。
此处的统计数据仅为约数,与其他的数据有一定的出入。主要原因在于原始数据的质量以及数据处理过程中的过滤筛选等。
相关的参考数据:
百度百科:《全唐诗》共收录唐代诗人2529人,诗作42863首。
玄烨为《全唐诗》所作的序中的说法:诗48900余首,2200余人。
日本学者平冈武夫的统计结果:《全唐诗》共收诗49403首,句1555条,作者2873人。
维基百科:《全宋词》收录宋代词人1330家,词作21116首。
Continue reading

3月 18

回答的智慧

回答的智慧

1. Don’t answer questions to which you don’t know the answer(不回答自己不知道答案的问题)
2. Explain yourself (解释给自己)
如果自己是提问者,你的回答是否能让自己明白?
3. Give as little assistance as necessary (尽可能的给最少的帮助)
有的时候启发性的回答更为有效.
4. Show your workings (展示你的做法)
5. Use humour judiciously (明智地使用幽默)
有的时候因为不同语境/语言的问题,你的俏皮话可能会让提问者更加困惑。
6. If you can’t say something nice don’t say anything atall(如果你不能说出有用的内容,就别说)
7. Avoid jargon, baffling acronyms and idiolects(避免行话、令人困惑的缩写词、习惯用语)
8. Never never never just respond with RTFM. Not ever.(永远永远永远不要回复RTFM)
这里的 RTFM 代表”Read The Fucking Manual”, “去读该死的手册”.
另外一个常见的是: STFW –Search The Fucking Web, “搜索该死的网络”,或者友好一点的 “Google 一下”.
对于中文论坛上,我觉得还有一个尽量不要说 “RPWT” –人品问题
9. Meditate on eternity (永远的深思熟虑)
回答的问题,可能在不久以后会被别人搜索到,看到,甚至是被你将来的老板看到。一个欠缺思索的回答无疑会降低你在其他技术人员心目中的形象。
10. Keep your newbie mind (保持自己的”新手”思维)
学无止境
保持谦卑。回答并不意味着你是”给予”, 可能你也在学习. 不要认为回答了一些问题自己就成了 Guru 了.……【阅读全文】

3月 18

R语言常用函数参考

资料来源:S常用函数参考

  • 基本

一、数据管理

vector:向量
numeric:数值型向量
logical:逻辑型向量
character;字符型向量
list:列表
data.frame:数据框
c:连接为向量或列表
length:求长度
subset:求子集
seq,from:to,sequence:等差序列
rep:重复
NA:缺失值
NULL:空对象
sort,order,unique,rev:排序
unlist:展平列表
attr,attributes:对象属性
mode,typeof:对象存储模式与类型
names:对象的名字属性
Continue reading

3月 15

【转载】9条编程带给程序员的坏习惯;

/**
*  本文笑点很奇怪
*  请各位视自身情况筛选阅读.
*/

如果你是一个程序员, 或者你就读计算机相关专业, 那么你应该能理解下面这些诡异的小习惯是怎么养成的, 或者你本身就有着其中的某些习惯:

0. 程序员数数会从0开始数起.

例: 程序员吵架的时候会说: “我数三下, 你再不闭嘴我就不客气了! 零! 一! 二!” 或者列清单的时候编号会从0.开始写.
因:  array[0]是数组的第一个元素.
评: 这个习惯的养成是一个艰难的过程. 多少次的越界, 多少次的循环次数错误让我们深深的记住了从0开始.

1. 程序员用肯定和否定回答选择性的问题.

例: 问 “您想喝咖啡还是喝茶?” 程序员答: “嗯.”
因: 当条件或||有一个子句值为真, 则整个语句值为真.
评: 这个习惯夸张了一点, 但这的确是程序员思维方式的通病, 用计算机的处理逻辑处理人类问题. 当然这样的回答显然是存在编程错误的, 因为对于这个问题他错误的返回了布尔型的值. 虽然高度怀疑有没有人关心这种回答的结果是怎样, 还是给出一个答案. 如果真的在程序的世界里, 服务员会优先考虑给你咖啡, 如果没有咖啡了, 才会端茶给你.
Continue reading