搜索引擎之人肉学习

夏日炎炎, 多多灌水, 有益身心健康.

Blekko的logo好像在前些日子由原来的beta升级为beta^2了, 页面正下方出现了一个名为"3 engine monte"的游戏. 玩法是, 输入"关键词 /Monte", 即可平行显示去格式后的Blekko, Google, Bing三方搜索结果, 用户可以根据经验猜测哪个结果是来自Blekko的, 点选以后即可显示猜测是否正确:

blekko_game

这里我以R为关键词进行搜索, 三个结果虽然都只有一页, 不过各有千秋. Google的结果明显偏重技术, bing的结果很杂, 不太靠谱. 而Blekko的结果的人为控制痕迹则比较明显, 基本上是一些比较权威信息源的首页.

继续阅读

《Graphics of Large Datasets》 原书第11章

gold

这是Springer Statistics and Computing丛书中《Graphics of Large Datasets: Visualizing a Million》一书的第11章. 内容是对InfoVis 2005会议竞赛单元所提供数据集的可视化和分析. 作者之一的Martin Theus也是R的交互式图形包iPlots和R的Java GUI前端JGR的作者.

单独将这章提出来的原因是, 一般相关书籍和资料比较偏重理论, 例证比较零散, 不够系统, 往往缺乏对现实数据集完整的分析. 这样贴近现实而详尽的材料相对难得.

半年前做了一部分, 这两天放假又整理了一下就放上来了. 图形提取自原书电子版, 在内容和版式上尽力保持了原书风貌.

值得一提的是, 竞赛结果中位列1st的两队之一是来自IAState的Heike Hofmann, Hadley Wickham, Dianne Cook, Junjie Sun, Christian Röttger, 而本书的三位作者之一是Heike Hofmann. 本书也是本章的两位作者所在队位居2nd.

PDF, 3.3 MB

PKU Vis Summer School

viz_cran_package_network

Prof. Michael McGuffin的热心让人感动. 当Michael问我"... You want to visualize something?"而我只能巨汗地回答"Just want to learn the basic things well ..."时, 我体会到以后还真是需要好好学一下计算几何了 .. Gary对大家都很有教益的Color Science .. 内敛的Patrignani的内敛的意式英语 .. 可爱老头Inselberg的极其无敌极其牛x闪闪的平行坐标 .. 周围低调的群牛 .. 都很值得回味. 感谢和我在同在一个group的Zhang, Wang, Chen三位同学, 你们优秀的想法给了我很多启发. :smile: 考虑到自己只是打酱油+纯路过的本质, 其他什么的就不多写了. 最后特别感谢高涛同学的友情食宿赞助. :wink:

Slides 1 - Group3: Plan(s)

Slides 2 - Final Presentation: Visualization of CRAN Package Dependency Network

最后的Name Cards偷了谢老大的创意 .. 脸红ing .. :oops:

原来暑假就要这么华丽丽的没了 ...

正则简单笔记

1. 元字符 (Metacharacter)

匹配字符串的开始(位置):  ^

匹配字符串的开始(不受处理多行选项影响):  A

匹配字符串的结束(位置):  $

匹配字符串的结束(不受处理多行选项影响):  z

匹配字符串的开始/结束(位置):  b

匹配字符串的结束/行尾(不受处理多行选项影响):  Z

匹配数字/字母/下划线/汉字:  w

匹配(阿拉伯)数字:  d

匹配空白符(空格/全角空格/制表符/换行符):  s

匹配横向制表符:  t

匹配竖向制表符:  v

匹配回车:  r

匹配换行符:  n

匹配换页符:  f

匹配任意字符(除换行符n):  .

前述表达式重复任意次:  *

2. 元字符转义 (查找元字符本身)

.  *  \  ^  $  等.

3. 字符类 (自定义的元字符):  [ ]

e.g. [13579] 匹配1或3或5或7或9中的任意一个数字.

4. 限定符 (规定表达式重复次数)

重复至少0次:  *

重复至少1次:  +

重复0次或1次:  ?

重复n次:  {n}

重复n次或更多次:  {n,}

重复m到n次:  {m,n}

e.g. d{2,9} 匹配2-9位阿拉伯数字.

5. 分枝:  |

p.s. 分枝条件按照从左到右的顺序测试. 如果已满足了某个分枝, 则匹配结束. 故使用分枝条件时, 一定要反复斟酌各个条件的书写顺序.

6. 反义

对于元字符, 把元字符里的字母小写换为大写即表示反义. 对于字符类, [^13579] 匹配除了1或3或5或7或9以外的任意字符. 一个不错的例子:

<a[^>]+> 匹配用尖括号括起来的以a开头的字符串

7. 分组:  ( )

和编程写公式时多加括号防止写错有点类似. 不过这里的现实意义强得多, 可以用来写出比较复杂的表达式.

8. 贪婪/懒惰

在正则表达式中, [最先开始的匹配] 拥有最高优先权. 其次才是默认的贪婪匹配原则. 与之对应的懒惰匹配原则:

重复0次或1次:  ??

重复至少1次:  +?

重复m到n次:  {m,n}?

重复n次以上:  {n,}?

重复任意次:  *?

9. 零宽断言

(1) 零宽度正预测先行断言:  (?=exp)

断言此位置之后能匹配表达式exp

e.g. bw+(?=lyb) 匹配以ly结尾的字符串的前面部分.

(2) 零宽度正回顾后发断言:  (?<=exp)

断言此位置之前能匹配表达式exp

e.g. (?<=bpre)w+b 匹配以pre开头的字符串的后面部分.

(3) 零宽度负预测先行断言:  (?!exp)

断言此位置之后不能匹配表达式exp

e.g. b((?!exe)w)+b 匹配不包含连续字符串exe的字符串.

(4) 零宽度负回顾后发断言:  (?<!exp)

断言此位置之前不能匹配表达式exp

e.g. (?<!010)d{8} 匹配前面不是010的8位数字.

10. 注释

(?#注释内容)