0-家人
0-新酷应用
startups
友情链接
同事
日历
2010 九月 一 二 三 四 五 六 日 « 八 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 -
最近文章
搜索
近期评论
- Think In LAMP Blog » Blog Archive » PHP每月通讯(2010年9月) 在 PHP中的一些language construct 上的评论
- Think In LAMP Blog » Blog Archive » PHP每月通讯(2010年9月) 在 稍显寒酸的一个PHP框架:supermin 上的评论
- Tokyo Cabinet乱贴(未整理,仅供自己做笔记) « LAMP架构网站开发指南|Kenneth@Beijing2010 在 Tokyo Cabinet:另一个DBM实现 上的评论
- Anders 在 cloudapi 悄然上线,欢迎各方人士拍砖 上的评论
- key 在 新博开张 上的评论
- 怎么样 在 新博开张 上的评论
- timberland boots uk 在 新博开张 上的评论
- 小宝 在 稍显寒酸的一个PHP框架:supermin 上的评论
- fengfeng 在 稍显寒酸的一个PHP框架:supermin 上的评论
- deli 在 好色的程序员:怎么加上彩色显示 上的评论
标签归档:中文分词
社区全文检索引擎Hyper Estraier 学习笔记[3]
经过摸索,我决定给HyperEstraier加上由Hightman写的scws支持,使之支持中文分词。 实地看了代码之后,发现Hyperestraier的结构划分并不好,这可能决定了他只能是某些Hacker的心血之作,而不适用多人协作开发,大规模推广应用。这是旁话。 既然找到分词默认是使用的estraier.c的est_break_text函数,那我的目标就是改造这个函数,现在这个函数被我改成了: scws_t seg; /* Break a sentence of text and extract words. */ void est_break_text(const char *text, CBLIST *list, int norm, int tail){ // hack by renlu.xu CBLIST *words; const unsigned char *word, *next; unsigned … 继续阅读
文本挖掘,构造垃圾站[一]
最近为ruby,ruby on rails的灵活和魔幻而着迷。爽。 上上周一个同事给我们介绍了自然语言处理的一些知识,觉得很不错。事实上虽然是雅虎公司的一名工程师,但是因为我不是搜索/邮箱/平台研发这些部门,基本上没有接触到比较深一点的东西,也许对于这些部门来说很简单的东西,对于我来说还是很难以理解的。 课后自己去找了些东西看了看,然后有这样一思路,可以用来构造一个垃圾站。 基本思路是: 1.首先我需要一个spider.这个spider由两个部分完成,第一部分是由一个feed管理程序来不停地从网上读rss回来,第二部分是常规spider,跟nutch什么的spider无异. 2.第二部分是预处理。这一部分包括:纯文本化、去垃圾。 3.第三部分是运算:分词,关键词提取,提取相关文章。 4.热点呈现,网站部分。 具体实现: rss 的spider要简单一些,但是根据抓回来的内容,也是很多质量不高的种子。比如新浪新闻的rss基本没有正文,而有些feedsky的种子后面跟着一个小尾巴(广告),需要处理。 对于没有正文的,很简单,将之平均长度算出来,如果某个种子的平均长度都很短,就将这个种子丢弃。 对于很多内容不咱的,但是广告链接一大堆的,也有办法:先纯文本化,一个文档就细化为一系列的段。html标签有的去掉了,有的换成空格了.这时将段按空格分组,如果没组长度都很短,即文章内容中若是大量充满着html标签,这样的多半是广告或是垃圾链接。 比如这一段: 2006-09-11 charon 写道 我现在对这类动态语言的非本质实现抱很大的怀疑态度。 最近除了这个新闻以外,IronPyton(python的.net版本)1.0也发布了。但看了一下,感觉虽然不是特别差,也是差得可以。也许这是给那些熟悉.net同时又想找一个动态语言的人一个选择? 两个语法相同但是标准库有差异(jruby可能语法上也略有差异),支持库有重大差异的语言,还能算是一个语言吗? 当年不论出于什么原因,Sun对于MS污染java的行为举起了大棒,现在这几个开源社区的动态语言,却纷纷搞出这么些方言来,不好说阿。 IronPython和JRuby可能还是不太一样的。dotnet平台实际上提供了自己统一的dotnet fraemwork类库,所谓不同的编程语言支持,更像是一种语法糖衣而已。但是JRuby其实实现了大部分ruby自己的库,用JRuby并非仅仅用一个ruby语法而已,关键是ruby本身的方便的库和rails框架,至于Java库的支持,只是辅助了。 Sun对JRuby的支持表明了一种态度,这种态度是承认ruby在企业快速开发方面的优势,而对ruby提供更好的支持。而Microsoft支持的IronPython更像是用python语法写C#程序那种感觉,换汤不换药。 charon robbin 浏览: 1653543 … 继续阅读
150行代码,搞定中文分词
中文分词一直是一个看起来似乎比较神秘的东西。记得java中的lucene好像自带了两个分词器。一个是按汉字分,就是一个字分成一个词。比如”我要到饭馆吃饭“,就被分成”我/要/到/饭/馆/吃/饭”.别一个是相邻的两个字分成一个词,分出来的结果是”我要/要到/到饭/饭馆/馆吃/吃饭”.然而这两种虽说在做搜索时建索引什么的操作时也是相当有用的,但是毕竟是一种权宜之计,咱不能一直停留在这个水平上。 下面是来自Rlucene的一段示例代码,154行,利用sogou的词库搞定了中文分词。代码如下: #! /usr/bin/ruby require “socket” #通过网络得到分词结果 def segChinese_net(line) @conn=TCPSocket.open(“localhost”,1099) @conn.write(line) line=@conn.read return line.split(” “) end @f= open(“dict/sogou.txt”) @datas=@f.read.split(“\n”) @f.close @f2=open(“dict/firstword.txt”) @firstwords=@f2.read.split(“\n”) @f2.close @maintable=Hash.new() @firstwords.each{|x| @maintable[x]=[x] } @datas.each{|x| @maintable[x[0].chr+x[1].chr+x[2].chr].push(x) } def segChinese(line) temp=0 max=(line.length/3) words=[] while(temp pos=temp*3 str1=line[pos].chr+line[pos+1].chr+line[pos+2].chr str12=str1 str1234=str1 … 继续阅读