Simple implementation of mmseg with python

Since I heard of MMSEG Chinese word segmentation algorithm (http://technology.chtsai.org/mmseg/) many years ago, I finally implemented it with Python as a programing practice in my team, dictionary file and character frequencies from mmseg4j project.

rnnlm代码分析

这几天分析了一下rnnlm-0.3e的代码,做了一点点笔记,很多细节自己还没搞清楚,写的也非常粗略。因为懒得贴过来排版了,直接share一下evernote上的链接吧,请大家多多指正!

为像我这样的初学者了解rnnlm所需要的一些预备知识,sigmod和softmax的cost function和derivative,如何展开rnn,以及如何更新rnn的weights。

如何为孩子挑选冰球装备

我们在为孩子(包括为我自己)购买冰球装备上走了一些弯路,积累了一些经验和教训。我这里总结一下个人的心得,多为一家之言,供大家参考,请大家批评指正。

球刀鞋

推荐Bauer的Vapor系列,因为Vapor系列的鞋帮部分是比较前倾的,能帮助孩子养成滑行时下蹲的习惯。不过要注意的是,Bauer的鞋都偏瘦,如果孩子脚比较胖,可以选EE型号的(普通型号是D)。给孩子买鞋,不要贪大,大1号就可以了。鞋子太大会影响前脚尖滑行的感觉(所谓toe push)。球刀开刃时不要磨太深,日常用磨刀器保养一下就OK了。上冰时一定要给孩子穿比较厚的袜子(例如迪卡侬的轮滑袜),不容易磨脚,也更舒服一点。试鞋的时候要穿滑冰时穿的袜子。另外好一点的鞋,都可以做一下热定型,穿起来更舒服一点。建议到实体店试穿。

头盔

欧美人的头型和亚洲人的不同,亚洲人的头型是比较圆,脸比较宽的类型。头盔一定不能夹头,否则孩子会非常难受(同队的很多孩子都遇到夹头的问题)。头盔建议一定去实体店试戴。头盔建议可以买好一点的,毕竟孩子的头围长得不是那么快。例如$230左右的Bauer RE-AKT头盔,比较轻,而且比较圆(同队好多孩子的家长都买的这款)。

护具

如果孩子在115~120cm左右,可以考虑直接买Junior的S号的护具,Youth的护肘有点太单薄。如果Junior的护腿板对孩子来说有点长,可以先买Youth的。防摔裤不能太长,只要下沿和护腿板之间不要有空隙就可以了,不要盖住护腿板,否则会影响孩子的滑行动作。手套个人觉得可以买好一点的,保护手指的关节比较重要;入门级的手套,貌似手心部分遇冰容易湿,孩子的手可能因此长时间受凉。护颈和护裆都是必须要买的,平常训练也应该穿上。我就见过训练中的小朋友,裆部撞到球门柱上的情况,幸亏有带护裆。

速干衣/帽

这个不用迷信专业冰球品牌,买类似迪卡侬的速干衣就很好了,而且专业冰球品牌的号码都没有太小的。根据教练的建议,应该买长袖高领的。吸汗帽最好不要有那种很厚的沿儿,否则带上头盔容易夹头,或者也可以用吸汗的那种头巾。

球杆

5岁左右可以买Youth的,6岁左右买Junior的就可以了。Junior的拍头更大一点,容易控制住球。球杆的curve非常重要,个人感觉Reebok的P87A是比较好的选择,和它类似的还有Easton的Sakic,Warrior的Draper,CCM的Nugent-Hopkins,以及Bauer的P92等。这里有一个介绍各品牌球杆pattern的网站,可以了解一下各种curve的优缺点以及适合的球员类型。对孩子来说,可以买flex比较低(弹性比较强)的球杆,有利于孩子练习传球和射门等技术。

Lie(球杆和拍头的倾角,这个数越大倾角越倾向直角),大部分球杆都在4到6之间。考虑到孩子身高长的比较快,一般截短球杆的高度可以是,将球杆直立(拍头在下),不穿冰鞋的时候到眼睛的高度,穿上冰鞋到鼻子的高度。成人可以考虑到鼻子(不穿冰鞋时)或下嘴唇(穿冰鞋时),具体其实还和球杆的Lie有点关系,一般Lie比较低的可以稍微留长一点。

杆身还有一个Grip和Clear的区别,Grip的是杆身有防滑涂层。一般Youth的杆身都是Grip的;Junior/Senior的买非Grip的比较好,球杆在下方手的手心中,很多时候不是握死的,而是需要快速滑动。各品牌的高端球杆大多是True-1-Piece的,比Fused-1-Piece(杆头和杆身是熔在一起的),控球的感觉要更好一些。Warrior目前的一些中低端球杆(例如DT3/DT4/DT5)也开始用True-1-Piece了,另外他家球杆换季的时候打折比较狠,性价比很高。

球杆的重量,当然越轻越好,孩子本来手部和臂部力量就小,球杆太沉的话,对控球的技术练习有很大影响。其实对成人也是一样的。沉的球杆(或者自己加重的)可以用于专项的力量练习,但不适于日常的要求比较细腻的控球/射门练习。

最后,球杆还有一个左手/右手的区别,如果右手更有力量,通常应该选左手杆,即右手在上,左手在下的姿势。一般来说和你拖地或者用铁锨铲土的姿势是一样的,不过估计孩子们做家务的机会不多,还是看孩子怎么顺手 :)

海淘

海淘的价格优势是巨大的,就是有时候到货周期比较长,建议避开美国的感恩节和圣诞节,以及国内的国庆和春节等时间段。推荐hockeymonkey.comicewarehouse.com,其中icewarehouse超过$75免美国国内的运费,且会员能打9折。hockeymonkey比较奇怪,总额$99以内的运费是$9.99,超过之后是$14.99的运费。不过hockeymonkey上的货更全一些。海淘建议用paypal来付费,注意账单地址必须和你信用卡注册时使用的地址一致。如果是mastercard,小心汇率的陷阱(详情可以google一下paypal mastercard 汇率)。最后,通过转运公司,将货物从美国(一般海外仓库在免税州)转运到中国,转运公司会负责清关(有时会被抽关税,冰球装备是10%)。个人一直用转运中国,服务和速度整体感觉还是不错的,不过现在关闭新用户注册了…

另:本文很多参考了icewarehouse的learning center里的文章和视频,因为其视频放在youtube上的,可能国内的很多朋友不便观看,我把这些视频转到youku上了。

线性回归求解幼儿园数学题

题目的原意是要数数字有多少个圈儿。微博上的@梁斌penny@ML_120两位讨论说可以用机器学习来求解结果,并且@ML_120同学还特别指出,这应该是一个线性回归可解的问题。我最初觉得数字有几个圈儿,怎么可能让机器学习到这个feature呢?

不过既然两位ML专业人士都认定这是个LR问题,不由得再多去想一想。如果将0-9每个数字出现的次数,作为feature vector(忽略了数字出现的次序),用线性回归的结果会如何呢?遂用octave写了一个小程序来验证一下结果,代码如下:

因为样本和参数规模都很小,故直接用Normal Equation来求解了。结果出乎意料,非常符合。最后theta的结果也非常有趣,0/6/9的权重都接近1,8的权重接近2。

theta(2:11) =
   0.80769
  -0.19231
  -0.19231
  -0.19231
  -0.19231
  -0.19231
   0.80769
  -0.19231
   1.80769
   0.80769

另,还有@TreapDB同学用BPNN实现的一个回归方法(代码在此),结果也非常漂亮 :)

雪后的爨底下村

约好周日带国际友人去爨底下村转转,早起一看,白茫茫一片,心里有点打鼓,担心路上不好走;约好的是7点到城铁站接他,到城铁站一看,仨出口。我对这个城铁站也不熟悉,没有约哪一个出口,而这位帅哥没有国内的手机号码,这要碰不上还挺麻烦的。停在路边正在寻思,看到远处有个帅哥正穿过马路,朝我这边走过来,边走边打量我的车,身形也像,走近一看果然就是他,还是挺巧的。

路上的景色很赞,白雪挂在枝头,非常漂亮,北大西门的那条路,就已经漂亮的不像话了,可惜没有办法停下来拍两张。路上还算顺利,稍稍有两次侧滑,好在车速比较慢;9点多一点,我们就到了爨底下村,停车场只有我们一辆车。原本约这么早出门一是要避开人群,另外有点私心,因为光线是早9晚5最好嘛。我们两个都没吃早饭,在村子里找了户人家,进去要了两份大饼卷鸡蛋+棒渣粥,一则是因为有点饿,二是因为天气有点寒冷,吃得格外的香。

然后顺着村子和两侧的游览栈道走了一大圈,雪景很漂亮,狂拍了一通;行人很稀少,很安静。中午两点吃完饭再一看,雪都已经化了,早起赶路的辛苦真是值得了…

废片若干,flickr.com/photos/yong_sun/sets/72157629251331606/

IMG_4501.jpg

山寺雪花

IMG_4498.jpg

IMG_4528.jpg

IMG_4541.jpg

IMG_4438.jpg

2011香港亲子游

儿子渐渐也大了,老婆和我觉得可以带他出去旅行一下了,目标就定在了香港,主要原因是有迪斯尼乐园。提前一个月就开始准备了,先是给小小办了身份证、护照、和港澳通行证;然后老婆很辛苦,在淘宝上定了各种门票,在芒果上定了机票酒店等。小小这一个月来,一直念叨着,什么时候去香港啊?终于在上个周末,一家人出发!

第一天到酒店已经6点了,找地方吃晚饭,颇费了些周折。儿子一天舟车劳顿,有点累了,晚上很快就入睡了。第二天早起去迪斯尼乐园,第一个项目去玩了飞越太空山,接着是巴斯光年(本来看了攻略要去拿FP的,结果进去的时候只有我们一家三口在玩,这是去的早的优势呀);这两个项目,小小都有些害怕,导致一上午情绪都不是很放松。小小很喜欢看米奇幻想曲和狮子王音乐剧,还有那个史迪仔的表演,对各种低龄的旋转类项目都很有兴趣。晚上9点看烟花表演,还是很精彩的。晚上到乐园旁边的好莱坞酒店,小小也是很快就睡着了,实在是累坏了。第三天继续在园里玩,若干项目玩了第二遍(疯帽子的茶杯玩了三遍)。第一次看狮子王时没有经验,做的位子虽然很靠前,但是没有办法和演员互动,第二次去看的时候,我排在第一个占了一个最好的位子还能和演员互动,加上儿子戴着一个“毛怪”的帽子,演员们都过来逗逗儿子,儿子特别的开心,还不停的问我“他们都说我什么呀?”,说你是可爱的小毛怪呀。看表演的时候一定要靠走廊坐尽量往前。总体感觉,如果要细细玩的话,香港迪斯尼乐园虽然不大,但是还是2天为宜。

第四天去海洋公园,上次和老婆来过一次,本来不在这次的计划中。考虑到带小小去看看水母馆等我们觉得比较有特色的馆,还是决定去转转,然后晚上顺便去太平山。海洋公园的熊猫馆和熊猫之旅绝对值得去看看。北京动物园里也有熊猫馆,但是人太多了,根本没办法近距离看到熊猫。来到香港,才真正“看见”熊猫了… 大部分游乐项目,小小都不能参加,身高不够1.2m,小小有点不高兴。最后玩了一个类似激流勇进的项目,小小终于开心了起来。太平山的蜡像馆,小小对里面的人物基本没什么感觉,主要是找漂亮姐姐合影,呵呵… 太平山顶的夜景对小小来说也没什么吸引力。

第五天去海港城反斗玩具城给儿子买玩具,儿子很开心… 老婆一直挂念上次去的许留山,这次带儿子一起去,吃得很开心。下午去星光大道转了一下,然后5点坐天星维港游,我和老婆都有点晕船。晚上8点,在维港看幻彩咏香江的灯光表演,拍照的位置没有选择好,儿子看得很开心,然后问怎么这么短啊,的确是时间不长,呵呵 :) 然后晚上9点才吃晚饭,回到酒店儿子还是很兴奋,那着他新买的玩具,玩了半天才肯睡觉。不过一个哈欠过后,就睡着了…

第6天就是回程了,飞机晚点,因为导航系统的故障,两次返回停机坪维修,迟了约两个小时才起飞。到北京还堵车,快10点才回到家吃了晚饭。这几天可是累坏了,我感觉后面几天,我的腰跟断了一样,走不了几步,就酸痛起来。不过终于回到家了…

798…

周六带儿子去了趟798,一来是让儿子感受一些“艺术气息”,二来是用新入的5DII多做些练习。作为土鳖的我,不是很能欣赏那里的“艺术品味”,而且很多展厅也不适合小朋友去参观。很多长枪短跑的摄友,还有很多学生,聚集在各个标志性景点前。其中各色小巷,有很多有趣的小店,不过店内基本不允许拍照,无法呈现给各位了。总体来说,此行感觉一般…

废片若干:

用GPU加速拼音输入法?

看到IBM申请了用GPU加速数据库的专利,想起来自己之前还有过用GPU来加速拼音输入法的想法,当时写在了twitter上,幸亏当初有在google reader里订阅了twitter中有关sunpinyin的关键字搜索,否则还真翻不出来了呢…

Jun/16, 2011:

这几天我一直在想,能否用GPU来加速输入法,我可以把SunPinyin Syllable Graph的所有组合,发到GPU上去开足够多的线程做并行搜索,或者在做viterbi时,栅格间的状态节点转移,也可以放到GPU上来并行运算,可大幅度提高beem宽度… 个人倾向于第一种方式…

http://twitter.com/#!/yongsun/statuses/81130853278822400

当时还和熟悉GPU/OpenCL的@reminisce1989同学探讨来着,reminisce1989同学认为用GPU加速Graph算法是很困难的,不过后来reminisce1989同学好像删推了,没有原推可以refer了。

yongsun: @reminisce1989 @jjgod 既然是基础服务,肯定不能随便down掉,应该是可以想办法避免的… 我的想法主要是,现在sunpinyin的搜索规模还很小,不知道能否借助GPU来大幅提高搜索的规模,回头有问题还要向您请教了 :)

reminisce1989: @yongsun @jjgod 最后提醒一下,GPU是不支持指针的(或者说只能模拟指针)。而我不知道你的sunpinyin用的搜索是什么图算法。如果用到任何常规图论算法,不用说难用OpenCL之类的语言实现,实现了效率也提不上去,因为是非顺序化读取,而且还要考虑拷贝数据的时间。

后来,我仔细阅读了OpenGL的一些文章和书籍,觉得应该是有希望的,不过一直没有时间去做实验,先记录在这里吧…