| 致远 的个人资料叉包的地下室照片日志列表 | 帮助 |
|
12月10日 用Pyhon写了个分词程序最近在看Python, 找东西连笔。
于是写了个分词程序,基于词长和概率的正向切词。效果还不错,最主要是只用了不到70行代码(加些技巧应该能在少一二十行)。
再看看 Peter Norvig 只用21行写了个单词纠错程序 ,也不再说啥了,继续学习去。
看得懂的扔砖吧。
#!/usr/bin/python
# -*- coding: utf-8 -*- """
A word segment class based on word fequence and length. Use dictionary from Sogoulab """ import codecs, re, collections, sets
class ChineseWordSegmenter: word_freq= collections.defaultdict(lambda: 1) word_incomplete=sets.Set() def __init__(self, verbose=0): self.dic_encoding = "gb18030" self.dic="SogouLabDic.dic" self.verbose=verbose self.LoadDict(self.dic) def LoadDict(self, dic): dicfile=open(dic, "r") while 1: lines = dicfile.readlines(10000) if not lines: break for line in lines: wordfeq= line.split() word = unicode(wordfeq[0], self.dic_encoding) self.word_freq[word]=int (wordfeq[1]) for i in range(2, len(word)-1): self.word_incomplete.add(word[:i]) def seg(self, text): latin, words, result='', '', [] text += u'\u3002' #add 。 for s in text: if (ord(s) < 0xff): latin += s elif (ord(s) >= 0x4e00 and ord(s)<= 0x9fff): #Unicode CJKUnifiedIdeographs words += s else: #punctuation result.extend(self._seg_word(words)) words='' # result.append(latin) #do we need latin words? return result def _seg_word(self, words):
res, i ,tmpword = [], 0,('', 0, 0) words += ' ' #add terminator while len(words)>1: j=2 while words[i:i+j] in self.word_incomplete: j+=1 while j>1 and words[i:i+j] not in self.word_freq: j-=1 currfeq=self.word_freq[words[i:i+j]] if tmpword[1]>currfeq or tmpword[2]>j: #based on length and probabilty res.append(tmpword[0]) words=words[tmpword[2]:] tmpword,i=('', 0, 0),0 elif tmpword[1]>0: res.append(tmpword[0][:1]) words=words[1:] tmpword=(words[:j], currfeq, j) else: tmpword,i=(words[i:i+j], currfeq, j),1 return res if __name__ == '__main__': wordseg= ChineseWordSegmenter(verbose=1) wordin=u"中国人民鞋子和服装有限公司的。apple yes(no)迄今为止,你主要是匹配整个模式,不论是匹配上,还是没有匹配上。鞋子和服装有限公司" wordout=wordseg.seg(wordin) print wordin.encode("gbk") print " ".join(["%s" % word for word in wordout]).encode("gbk") 11月12日 断腿日记 1我还记得当时似乎听到了3、4下喀嚓声, 接下来就曲着身子躺在“滑滑梯”下面哼呦了
过了几分钟,瞬时的巨疼消失后准备翻身起来时才发现,左脚已经完全不能吃力了。
去医院检查,当医生听说是滑滑梯时受伤的后吃惊的看了看我,然后检查了一下我病例卡上的年龄
网上订的拐还没送来,只能坐着非常夸张的轮椅去上班。吃惊的同事们纷纷过来表示慰问并且询问骨折原因,由于实在不好意思说是滑滑梯时摔伤的,只能含糊地说是陪儿子玩得时候发生了点意外。
晚上回到家练习了一下用双拐行走,儿子关切的挤在我的断腿和拐之间要保护我,搞得我更加别扭。
PS.腿没有断,只是左脚踝处韧带拉伤加上部分骨裂,腿断只是记述方便, PS over
PS2. 那个滑梯真的很陡,而且滑梯结束的很突然。 我认为这种设备不应该出现在儿童乐园内。 PS2 over
6月25日 Box is Back前段时间估计是RPWT, hotmail,MSN space 什么的都上不去。
现在不知道是升级了 live space还是rp有所提升,居然又能访问space了。
那么,没事可以吐吐口水了。 5月26日 即视现象(zz)即视现象查Wiki百科,介绍的很简单,只有一句话,如下: 即视感:未曾经历过的事情或场景仿佛在某时某地经历过的似曾相识之感。 查心理书,有如下: Deja-vu n. 似曾相识的感觉 I'm getting a deja vu. 好像在哪见(听)过。 (记得电影《黑客帝国》中,Neo看见一条黑猫,接着又看到了一条一摸一样的黑猫走了过去,立刻说了句 deja vu) 以前读到的一篇关于即视现象的文章,抄录如下: Deja -vu现象,原文为法语dé jà vu,中文翻译为“即视感”,简单而言就是“似曾相识”,未曾经历过的事情或场景仿佛在某时某地经历过的似曾相识之感。而且有一首英文歌,就叫Deja-vu。“When you see familiar faces, But you don’t know where they’re from, Could you be wrong?/ When you’ve be particular places, That you know you’ve never been before, Can you be sure?/ ‘Cause you know that this happened before, And you know that this moment in time is for real, And you know when you feel deja -vu./ Feel like I’m been here before…/ Ever had a conversation, That you realize you’ve had before, Isn’t it strange?/ Have you talked to someone? And you feel you know what’s coming next. It feels pre -arranged./ ‘Cause you know that you’ve heard it before, And you feel that this moment in time is for surreal. ‘Cause you know when you feel deja-vu. ”这歌词已经很形象的解答了Deja-vu现象为何。可是现代科学里解释这一现象成因的理论却远未让人满意。根据问卷调查显示,三分之二的成年人都至少有过一次“似曾相识”的经历。而且越有想象力的人越可能经历奇特的感受;经常在外旅行的人比长时间留在家的人更容易经历“似曾相识”;另外,受过高等教育的人也比其他人更多经历这种感觉(也许这是因为他们在托尔斯泰或哪位文学巨匠的著作中经历过独特的感受)。调查还显示,“似曾相识”的发生率在青年时期最高,此后随着年龄的增长而逐渐降低。特别是当人们真正开始重复日复一日的单调生活时,它的发生率反倒降低了。一个世纪以前,当弗洛伊德理论还是领导心理学研究的主流时,分析家就把“似曾相识”解释成潜意识矛盾冲突的体现。但是现在心理学家提出,“似曾相识”不一定发生在深层次潜意识矛盾冲突基础之上。一般健康的大脑都会产生这种感觉。而且,人们在疲惫和压力状态下时很容易出现这种感觉。此外,它还可能会与“jamaisvu”相伴出现,即见到熟悉的事物或文字时却一时间什么都回忆不起来的感觉。心理学家还指出,“似曾相识”感的出现可能是因为人们接受到了太多的信息而没有注意到信息的来源。熟悉感会来源于各种渠道,有些真实,有些却是虚幻的。当你遇到已经忘记的小说描写的情形时,可能会把它当作自己前世的记忆。或者,当身处了曾经看过电影的真实场景时,虽然表面上已经完全忘记了这部电影,但脑子里还是会勾起惊心动魄的回忆。心理学家还指出,人们有时根本不需要真实的记忆,大脑内部就有可能自己制造一种熟悉的感觉。 剔除先入为主的所谓科学观,还有以下诸种解释: 1、人的大脑时刻在虚构各种情景,主要是潜意识活动,当你遇到现实中近似的情景时,就会与你记忆中以前大脑虚构的情景相呼应,加上心理强化的作用,你就会有似曾相识的感觉。因为人在睡眠中,大脑仍在对现实中的一些参数运算,得到许多种结果。似曾相识的情景是大脑运算的结果之一。 2、研究人员认为这可能是某个印象早已潜藏在做梦者的潜意识里,然后偶然再在梦里显现出来,也有些研究指出这种现象和另一种超越时空的潜意识有关。另一方面,有些大脑活动研究专家指出这种现象也有可能是我们的大脑某半边处理讯息的速度稍为快过另半边所做成的。 3、这是时空隧道的碰撞或对梦的记忆。在梦里已经看到了将要发生的场景,只是记不清梦境了,所以你遇到事情发生的时候会觉得好象那里经历过。其实是勾起了你自己的记忆,对梦的记忆。 4、这个在医学上还有一种解释是大脑皮层瞬时放电现象,或者叫做错视现象,也可称为视觉记忆,经常会发生在你身处于非常熟悉的环境时。我们的大脑有一个记忆缓存区,当你看见一见东西或者遇见一件事情的时候是先把记忆存储再缓存区。之所以会发生眼前的事情好像已经经历过这种感觉,是因为我们在记忆存储的时候发生了错误,把它存在历史记忆中去了,在看着眼前的事情的时候你又从历史记忆中把它找出来,你就觉得好像以前已经发生过了。在大脑疲劳的时候会比较容易产生这样的错觉。 5、生死意识流动的差异。死/^^^^\生\____/死。这是人的意识流动图。人出生有了意识,到死之前这个意识一直是平坦的流动。到死了之后,人的意识会按照曲折的路线回到出生时,从而一直往复。因为死后的路线曲折,致使生时的记忆被分段的记录,只有处在接点的记忆才有可能被下一段“生”的意识绞缠,就会出现deja-vu现象。至于为什么年轻人和老人会有这一现象,也很好解释。年轻人的正常的意识形态还再形成中,而老年人的大脑的记忆回述功能较强。而中年人由于生活压力过大,而经常忽视这种感觉,而不是不存在。 6、物理学上称这样的现象是时光倒流,也就是在速度大于光速后时空交错,四维空间偶尔发生混乱的特殊人体感觉。当发生某个场景的时候,人的控制神经(中枢神经一部分)就会以极快的速度传送于记忆神经,这时大脑的反应还没有传达到记忆神经,所以当大脑的反应传到记忆神经的时候,就会让人感到以前发生过一样。有科学家猜测,这时控制神经和记忆神经的传输速度会大于光速。这是对相对论的一个巨大挑战,当然现在这个理论并没有得到证明,只是猜想阶段。 7、虽然正统派的科学者们拒绝谈论灵魂的有无,或是毫无余地地否定这一观点,但是高能物理学及一些其他的边缘物理学对这个问题的牵涉是不可否认的。首先,是探讨灵魂的构成物质。有一些异端物理学者提出灵魂的本质是一种高能粒子(物理学上有很多推测得来的证据,因为虽然人类可以依赖物理法则和规律预言它的存在,但人类的科技力量不足无法验证,包括很多种高能粒子等),本身携带巨大的能量,可以突破时间及空间的障碍,就是说可以在时间及空间中进行移动。这种推论完全符合爱因斯坦的相对论。它的特异性质在于它可以作为信息的载体进行无序性时空移动。我们头脑中所有的记忆所有的思考都可以称之为信息,虽然现在还无法搞清信息的本质是什么,但却可以肯定脑电波对它有一定作用。这就是我们所说的思考或是脑内意识活动。而这种粒子平时就大量散播在我们周围的空间,当然也存在于我们的脑内。正因为它的特性,我们才可以接收到外来信息进行思考、记忆、回忆,还有遗忘。所谓遗忘就是一部分带有信息的粒子游离开我们脑部的意识空间。遗憾的是至今都没有搞清楚是什么原因诱发这种粒子间的吸力和斥力的,或许与我们的脑电波及其他脑内化学物质有关。但是,当我们的脑死亡后就会有大量的粒子游离开我们脑中的记忆区。由于尚不清楚这种粒子的相吸和相斥的原理,也就无法解释和推算它们的游离比率。在机率很低的情况下,这种粒子在游离之后仍然保持着它在原来在人脑中的排列性状,换言之也就是保持着这个人(已经死亡)的基本人格和记忆。当它们在遇到新的结合目标(另一个人的脑)并结合之后,在这个人是新生儿(没有已经形成的记忆的情况下)就会发生人格的转移,也就是我们通常所说的轮回或夺舍。但也有意外的情况发生,比如在结合后保持着潜伏状态到一定时间才突然觉醒,这也就是我们常说的人格突变现象.(也存在于记忆已经形成的人身上结合后觉醒,使其丧失原有人格的情况) 。事实上,我们是无时无刻都会与这种粒子结合,比如我们突然冒出个怪想法,脑子里突然出现一些词句……甚至是做梦和预言等现象也都可以用这种理论解释。即视感也可以这样解释。 8、时空错乱。举个例子:你需要一个工具,但满屋子都找遍了就是找不到,但过了一会儿或一段时间,这个工具明明摆在平时放它的地方。用爱因斯坦的观点解释,就是这个世界有很多时空,每个时空都按照一般的规律运行着,他们是平行的,一般不会有交叉,只是有时间的先后,但也有例外的情况,出现时空交叉,即时空错乱,这是就会发生工具消失的情况,例如一把钳子没了,转眼它又在哪儿了,也就是谁说,钳子暂时到其他的时空转了一圈,这个时候正让你碰上,当然,这样的巧合还是很少的。人也一样,如果碰巧你存在的时空和未来的时空交叉,也就是说,你有很短暂的时间进入了未来时空,很快又回来了,假如你在未来时空用钳子修了一辆自行车,你回到现在的时空后,还要进行同样的动作(修自行车),但你的记忆里已经存储了这件事情,所以你就感觉这件事,这个景象好像在哪里经历过。这和年龄与其他经历没什么关系。 行文至此,说实话,我还是对deja-vu不甚了了。我也只能就自己的感情倾向选一个解释,或者说认定一个。时间的温度变化无端,我们只能无奈的看着时间流逝,却无能抓住,这不仅是人生的残酷,同时也是人生的幸福——我们慢慢变老,如果儿孙还能记得你,这就是你在这个时空唯一的遗迹了呢。或者,这是祖先崇拜的意义呢。 4月7日 转载:在浮躁的年代里做好学问,难!
2月7日 KOSMIXGoogle已经6年了,自打提出PageRank算法之后,在网络搜索方面几乎听不到其他的声音了。(除了财大气粗的M$和有中国特色的Baidu)。
现在,冒出了个Kosmix。
Kosmix是啥?
Kosmix项目的创始人是两位来自印度的牛人, Anand Rajaraman和Venky Harinarayan。印度人的名字就是拗口,可是他们的导师 Jeffrey D. Ullman估计不会有人陌生。
做数据库的人去搞网络搜索,嘿嘿,而且和Larry Page,Sergey Brin 师出同门,有趣有趣。
现在唯一担心的一件事就是Kosmix半路中被某有钱的主给收购了。 12月15日 父子对话 (一)晚上睡觉前
爸爸:乖儿子睡觉了吧
儿子:爸爸讲个故事吧
爸爸:好的,balabala.......
儿子:爸爸换个故事吧
爸爸:(有点出汗),好吧,bala..balaa...
儿子:爸爸不要讲故事了,爸爸唱歌吧
爸爸:...,好吧, lalala... lalala ...
儿子:爸爸唱个好听点的歌吧
爸爸:(满头是汗),好的, lalalala...
儿子:爸爸不要唱歌了,我要睡觉了
爸爸:......
儿子:Zzzzzzz
12月12日 Google™ Code Jam - 中国编程挑战赛 (2)满怀信心地抱了名参加Google CodeJam。
今天是入围赛的开始,1小时里要做两道题目。
晚上回到酒店上网登陆到编程竞技场。第一道250分的题目还算容易,可是不知道怎么的提交完了居然只剩下不到30分钟了。打开第二道750分的题目。傻眼。毫无思路。硬着头皮写了半天,提示快要超时了,立刻编译,出了几个错,修改了之后已经EXPORED了。
附上第二道题目,哪位高手帮着看看?
=========================
Problem Statement You are playing a card game, and in your hand, you are holding several cards. Each card has a suit, 'S', 'H', 'D', or 'C', and a value between 1 and 10, inclusive. You may play cards as part of a set, which is three or more cards of the same value, or as part of a run, which is three or more cards of the same suit, in sequential order. (Runs may not wrap, thus, 9-10-1 is not a valid run.) Each card may be played only once. For example, "1 S", "1 H" and "1 D" would be a valid set. "2 S", "3 S", and "4 S" would be a valid run. You want to play as many cards as possible, maybe in several plays (see example 4). Given a string[] cards representing the cards held in your hand, you are to return an int indicating the maximum number of cards you can play. Each card will be given in the form "value suit" (quotes added for clarity). Definition
Class: PlayCards Method: maxCards Parameters: string[] Returns: int Method signature: int maxCards(string[] cards) (be sure your method is public) Constraints
- cards will contain between 0 and 20 elements, inclusive. - No two elements of cards will be the same. - Each element of cards will be of the form "value suit" (quotes added for clarity). - Each number represented will be between 1 and 10, inclusive, with no leading zeroes. - Each suit represented will be 'S', 'H', 'D', or 'C'. Examples 0) {"1 S", "2 S", "3 S"}
Returns: 3 We have a run of three cards, which we can play. 1)
{"4 C", "4 D", "4 S", "3 S", "2 S"}
Returns: 3 We can take the 4's as a set, or we can take the 2-3-4 run. Either way, we play 3 cards. 2)
{"1 S", "2 S", "2 H", "3 H", "3 D", "4 D", "4 C", "5 C", "5 S"}
Returns: 0 We've got lots of cards, but no way to put three together. 3)
{"1 S", "2 S"}
Returns: 0 Since we have to play at least three cards at a time, there's nothing to do here. 4)
{"1 S", "2 S", "10 S", "5 S", "8 S",
"3 H", "9 H", "6 H", "5 H", "4 H", "10 D", "5 D", "7 D", "4 D", "1 D", "2 C", "4 C", "5 C", "6 C", "7 C"} Returns: 9 The best we can do is to take the set of 4s, the 5-6-7 C, and the remaining three 5s. We could have taken the 4-5-6-7 of C, or all four 5s, but we would not end up playing as many cards. This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved. 11月25日 征西 ┌─┬─┬─┬-[炮][将]-┬─┬─┐ 前两天中午饭后在码头附近闲逛时,看到一个老头在摆马路棋摊。其中就有这个比较经典的"征西"。据说曾经有人写了3本书分析这个残局,可惜我只记得基本的走法和两三种变化,否则就陪那个长着山羊胡子的老头玩一把了。嘿嘿。 |
|
|