牛啦曾经是一个书签系统,后来因为疏于维护,被黄色内容包围,进而我们关闭了他。 两年前我一直有一个想法,就是完全的实现零编辑的新闻系统,但是总是种种原因没有实施成,这次几个朋友一起花了几周时间完成了这个零编辑的娱乐新闻系统,也算弥补了以往的一个缺憾。 牛啦主要的功能是: 新闻网页的自动获取,自动分类,内容(标题,正文)的自动抽取,新闻图片的自动提取,新闻关键词计算,人名识别,新闻照片里头像的自动识别,内容消重,聚类,搜索等功能。 未来没有运营的打算,不过如果有好的建议我们可能会做一些改进。 牛啦的地址(http://www.niu.la)...
msn上: 紫焰 | 我要买Wii!!!! 说: 一定要给你看的 http://www.dayong.name 6e : 卢亮 说: 不是你计算机中病毒了? 紫焰 | 我要买Wii!!!! 说: 不是 紫焰 | 我要买Wii!!!! 说: 是我推荐你看的 紫焰 | 我要买Wii!!!! 说: 去年看的是05 今年看06 6e : 卢亮 说: 好的,谢谢,1+7=? 6e : 卢亮 说: 等于多少 紫焰 | 我要买Wii!!!! 说: ? 6e : 卢亮 说: 1 +7 等于多少 6e : 卢亮 说: 我看看你是不是机器人 紫焰 | 我要买Wii!!!! 说: 字符加还是数字加 6e : 卢亮 说: 数字 紫焰 | 我要买Wii!!!! 说: 8 紫焰 | 我要买Wii!!!! 说: 不对 6e : 卢亮 说: 好的,认证通过。 紫焰 | 我要买Wii!!!! 说: 是整数加 还是 8进制加 6e : 卢亮 说: 晕倒,看来还是机器人啊...
本周搜索引擎沙龙聚会主题:Linux 网络安全 地点:博客吧(必思浓咖啡) 时间:星期四(4/6/2006)晚上7:30开始 主持人:Alex Alex Lau (AvengerMoJo) is currently working in Novell Beijing focus on OpenSUSE development, before that he was teaching Linux around mainland China. He also lead a technical workshop focus on embedded linux and multimedia. He has been playing with Debian since 96. And joined different open source group, for example mozilla(liveconnect), Postgres(jdbc), ClassPath, DirectFB. His code name is AvengerMoJo. 另外,这个是自由聚会,没有门票,不需要邀请,欢迎任何有兴趣的人参加。...
似乎google进入了网页发布的新阶段。这个新产品就是google page creator,所见即所得的创建网页。 Pages.google.com 这里有快照,可惜当我正在上传图片的时候,google page停止了服务,然后就再也无法登录了。看来是还在测试中。...
刘润在首富的宴请 vs. 雨中的犹豫里写到关于Chris的故事: 南京暴雨的下午。一个男孩在雨中骑自行车。非常的犹豫,不知道应该骑的快一点还是慢一点。他边骑边计算怎样淋的雨会少。他非常苦恼,不知道怎样才好。所有听到的人都在大笑。 看到这里我突然想起来我高中的时候也思考这个问题,可是那个时候没有得到结果,直到我进了大学后通过建模的方法才彻底解决了这个问题。 建模的方法是我在粒子的里学到的,常常一个非常复杂的数学问题,或者一个难以下手的实际问题,都是可以通过建模来实现的。 下面我介绍一下我对这里淋雨问题的建模和求解,当然,简化的的求解方法,不见得全面。 1.我们先对雨进行建模,我们先进行最少参数的简化建模。假设雨点是一个均匀分布和垂直往下降落的物体,就会有以下参数: v 下降速度 r 雨点的大小 n 单位面积雨点的个数 l 两个雨点上下相距的长度 2.下面我们对在雨中行走,奔跑的人进行建模。我们的模型是简化人为一个圆柱体,分两个参数,高度和直径: h 身高 w 就是人的宽度 s 就是人跑或者走的速度 L 两建筑物(点)之间的距离 3.初步的计算 我们对人进行了简化后实际上人能够接收到雨点的地方只有两个: 横截面 和 纵向 我们先计算横截面接受到的雨滴数目 3.1 横截面(头顶接收到的雨量) 这个雨量就应该是人头顶单位时间内接收到的雨量乘以时间 人跑完L 需要的时间: L/s 这个时间共接收到雨量的体积是:(L/s)*v*(pai/4)*w*w 那么全部的雨滴数目: ((L/s)v)*(pai/4)w*w*n/l 全部的水的体积是: ((L/s)v)*(pai/4)w*w*n/l*(4/3)*(pai)*r*r*r 3.2 纵向面(迎面接受到的雨量) 这个雨量就是人身子扫过的横断面乘以长度,这个体积是: w*h*L 全部的雨滴的个数是: w*h*L*n/l 全部的水的体积是: w*h*L*n/l*(4/3)*(pai)*r*r*r 4.总的水量: ((L/s)v)*(pai/4)w*w*n/l*(4/3)*(pai)*r*r*r+w*h*L*n/l*(4/3)*(pai)*r*r*r =n/l*(4/3)*(pai)*r*r*r*(L*v*w*w*pai/s/4+w*h*L*) 因此可以看出来,速度s是总的水量的一个函数,而且随着s的提高,总的水量在下降。因此从这个简单的模型里说,要最少的被雨淋湿,就要跑的快,越快头上的水越少。 5.当雨的方向不是垂直向下 这点我没有进行特别的计算,有兴趣的可以继续求解。...
今天得知google中文的官方博客网志上线了,又刚好是情人节,恭喜一下! 当然,维持google的一贯作风,又一个 beta 版本的黑板报。 不知道百度的官方博客网志何时上线?名字会不会是“大字报”?...
Google总有一些新鲜的玩意,在Google file system(GFS),MapReduce和Lock Service之外,最近的BigTable又颇受关注。 Google 的多个服务Print,Search History,Maps,Orkut,Rss阅读等都是基于BigTable提供支持的。那么Google BigTable到底是什么呢? Google BigTable是Google的一种对于半结构化数据进行分布存储和访问的一个接口(服务)。半结构化数据,例如RSS的数据,虽然有明显的Field但是由于每一个Field的定义颇为宽泛,因此对每一个Filed并非是结构化数据。 下面介绍Google BigTable 的一些细节,BigTable 以下简称BT。 BT是按照行列的格式组建的,是一个多维的稀疏矩阵。每一个BT大约100M到200M,每一台Cell(数据单元)存储大约100个BT。这些存储是基于Google的GFS。 BT的单行的格局应该是如下的格式: URL|Content|Author|.... www.wespoke.com|Content:......|author:6e|anchor:www.wespoke.com;搜索引擎|anchor:blog.wespoke.com;六翼的天使|... 访问这些BT是采用三层哈系定位的方式,其中利用缓存等机制不会造成读取和定位的瓶颈。 Level 1=> [Meta0] Level 2=> [Meta11],[Meta12],.... Level 3=> [Cell1], [Cell2],...... 一个表的定位可以这样:[Meta0] -> [Meta13] -> [Cell2] 处理单个表访问过大的问题可以将这个表分解,或者复制到其它的Cell上来降低压力。对于撤回一台Cell的话,要将其上的100个BT均分到其它的100个Cell上,这样每台Cell的压力平均增加1%,可以忽略。 Google BT也采用了压缩的算法,是根据从新对内容相近的字段进行从新编码进行压缩,据称可到9%左右。从理论上讲,并非对所有的字段进行重新编码压缩,也许只要对最冗余的部分进行压缩既可。 对于重建和更新表,则是根据一定的规则进行从新的编译,例如保留多少个备份,数据段要是某某时间后的等,据此进行从新建立表的内容并重写回系统。由于表的重建是一个非常耗资源的过程,因此将表拆分成多个列,根据这些列的性质建立不同的组,针对不同的组有不同的更新规则,更新后再进行合并,从而达到更新时消耗资源的最小化。 从以上分析上看,BT并非是一个完整的系统,它必须结合一定规则的索引系统才能实现google的Map或者Rss reader的功能。 综合起来,BT拥有以下的特点: 分布式,可扩展,高冗余性,抗压,定位迅速,读写快速,节约存储空间。 这样的表结构在应用上可以符合google的半结构化数据的存储和书写,读取的要求。 原文地址:Google's BigTable。...
博客邮箱终于开发完毕,到现在为止,博客网的两个产品我最满意,一个是图片博客,另外一个就是这个博客邮箱,这两个产品都是2005岁末开发完毕的。 博客邮箱现在尚处于测试阶段,我的博客邮件地址是 luliang@bokee.com ,已经开始使用了 :) 当然,有搜索引擎就有spam,同样,有邮箱就有垃圾邮件。如何防止垃圾邮件呢? 1.Blocking 阻断 阻止包括多种做法,主要的阻止是smtp的IP进行阻断。国际上常常定期公布spam IP list,这些要么是恶意的spam IP或者是被人利用作relay。 另外阻止email address也是常用的一种做法,就是简单的将发信人的email address进行阻止。 2.IP 反查 和用户反查 对发信的IP进行域名的合理性反查 对发送用户的email 地址的有效性进行反查 对邮件对话进行有效性的检测 3.名单 白名单:安全名单 黑名单:spam 邮件名单 灰名单:进行一次的阻止,并等待对方的email server的第二次尝试。因为通常的spam很少进行第二次的发送尝试,而健全的email server则会在第一次投递失败后会再次重新发送。 4.贝叶斯统计算法 这个是根据相关性的原理,对非垃圾邮件和垃圾邮件进行分词词频的相关性统计,得到相应的共同出现时成为垃圾邮件和非垃圾邮件的概率。 5.联结目标源 联结垃圾目标源的邮件有可能是垃圾邮件。 6.邮件运营商根据内容进行数据挖掘 大量的邮件几乎完全一模一样,可能是群发的垃圾邮件 根据用户自己定义的垃圾邮件的规则应用在全部的邮件上 根据大量的用户自己挑选的垃圾邮件进行训练,得到词频序列,并对新进的邮件进行比较测试最大似然。 7.基于分类模型的检测 跟贝叶斯异曲同工,各种的分类算法这里就可以用得上了。 参考文章基于内容的垃圾邮件过滤技术综述 这里的7条,挂一漏万,如有补充,请回复。...
相关搜索是如何实现的? 1.基本的实现: 把大量用户进行搜索的输入词进行分词和索引,然后当每一次进行搜索的时候,对这个“搜索的关键词索引”进行搜索,就得到了相关搜索。 2.相关性的实现 对近意词进行相关性矩阵运算, 得到带有权重的系列词汇的列表, 再进行[1]的基本的搜索. 例如: 相关(学校)=0.6学校+0.3教育+0.2教师+0.2学生+..... 那么学校的相关搜索应该是学校本身的搜索+0.6权重下的学校搜索的相关搜索, 0.3权重下的教育的相关搜索....; 再进行排序得到最相关的搜索...
朋友的公司,招聘以下人员: 1。运维,中高级,Linux,DNS,Security (北京) 2。网站开发:asp.net 开发员,中高级(北京) 3。网站开发:asp.net 2年经验(上海) 如果有适合的可发简历到 sixwings@gmail.com 谢谢!...
昨天新系统测试上线。我的新动力测试〔那些旧时光〕也于当天开始了。新系统现阶段进行公开测试,完全完成后会择日开放并建立老系统的升级接口。 新系统改进的地方主要是用户中心的建立,分布存储和并发分布的设计,最重要一点,新博客融入了很多搜索引擎的理念和技术,因为从一方面上讲,日志,归档,分类不都是搜索么? 感谢在过去几个月里辛苦工作的同事们,因为有你们的努力,才有今天的收获。...
百度mp3的页面流程改变了, 我也花几分钟重写一下新的脚本, bash 上运行, 批量下载 500首mp3歌曲. baidu500.sh.txt 下载 500首mp3下载的时间大约为一个半小时, 当然你要有足够的带宽和空间....
关于 43things.com 有很多的讨论,无论是模式还是概念都有合适的人给了很多合适的解释,但是见到解释为什么是43的却很少,这里做一下解释: 为什么是43而不是34? 1. 人类学家经过大量的统计表明,人的一生中大约能够完成43件相对比较重要的事情,例如求学,换行业,结婚生子等。 2. 人类学家又认为,现代人类的青春期大约为43年,也就是说如果18岁开始创造财富的话大约到61岁就可以/应该休息了。 3. 统计学上表明,人类大约能够比较清晰的记住43本书/电影的剧情。 还有很多,这也就是43thing 选择43 而没有选择 34 的原因。 当然: 4. 似乎Bush现在刚好是美国的第43任总统。43 这么恰当的数字给了Bush,大概是比较无奈的事情。...
Myspace从成长到现在不满2年, 但是已经远远超过了历史上任何的社区的发展速度, 几乎在众多的媒体关注到的它的时候, Myspace已经远远的超过了人们的预期, 牢牢的成为了美国社区类的No1. 昨天晚上见到了Myspace的总裁 Tom ,一个30多岁会说几句中文的年轻人. 针对myspace, 我以前做过一个调研, 当我告诉tom我早些时候专门做过一次关于myspace的调研会的时候, tom很惊讶, 当然也很高兴. Myspace现在有100左右的员工, 网站总的注册人数大约2千万, 并且整体的PV 在年底将追上google, 每个月大约有2百万的新增用户, 说道用户, tom 风趣的说, we will run out of users soon, 毕竟这样的增长速度不出一年美国的全部的年轻人将都成为其会员, 显然需要新鲜的空间和新鲜的模式....
这两个名子都够古怪的了。 craigslist.org从去年一下子进入了公众的视野后,几乎一夜之间就成了一个新的二手市场/社区的标准。更加引起人们兴趣的应该是google map的合作,使得craigslist变的家喻户晓。当然,craigslist是非常容易仿制的,golba[狗不啦] 和 kijiji[客齐集] 都有意成为中国的 Craigslist,其实要成为中国的craigslist,并非一件非常容易的事情。 1. 人气大约是craigslist过去5年内积累的最有价值的东西。 这个积累是长期的,并非一朝一日能够做出忠实的用户的成熟的品牌,那么gobla 和 kijiji 如何才能短时间内召集人气呢? 2. Social items exchange,或者Social information exchange是属于基于SNS 的一种二手市场的新的交易模式,比基于SNS的交友可能更直接,更加容易创造价值。做有价值的交易,这个交易的平台才会有价值。 3. 这里得说一下 Wiki,凡上述的几种模式,全部有很明显的Wiki的痕迹,不是一点,甚至就是一种Wiki的变形。Wiki 的痕迹越来越多的在很多的应用中出现,blog之后,变形的wiki 会不会是一个热点? 4. 谁会是国内 gobla 和 kijiji 的敌人?百度贴吧还是新浪的 iask 。 百度的贴吧不缺少任何上述两者的基本要素,如果改变一下导航和联接方式,看不出有什么理由百度贴吧不能成为craigslist的原因。新浪的 iask本身是一种改进型的 online community的模式,侧重点不同。 5. gobla 和 kijiji 如何创造合理的商业模型? 这个恐怕只有两个网站的负责人能够解答,没有注册的门坎,没有发文的限制,那么就只有依靠跟一些网站的合作,提供增值服务,例如手机发消息,或者是订阅?要么就是最简单,最基本的广告了。 还是很高兴能够看到新一代的online community在中国的出现,当然,我们还是要先做好防止 spammer 的准备。...
截止今天,2005年头4个月我的两个blog流量合计为: Page View为 537万和 154万的独立IP。 这些流量带来的Adsense收入不到400美元,而一个作弊的站长告诉我说如果流量给他,他能让我赚得5000美元,我觉得也许是夸张了点,但是我却相信这位adsense作弊站长的确能够获得比我高得多的收益。 可怜的Google Adsense,如果依照这样的形势,离破灭的一天不远了。...
Rss阅读,Beta版, 很多功能正在策划和开发中。 从1年半前完成中文blog的Rss聚合Blognow就一直在等下一个Rss项目(除了Rss搜索引擎),到现在我大约只能体会出以下两点: 1. Rss本身不是一种阅读方式,Rss本身是一种对内容的抽象出要素的"传输"模式。这里的Rss阅读是针利用这种传输方式建立起来的一种传统的阅读模式。 2. Rss服务如果没有建立集中中心,对Rss进行有效的整理分析。这样的Rss就没有价值,因此单纯的Rss阅读器没有前景远远小于集中方式的Rss阅读工具。...
现在国内比较流行的几种社会性书签里,比较流行的应该是365Key.com,博采和新浪的Vivi。除此之外还有Niu.la和younote等。 众多的网络书签几乎在一夜之间就遍布了中文网络,很多的网站发现这是一个推广自己网站的好的做法,因此就开始通过网络书签进行推广,希望自己的网站的好的内容更容易被别人接触到。 的确,这是一种良好的想法,但是也许你不知道,这些不过是表面的现象,不同的网络的书签会对您的系统的帮助是不同的,例如流量,例如Page rank等。 1] 流量的错觉。 这里要点名批评新浪的Vivi,Vivi 采用的是frame的方式让用户进行浏览,这种方式是能够带来“流量”,而这种流量其实就是我们平时所说的“盗链”的流量。 您也许会为之付出一些网络带宽,但是实际上得到好处的只有vivi,甚至你在Alexa的拍名上也不会有一丁点的收益。(Alexa管什么用,当然没有什么用了,如果你不在乎的话) 2] 品牌的错觉 从365key和博采是直接采用联接出去打开收藏网页联接的方式来浏览的,从用户的体验上讲用户是明白自己进入一个新的网站,能够对新开的浏览器的内容产生一种归属感。而Vivi的模式就不一样了,用户并没有脱离新浪的Vivi的框架,因此很容易对用户造成一种错觉,那么就是这个页面是新浪制作的,而不是来自于其它的内容源。 3] 搜索引擎的page rank的影响 通过收藏能提高您的网页的Page rank么? 当然可能了,不过要看联接方式和联接你的网页的书签的页面的Page Rank的大小了。 下面是各个书签的首页/二级页面的 page rank Vivi 0 ,0 365key, 0,0 博采,0 ,0 niu.la, 4, ? younote, 0 看来只有niu.la的首页的page rank 是4,这个是一个很奇怪的事情。 4] 搜索引擎收录的容量 可以预见书签因为其联接的特殊性,会严重影响到搜索引擎的结果,因此大多的 书签已经被定义为Link Spam的一种,下面看看搜索引擎下各个收录的结果: Baidu: 服务名/全部/有效收录 vivi/1660/220 365key/1/1 博采/4/1 niu.la/155/2 younote/1450/20 Yahoo.com/yisou.com 服务名/全部/有效收录 vivi/47/42 365key/0/0 博采/31796/? niu.la/2/2 younote/812/770 google.com 服务名/全部/有效收录 vivi/33,000/ 365key/101,000/? 博采/92,500/? niu.la/7,050/7000 younote/15,900/? 因此基本可以看出网络书签已经被国内的搜索引擎定义为 link spam的一种来源,而google似乎网开一面,当然也许是没有注意到,这种现象。...
什么是Online Judge? Online Judge 是指在线的裁判系统。她可以对程序原代码进行编译和执行,并通过预先设计的测试数据来检验程序原代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转交给一个裁判程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户一个状态。 通常出的题目都不会太难,但是解决的方案却一定多种多样,例如找出10000以内质数的个数,可以用C写,也可以Pascal等,尽量短小,速度快,内存占用少是一个普遍的目标。 西班牙的Universidad de Valladolid的onleline Judge系统每天大约有7000人访问,题目和解答也大约在1000以上,可谓是最大的Online Judge系统之一了。国内也有几个大学有了online judge系统,具体可以参考这里: 大家来玩OnlineJudge。...
在最关键的时刻我抛弃了SAS现在看来是非常明智的。 统计软件我到限止为止接触过4,5个,其中最复杂的就是SAS了,而我以前的代码就是一个合作者用SAS写的,我后来要改变里面的一些流程,简直是抽一发而动全身。不单运行老有问题而且12太服务器的版本费就够我苦恼一针子了。试用过Matlab,功能非常大,可惜我是杀鸡。PAW,速度太慢。。。 我正苦于五路可走的时候,有高人提醒“为什么不去试试R呢,免费的。”,一句话惊醒梦中人来形容也丝毫不为过。 R是GNU,最初开发于Bell Lab(后来到了Lucent Tech),跟S/S-plus语言接近的一种交互式统计工具。内部提供线型,非线型,经典统计,时间序列,分类,聚类等基本功能。 当然,最重要的是R能够运行在Linux上。 比较SAS,SAS的数据结构很强,可是运行起来消耗资源不说还常常core dump。Matlab最值得称赞的功能是解析运算,例如积分快的一榻糊涂,这个我还记得大学的时候去运行Zebra的解析式的微分和积分,还可以找出数学工具书上的积分公式的错误来。 然而SAS和MatLab都要付费,这一点上让我对他们的期望太高了。如果一旦没有达到我心目中设立的那个门坎,例如我希望能够远程控制,希望编写我自己的脚本方便的交互调用。。。,我只好认为这样的统计软件在性能价格比上要输于R,尽管R的说明书只有100页不到,而SAS有长达上万多叶的手册。 R这个软件我后来问了一些人,发现做统计的人也常用的,特别是学校里面。原因最主要的就是免费,功能也不错。像我连操作系统都一直找免费的用的人,没有理由拒绝R而选择其它的昂贵的工具。 现在的Open Source逐渐开始形成一种市场,在美国有一些公司利用多个opensource集成在一起可以为公司提供一些CMS,提供一些关于Open Source软件应用配置方面的指导(例如Nutch),从中获取一些咨询费用,同时也可以为企业节约一笔不菲的费用,当然如何选择Open Sounce便显现的非常重要,以免决策失误而得不偿失。 那么这个市场的起来最直接的原因是Open Source本身的不完善,就是本身没有很好的说明,技术支持,也就造就了这样的一个市场。可以说努力劳动的人创造了产品但是却没有创造价值,体现价值的却是能够合理应用这些产品的人。...
事情过去很久了吧(一个多月了),我想我亲自来澄清一下一些新闻里关于〖博客中国和博客动力〗合并的事情上面有关我的学历的错误。 我许久不愿意说这些事情,因为〔博客中国〕发表关于网站合并声明的新闻稿我并没有看到,上面的错误当天已经经过新浪造成了雪崩方式的转载,等我看到各个新闻转载站点的以讹传讹的时候,已经无法阻止了。这点以后我会在加强博客中国的对外宣传管理上下功夫了。 只所以挑选这个时候来对我自己进行一个说明,主要原因是不想在当时的情况下火上浇油,这并不表明我是一个软弱的人,更相反,我有我的原则。看到很多人大义临然去谈一个人的人品的时候,我想说去谈论别人人品的事情千万不要这么轻率地去做,因为这无疑会使得别人一同样的方式来谈论你,而且最好要对自己的人品有所认识。 这里来澄清两点: 1. 本人卢亮,现在就读于美国Texas的Dallas的Southern Methodist University(SMU) 物理系,预计今年5月完成博士学位,因此正确的说法是博士生。 2. 本人卢亮,2000年8月至2001年一月在Texas A&M University读书,期间获得恭亲王奖学金,一学期后转学到SMU。 之前或者更详细的简历请看这里:个人简历-卢亮 ,有疑问请发email 给我:sixwings # gmail.com ,有人说我学识/技术很差,这一点我不做辩解,因为学海无涯,我本一做技术和设计的人,知道这世界上牛人多如牛毛,我虚心接受便是了。 这位仁兄 指出我的【搜索引擎研究】内容肤浅,我自当接受,希望未来能够做出让这位仁兄看的上眼的东西。 感谢不少认识的和不认识的朋友给我提醒和帮助我辩护,然而希望以后还是不要进行这样的辩护,因为为我辩护而被划归一类并被上黑锅就不好玩了。...
基于文本的信息自动聚类的算法很多,我以前介绍过一些,比较流行的算法有我以前提到的KNN和SVM,在过去的一段时间里,空闲的时间基本上都用来研究能否快速的实现自动聚类。上周终于完成了文本自动聚类的兼并算法,能够相对快速的实现文本信息的自动聚类。下面就介绍一下信息自动聚类的实现,希望能够帮助大家了结google news 的新闻如何进行自动聚类工作。 1] 什么是简并算法 简并算法是指在文本信息空间内寻找任何两个最相关的文本信息,并将之简并成一个文本信息,从而实现信息数量的收缩。 2] 如何实现 1. 简并算法的实现通过比较整个信息空间内的所有文本的相关性(相识性),得到相互之间的相关性后两两(注)进行配对。配对的要求是这两个文本信息的相关性最大,例如A 找到了文档B,那么B 也一定找到最相关的文档就是A 。 注,某些情况A 最相近的文档是C ,那么B 而B 最相关的文档也是C ,存在一种情况,A,B,C 三者之间自恰,就是构成空间信息最近的一个三角形。 2. 得到了最相似文档后,将只进行平均化,或者简单的迭加。 3. 信息空间中独立信息的数量会减少到原来的一半以下,然后重复实现1 的过程,在进行兼并。 4. 信息最后简并到唯一的一个信息,就是整个信息文本的平均值。 5. 画出信息树的结构,就能够根据要进行规模不同大小的聚类进行自动聚类了。 如下的信息树结构是对我进行测试的一个小样本大约70个文档进行信息简并算法得到的图像: 完整的树结构可以看这里: 从上图可以看出,经过自动聚类后类别0,2具有最相近的关系然后进行兼并后和类别5进行了简并,然后在和类别6进行了简并,最终和另外一支的信息进行了最后的简并,聚成唯一的全部的信息简并。 图中矩阵的明暗表明了信息之间的相关程度,矩阵经过对角化后可以明显看到聚类的效应。 本试验的文本信息和分类结果下载: 下面是我进行文本聚类的文档公布下载『一共70个文档』,我产生的文本的相关性的矩阵下载。 简并算法我也实现在大样本的聚类上,大约2000个文档进行自动的分类后进行聚类的运算时间大约为2个小时「抱歉,我基本上是用shell scripts 和perl scripts 来写代码」,如果先进行聚类在分类大约要5个小时。 最耗时间的过程是产生相关性矩阵,2000X2000有400万的元素,当然不会那么快了。 经过实践,简并算法的自动聚类还有很多需要改进的地方,例如最关键的是信息之间的相识性的计算,我采用了最大似然(Maximum Likelihood Fitting)的拟合,在计算上比较消耗时间,以后可以改变成其它的算法。 文本的自动聚类可以看到Google New上面已经相当成熟,这里的简并算法未来将为博客中国的新闻搜索提供支持,希望能够提供较好的机器新闻。 - 卢亮 2005年2月20日 参考文献: Yiming Yang, S. Slattery and R. Ghani. A study of approaches to hypertext categorization (ps.gz) Journal of Intelligent Information Systems, Volume 18, Number 2, March 2002. Yiming Yang and Xin Liu A re-examination of text categorization methods. Proceedings of ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR'99, pp 42--49), 1999. Soft Clustering Criterion Functions for Partitional Clustering Ying Zhao and George Karypis (A poster paper appears in CIKM 2004) Web Page Categorization and Feature Selection Using Association Rule and Principal Component Clustering Jerome Moore, Eui-Hong (Sam) Han, Daniel Boley, Maria Gini, Robert Gross, Kyle Hastings, George Karypis, Vipin Kumar, and Bamshad Mobasher...
这个事情本来是不原意提起的,只是很多人认为我做到姓名的搜索误差太大,这里也就说明一下,以免让大家认为蒙在鼓里。 1. 查查全中国有多少人的名字和你一模一样 是纯粹的娱乐性产品。 2. 计算机非人口普查部门和公安部门,因此任何输入的词语都将给予解释。 下面介绍本系统的算法,如果你系高中毕业,对概率统计有一定的认识,可以继续: 算法A : 前文已经声明,我通过网络采集了大约40多万人的姓名,这期间大约有20万的姓名是独立的,现在这个数据库还在变大,今天已经大约有100万的姓名了。 我们假设在这100万的姓名分布和全国13亿人的姓名的分布相近,那么当你搜索“张三”这样一个姓名的话,如果我的数据库里有70个张三的话,那么全国按照样本的分布就应该是 70*1300000000/1000000 = 91000 就是说全国有91000个人都叫张三。 误差分析 Sigma = f_sigma(70) + f_sigma(1300000000) + f_sigma(1000000) = 11050 就是说,全国张三最多是 91000+11050 = 102050 个张三,最少91000-11050 = 79950 个张三,以上为70%左右的置信区间。 算法B: 根据姓名的概率 = 姓的概率*名的概率 建立在姓和名的概率分布是独立的分布,P(姓, 名) = P(姓) * P(名) 在100万的数据里,我大约收集到2800个姓,和24000个名,这样关于姓和名的分布就很合理的建立起来了。例如当我们输入“张三”的时候,算法将是先计算“张”作为姓的概率,然后计算“三”作为名的概率,然后将两者相乘,再乘以全国的总人数就得到多少个张三。 P(张) = 0.602% , "三"作为名的概率为 P(三) = 0.4%,因此 Num(张三) = P(张) * P(三) *1300000000 = 31200 因此根据此算法得到张三全国一共有31200个。 误差分析,误差来源主要是来自2方面,姓、名的统计误差,姓与名之间的非独立分布的系统误差。例如一个人名子可以叫“刘八”却一般不会叫“王八”,因此实际上姓和名是一个关系的分布。 后续: 1] 对于这样一个查询自己姓名的系统,我花了大约1个小时写代码和算法,结果完全没有想到后续竟然有那么大的波澜,在短短的几天内,差不多有30万的人访问查询,最后不得不将我blog上的页面直接定向到了booso.com并且关闭了留言。 2] 由于这30万人的访问,又给我的数据库里添加了大约30万的数据,这样实际上数据将更加趋于完整和实效,数据源的扩大,将进一步提高查询的精确度。...
以前做防止Spam comment垃圾留言的时候做了,长时间没有看都忘记了,朋友问起提醒了我,写在这里: mt-tb.cgi 是处理 trackback 的程序,这个程序拿到了 trackback 后进行插入数据库处理。 trackback 的数据结构定义在: lib/MT/TBPing.pm 里面,有如下结构: my $ping = MT::TBPing->new; $ping->blog_id($tb->blog_id); $ping->tb_id($tb->id); $ping->title('Foo'); $ping->excerpt('This is from a TrackBack ping.'); $ping->source_url('http://www.foo.com/bar'); $ping->save or die $ping->errstr; 其中 'excerpt'就是文字描述部分,可以进行监查有没有中文的判断,如果没有中文,就当做spam处理,直接中断: if ($ENV{'REQUEST_METHOD'} eq "POST") { my $tck = param('excerpt'); die if($tck ne "" && $tck !~ /[\x80-\xff]/); } 将以上四句话加到 mt-tb.cgi 里面 use strict; 后就应该起作用了。...
将下面的连接用鼠标拖到Firefox的工具条上,就可以在firefox浏览任何叶面的情况下直接点击 Niu La It!来进行收录。 Niu La It! 正在开发firefox的插件,最后会类似blog it的mozilla/firefox的插件。 看下图的说明: 下面是博采的代码,加入博采: 博采!...
很有意思的一则报导“盖茨称新技术将把大部分垃圾邮件拒之门外”。 盖茨据说每天收到400万封垃圾邮件,而且能有效的过滤,估计是全世界最完善的垃圾邮件处理系统了。 说说我自己的垃圾邮件吧: CERN的邮件帐户一天大约有200封email,基本上都是垃圾邮件,用了Procmail进行匹配过滤,不过效果一直不好,后来做了MUA的一个插件,可以删除大部分的垃圾邮件,可是也时常能从过滤的邮件里找到有用的信件。 最近开始使用gmail,一开始真得不错,基本上没有多少垃圾邮件。可是冰败如山倒,不知道谁转载我的文章的时候将我的email也”好心“地给公开了,结果现在每天差不多也有100多封垃圾邮件。 gmail的spam email处理根据我的观察基本上按照以下几个原则: 1] 发信人,发信IP,发信网关的black list 2] 用户自己进行匹配 3] 贝叶斯统计 1] 和2] 基本上都已经没有改进的余地了,3] 的贝叶斯统计广泛的应用在spam email的处理上,通常有个人的bayes 统计库或者系统整体的一个贝叶斯数据库,估计gmail是针对每一个用户建立了一个与帐号相关的贝叶斯统计库。 曾经有几天我发现来自有一个订阅email list的所由信件全部自动被送到了spam email里,我就将他们恢复并标明是”安全“email,昨天起发现gmail已经不在将这些email送到spam email信箱里了。可见gmail基本上对未知的email是采用贝叶斯学习和校验的方法来实现的。 随便说一下,贝叶斯统计样本越大越精确,盖茨每天有400万的垃圾邮件简直是一个非常好的垃圾邮件学习库,所以盖兹能够有更强大的过滤功能也是因为众多的垃圾邮件帮助他完善这个贝叶斯学习的结果。 还有一些方法也许也会有用: 1] 对于中文用户来说,如果email里面没有一个全角字符出现,那么扔了吧。 下面是帮助Mt 系统禁止spam的一种方法了。 use CGI qw(:standard); if ($ENV{'REQUEST_METHOD'} eq "POST") { my $tck = param('text'); die if($tck ne "" && $tck !~ /[\x80-\xff]/); } 2] 对于整个邮件系统可以找出众多用户email里的 url,类别,关键词,判断邮件之间的相似性 。例如gmail 系统可以将每一个小时所有用户的新收到的email里的link 做一个统计,发现某一个联接出现很多次,估计是群发的垃圾邮件。 准备发文的时候车东突然提出一个 webmap 的想法,我发现这个绝对是一个防止spam email的绝好方法 ,相信一定会有非常好的作用。...
多次被人问到这个问题,看来需要做一点说明,这里简单介绍一下搜索引擎的机器爬虫的制作和一些基本要注意的事项。 说的简单易懂一些,网络爬虫跟你使用的〖离线阅读〗工具差不多。说离线,其实还是要跟网络联结,否则怎么抓东西下来? 那么不同的地方在哪里? 1】 网络爬虫高度可配置性。 2】 网络爬虫可以解析抓到的网页里的链接 3】 网络爬虫有简单的存储配置 4】 网络爬虫拥有智能的根据网页更新分析功能 5】 网络爬虫的效率相当的高 那么依据特征,其实也就是要求了,如何设计爬虫呢?要注意哪些步骤呢? 1】 url 的遍历和纪录 这点 larbin 做得非常的好,其实对于url的遍历是很简单的,例如: cat [what you got]| tr \" \\n | gawk '{print $2}' | pcregrep ^http:// 就可以得到一个所由的 url 列表 2】多进程 VS 多线程 各有优点了,现在一台普通的PC 例如 booso.com 一天可以轻松爬下5个G的数据。大约20万网页。 3】时间更新控制 最傻的做法是没有时间更新权重,一通的爬,回头再一通的爬。 通常在下一次爬的的数据要跟上一次进行比较,如果连续5次都没有变化,那么将爬这个网页的时间间隔扩大1倍。 如果一个网页在连续5次爬取的时候都有更新,那么将设置的爬取时间缩短为原来的1/2。 注意,效率是取胜的关键之一。 4】爬的深度是多少呢? 看情况了。如果你比较牛,有几万台服务器做网络爬虫,我劝您跳过这一点。 如果你同我一样只有一台服务器做网络爬虫,那么这样一个统计您应该知道: 网页深度:网页个数:网页重要程度 0 : 1 : : 10 1 :20 : :8 2: :600: :5 3: :2000: :2 4 above: 6000: 一般无法计算 好了,爬到三级就差不多了,再深入一是数据量扩大了3/4倍,二是重要度确下降了许多,这叫做“种下的是龙种,收获的是跳蚤。” 5】爬虫一般不之间爬对方的网页,一般是通过一个Proxy出去,这个proxy有缓解压力的功能,因为当对方的网页没有更新的时候,只要拿到 header 的 tag就可以了,没有必要全部传输一次了,可以大大节约网络带宽。 apache webserver里面纪录的 304 一般就是被cache的了。 6】请有空的时候照看一下robots.txt 7】存储结构。 这个人人见智,google 用 gfs 系统,如果你有7/8台服务器,我劝你用NFS系统,要是你有70/80个服务器的话我建议你用afs 系统,要是你只有一台服务器,那么随便。 给一个代码片断,是我写的新闻搜索引擎是如何进行数据存储的: NAME=`echo $URL |perl -p -e 's/([^\w\-\.\@])/$1 eq "\n" ? "\n":sprintf("%%%2.2x",ord($1))/eg'` mkdir -p $AUTHOR newscrawl.pl $URL --user-agent="news.booso.com+(+http://booso.com)" -outfile=$AUTHOR/$NAME...
google brainy test/exam 就是流传胜广的传说中的google 的21道 GLAT 考试了。今天为大家揭开这个面沙,你也做作看。 10月底,Google在美国《麻省技术评论》、《LinuxJournal》、《Mensa》、《今日物理》等几本专业杂志上,刊登了一份“Google实验室能力倾向测试”。 试卷开头,蛊惑地写着“试试看!把答案寄回Google,你有希望去Google总部参观,并成为我们其中一员”。 我看了这些题目,虽然古怪,但是也不算有困难,有兴趣的人可以做完了邮寄给google公司,也许会得到一个工作机会呢。 注:不要向我要答案。...
XML 在搜索引擎的低端起到了非常重要的作用,可是由于相当多数的网络上的Rss feed或者XML feed都是直接从数据库文件生成的,因此极有可能包含有一些非常字符,而这些字符在XML进行Parse的时候就会带来 Invalid Unicode character (0x0) 这样的错误或者是org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x0) was found,如何解决这样的错误? 先看看Unicode的一些基础知识: Unicode 最初设计是作为一种固定宽度的 16 位字符编码。在 Java 编程语言中,基本数据类型 char 初衷是通过提供一种简单的、能够包含任何字符的数据类型来充分利用这种设计的优点。不过,现在看来,16 位编码的所有 65,536 个字符并不能完全表示全世界所有正在使用或曾经使用的字符。于是,Unicode 标准已扩展到包含多达 1,112,064 个字符。那些超出原来的 16 位限制的字符被称作增补字符。Unicode 标准 2.0 版是第一个包含启用增补字符设计的版本,但是,直到 3.1 版才收入第一批增补字符集。由于 J2SE 的 5.0 版必须支持 Unicode 标准 4.0 版,因此它必须支持增补字符。 对增补字符的支持也可能会成为东亚市场的一个普遍商业要求。政府应用程序会需要这些增补字符,以正确表示一些包含罕见中文字符的姓名。出版应用程序可能会需要这些增补字符,以表示所有的古代字符和变体字符。中国政府要求支持 GB18030(一种对整个 Unicode 字符集进行编码的字符编码标准),因此,如果是 Unicode 3.1 版或更新版本,则将包括增补字符。台湾标准 CNS-11643 包含的许多字符在 Unicode 3.1 中列为增补字符。香港政府定义了一种针对粤语的字符集,其中的一些字符是 Unicode 中的增补字符。最后,日本的一些供应商正计划利用增补字符空间中大量的专用空间收入 50,000 多个日文汉字字符变体,以便从其专有系统迁移至基于 Java 平台的解决方案。 因此,Java 平台不仅需要支持增补字符,而且必须使应用程序能够方便地做到这一点。由于增补字符打破了 Java 编程语言的基础设计构想,而且可能要求对编程模型进行根本性的修改,因此,Java Community Process 召集了一个专家组,以期找到一个适当的解决方案。该小组被称为 JSR-204 专家组,使用 Unicode 增补字符支持的 Java 技术规范请求的编号。从技术上来说,该专家组的决定仅适用于 J2SE 平台,但是由于 Java 2 平台企业版 (J2EE) 处于 J2SE 平台的最上层,因此它可以直接受益,我们期望 Java 2 平台袖珍版 (J2ME) 的配置也采用相同的设计方法。 不过,在了解 JSR-204 专家组确定的解决方案之前,我们需要先理解一些术语。 代码点、字符编码方案、UTF-16:这些是指什么?...
google 购买了Keyhole ,目的是提供高清晰度的三维空间图像。听起来似乎是一个很动人的计划。 google的意思是我们未来可以在办公室里看到自己家后院的松鼠/或者是狗儿。 更详细内容来自新浪北美如下: 新浪科技讯美国东部时间10月27日09:00(北京时间10月27日21:00)消息,Google今天宣布,该公司收购了总部位于美国加州山景城(Mountain View)的Keyhole公司(Keyhole Corp.),但没有透露此次收购的财务细节。Keyhole是一家从事数字地图测绘的公司。 Google负责产品管理的副总裁乔纳森-罗森伯格(Jonathan Rosenberg)表示,“收购Keyhole公司将使Google的用户拥有一个新的、功能强大的搜索工具,使用户可以看到地球上任何地点的三维图象。Keyhole对于Google来说是一个很有价值的补充,它使Google能够更好地组织世界各地的信息并使之更加有用。” 拥有互联网接入的用户只需输入一个地址或者其它地点信息,Keyhole的软件就会对数据库进行搜索,并将搜索地点的数字图像呈现在用户的电脑屏幕上。这个交互式的软件使用户有了更多选择,包括放大图像,搜索旅店、公园、地铁甚至提款机等其它信息等等。与传统的测绘技术不同的是,Keyhole能够产生动态的三维交互信息。...
http://www.wespoke.com/cgi-bin/mt/mt-tb.cgi/445
上周美国系统网络安全协会(SANS Institute)公布了UNIX的10大安全隐患,从我自己使用了10年UNIX的经验出发,基本上都是据之有理,鉴于没有标准的隐患对策,我简单阐述以下这些隐患的对策。 美国系统网络安全协会公布的Unix十大安全隐患排行榜: 1 BIND域名系统(BIND Domain Name System) 2 Web服务器(Web Server) 3 认证(Authentication) 4 版本控制系统(Version Control Systems ) 5 电子邮件传输服务(Mail Transport Service) 6 简单网络管理协议(Simple Network Management Protocol) 7 开放安全连接通讯层(Open Secure Sockets Layer) 8 企业服务NIS/NFS 配置不当(Misconfiguration of Enterprise Services NIS/NFS) 9 数据库(Databases) 10 内核(Kernel) 1] Bind 的NIS 服务以往常常和NFS服务绑定在一起,提供局域网内用户的统一登录和远程的目录文件共享。 其漏洞在如果hacker控制局域网内任何一台unix/linux的服务器的local root帐户,可以通过su进入任何其它的用户的文件系统,简直是弱智的无以伦比。 这个漏洞我5,6年前用过竟然到今天还没有消除。 2] Web服务器(Web Server) 就是通常大家使用的各种 httpd server,鉴于apache 2.0 是最流行的web server,这里说明一下webserver的隐患。 cgi的配置,默认的conf 以及apache module都有很广泛的隐患,通常是通过升级来达到消除这些隐患,但是终究不是解决办法。 3年前我的apache webser曾经感染过wrom的病毒,可见其安全性之差。 3] 认证(Authentication) ,这里的隐患也不少,例如ssh 就曾经是一个众所周知的一个大漏洞,著名的电影《matrix II》里就使用了这样的指令: ssh host -l root -v 来监查ssh 的版本和漏洞。 4] 版本控制系统(Version Control Systems ) 这个我不熟悉,不做评论。 5] 电子邮件传输服务(Mail Transport Service) 这是一个耗子窝,无论SMTP,Qmail等所有现在运行的 MTS 都有很多的安全隐患,并且在防止hack 和 spam email 上都有许多要做。 当系统管理员打开25端口的时候,需要知道这个端口是一个仅次于80 端口被hacker关注的服务。建立信任的IP以及好的email relay机制非常重要。 6] 简单网络管理协议(Simple Network Management Protocol) 这个简直不用讨论了,禁止使用。 7] 开放安全连接通讯层(Open Secure Sockets Layer) 明码广播曾经使得多少hacker使用简单的sniffit 工具(监听工具)得手,telnet 的明码传播曾经是hacker的最爱。 采用硬件的MAC绑定技术,或者干脆消灭ftp/telnet 等老古董的服务甚至client程序。 8] 企业服务NIS/NFS 配置不当(Misconfiguration of Enterprise Services NIS/NFS) 这个见[1] ,不当的NFS可以使得外部的人mount系统读取文件,甚至修改文件。 NFS最好禁止。 9] 数据库(Databases) 数据库也曾经是一种非常不安全的服务,因此提倡将数据库服务界入子网内部,企业内网要比暴露给整个Internet安全的多。 10] 内核(Kernel) 请找你的unix硬件厂商和跟踪最新的消息。 备注,基本上一个系统开启的服务越多,越容易受到攻击,安装的gnu软件越多,越不稳定安全。防火墙是非常必要的,另外每天检查日志也是一个好的习惯。...
Using rss/xml feed to make a search engine is a shortcut if you just want a search engine. Simple one what I will do in future: Larbin(crawl)-->all links-->sort and find rss-->carwl rss-->paste it in Data base-->search API-->Done. Excite News...