06 2013 档案

摘要:接着上文【基于统计的无词典的高频词抽取(一)——后缀数组字典序排序】,本文主要讲解高频子串抽取部分。如果看过上一篇文章的朋友都知道,我们通过 快排 或 基数排序算出了存储后缀数组字典序的PAT数组,以及PAT数组内,每每两个子串的最大公共前缀数组LCP。我们可以通过LCP来计算出一个字符串在语料库中出现的次数。那怎么计算呢?我们先看看下面一个简单的例子:【例】我们还是以上一篇文章中的字符串“abcba”为例,经过对后缀数组字典序排序(过程参照前一篇),可以得到以下的结果:由上图中的PAT和LCP两个数组我们可以知道:“a”的频率为2,“b”的频率为2。计算方式其实很简单,从左扫描LCP数组,如 阅读全文
posted @ 2013-06-19 22:58 三度空间 阅读(2187) 评论(9) 推荐(1) 编辑
摘要:中文全文检索中很重要的一个环节就是分词,而一般分词都是基于字典的,特别是对于特定的业务,需要从特定的语料库中抽出高频有意义的词来生成字典。这系列文章,就一步一步来实现一个从大规模语料库正抽取出高频词的程序。抽词的过程如下图:本文先讲解“子串字典序排序”部分,也就是字典序排序部分。本文使用两种算法:快排 和 基数排序,两种算法各有应用场景,快排在分析长度20万字符串时所用的时间明显低于基数排序,但是,超过时,基数排序明显有优势;本文仅仅对于实现的算法做简单分析和实现,真正生成环境中,将引入多线程,分布式处理等优化手段,这里不提及。这里,我要先用通俗一些的话语来解释一些概念,有不正确的地方,欢迎指 阅读全文
posted @ 2013-06-14 23:00 三度空间 阅读(1986) 评论(5) 推荐(3) 编辑
摘要:【园里很多前辈写过关于Levenshtein Distance算法的文章,对算法原理有很深入的剖析讲解。我这里班门弄斧,尽我所能,将这个算法以更加通俗易懂的语言来阐述,有何纰漏,请指出和见谅】Levenshtein Distance,编辑距离算法,是指从字符串A变成字符串B,所需的最少编辑(增,删,插入)次数。应用也相当广泛,这里我们用来求解两个字符串的相似度。算法原理我就不再说明(注,对于算法原理,请参照 http://en.wikipedia.org/wiki/Levenshtein_distance),这里只图解实现的过程。【例子】假设现在有源串“jary”与目标串“jerry”,求源串 阅读全文
posted @ 2013-06-06 10:52 三度空间 阅读(4575) 评论(15) 推荐(5) 编辑
摘要:有时,简单的算法也有其实用的意义,由于之前公司内部搜索引擎优化的需要,我根据《编程珠玑》中查找英文单词变位词的算法,来实现搜索纠错的功能。在搜索时,有时记不住单词,会出现拼写错误的情况,例如,搜索“height”时手误,搜索了“heigth”,那么我们要在搜索不到的情况下,给他变位词作为提示(注:因为公司内部搜索,该算法已经够用,真正的搜索引擎应该是采用更高效的算法,请有经验的前辈赐教)。算法分三步:①对单词签名; ②根据签名的字典序排序; ③根据排序结果挤压,使变位词聚合在一起;a) 快速单词签名算法(当前仅使用于英文单词,如果包含其他字符,需做拓展):鉴于英文字母可枚举且数量只有26个,故 阅读全文
posted @ 2013-06-04 21:33 三度空间 阅读(1889) 评论(8) 推荐(2) 编辑
摘要:在平常项目中,偶尔也会涉及一些前端的设计,但毕竟不是专业的,所以一直想要系统的学习一下。最近辞职了,等待入职新公司的期间,有空折腾学习一些CSS3的知识。今天就从一个简单的圆形菜单的实现,来总结一些最近学习的收获。效果图如下:下面,就来看看这个圆形半透明的菜单如何实现:1. 我们使用一个 ul 来制作菜单,代码如下: 1 <ul> 2 <li> 3 <a href="#"> 4 <span>首页</span> 5 </a> 6 </li> 7 <li> 8 <a href= 阅读全文
posted @ 2013-06-03 00:13 三度空间 阅读(4456) 评论(24) 推荐(4) 编辑

点击右上角即可分享
微信分享提示