Google

星期二, 八月 19, 2008

高速全文检索引擎Sphinx安装指南及下载

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索

http://srsman.com/2008/08/sphinx/

标签: , , , ,

PostgreSQL的FTI与中文全文索引的实践

安装 postgresql

你可以像平常一样编译和安装 postgresql,使用 tsearch2 进行中文的全文索引的时候,真正的区别发生在初始化数据库的时候。

http://www.pgsqldb.org/mwiki/index.php/PostgreSQL%E7%9A%84FTI%E4%B8%8E%E4%B8%AD%E6%96%87%E5%85%A8%E6%96%87%E7%B4%A2%E5%BC%95%E7%9A%84%E5%AE%9E%E8%B7%B5

标签: ,

中文关键字提取

最近整的是中文分词与关键字提取,用python写的原型,算是复杂度比较可观的应用了;
分词的资料不太好找,只有KaiFu Lee在MSRA带着Guo姓小弟做的一些列paper和中科院I3S组的分词程序。
关键字提取是无先验信息的,篇幅也很短效,但是功能还是满意了。基本流程是聚类后,算条件概率,思想来自某大学的Paper。
起初的实现的模型,大概在1000汉字每秒的处理能力;
折腾了一天,提升到12000汉子每秒。
http://entelechie.ycool.com/post.2763166.html

标签: ,

双语语料库-中文分词的方法

刚刚把语料库研究的初稿交上去,感觉还是很幼稚。但是至少我认真做了,想想工作这一年,没有好好去研究点东西,所以技术也没有什么进步。是该认真做点东西了。

http://blog.donews.com/glemir/archive/2006/09/25/1046633.aspx

标签:

ShootSearch 中文分词组件(c#开源)

ShootSearch 中文分词组件(c#开源) 技术支持:support@shootsoft.net http://www.shootsoft.net 分词算法:词库+最大匹配 词库来自www.jesoft.cn,已经过一定的修改 使用说明: 先加载词库,再进行分词.分词过程重载两次:支持回车的和不支持回车的,注意选择! 可以手动添加词语到sDict.txt,不过每次手动修改后需要调用SortDic()方法,否则无法实现最大匹配! sDict.txt的编码为UTF-8!

http://download.csdn.net/source/159089

标签: , ,

Web Spider提取编码方法总结

概要:
1,通过分析Header提取编码
2,通过分析BOM(Byte Order Mark)提取编码
3,通过分析页面的meta提取编码
4,通过字节流分析检测编码

http://www.cnblogs.com/kwklover/archive/2007/01/24/628501.html

标签: ,

基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计

http://blog.s135.com/read.php/360.htm

[文章作者:张宴 本文版本:v1.0 最后修改:2008.07.27 转载请注明原文链接:http://blog.s135.com/read.php/360.htm]

  前言:本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不提供全文内容。

   在DELL PowerEdge 6850服务器(四颗64 位Inter Xeon MP 7110N处理器 / 8GB内存)、RedHat AS4 Linux操作系统、MySQL 5.1.26、MyISAM存储引擎、key_buffer=1024M环境下实测,单表1000万条记录的数据量(这张MySQL表拥有int、 datetime、varchar、text等类型的10多个字段,只有主键,无其它索引),用主键(PRIMARY KEY)作为WHERE条件进行SQL查询,速度非常之快,只耗费0.01秒。

  出自俄罗斯的开源全文搜索引擎软件Sphinx, 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

  基于以上 几点,我设计出了这套搜索引擎架构。在生产环境运行了一周,效果非常不错。有时间我会专为配合Sphinx搜索引擎,开发一个逻辑简单、速度快、占用内存 低、非表锁的MySQL存储引擎插件,用来代替MyISAM引擎,以解决MyISAM存储引擎在频繁更新操作时的锁表延迟问题。另外,分布式搜索技术上已 无任何问题。

全部内容请点击上面链接

标签: , , ,

有用的Python中文分词链接

python中文分词模块

http://www.zeuux.org/pipermail/zeuux-python/2007-June/039597.html


分词后续, SCWS(简体中文分词)第4版出来了 :-)

http://www.chmhome.com/knowledge/php/20070624/50559.html

中文分词
http://nzinfo.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3D%25e4%25b8%25ad%25e6%2596%2587%25e5%2588%2586%25e8%25af%258d

中文分词
http://www.162cm.com/archives/tag/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D

标签: ,

中文分词Python相关

中文搜索/分词

http://wiki.woodpecker.org.cn/moin/PyInChinese

标签: ,

星期二, 六月 03, 2008

在pyLucene中使用中文分词器(在pyLucene中引用Jar包)

(刚刚解决的一个问题,在中文里面没有搜索到相关内容(英文里其实也没搜到...),发一篇在这里备人索引,关键字:pyLucene, JCC,
Lucene, Importing JAR)

在Lucene里面引用别人写好的中文分词器很简单,加个CLASSPATH就好。但是在pyLucene(JCC版)里,由于python所能够引用
到的Jar包都是用JCC这个编译器(姑且认为是个编译器吧)预先编译了python调用接口的。(反过来说,就是没有经JCC编译的Jar包是休想在
python里面直接访问的)

所以,在pyLucene中使用Jar包形式的中文分词器不得不重新编译。分隔线以下是OSFoundation某热心人关于如何修改Makefile
让Jar包可以和pyLucene打包到一起的回复。

-------------------------------------热心人回复的分隔
线-------------------------------------
Andi Vajda:
To access your class(es) by name from Python, you must have JCC
generate wrappers for it (them). This is what is done line 177 and on
in PyLucene's Makefile. The easiest way for you to add your own Java
classes to PyLucene is to create another jar file with your own
analyzer classes and code and add it to the JCC invocation there.

For example, the Makefile snippet in question currently says:

GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) \
--package java.lang java.lang.System \
java.lang.Runtime \
--package java.util \
java.text.SimpleDateFormat \
--package java.io java.io.StringReader \
java.io.InputStreamReader \
java.io.FileInputStream \
--exclude org.apache.lucene.queryParser.Token \
--exclude org.apache.lucene.queryParser.TokenMgrError \
--exclude
org.apache.lucene.queryParser.QueryParserTokenManager \
--exclude org.apache.lucene.queryParser.ParseException \
--python lucene \
--mapping org.apache.lucene.document.Document 'get:(Ljava/
lang/String;)Ljava/lang/String;' \
--mapping java.util.Properties 'getProperty:(Ljava/lang/
String;)Ljava/lang/String;' \
--sequence org.apache.lucene.search.Hits 'length:()I' 'doc:
(I)Lorg/apache/lucene/document/Document;' \
--version $(LUCENE_VER) \
--files $(NUM_FILES)

change the first line to say:

GENERATE=$(JCC) $(foreach jar,$(JARS),--jar $(jar)) --jar myjar.jar \
...

and rebuild PyLucene. That should be all you need to do. Your jar file
is going to be installed along with lucene's in the lucene egg and it
is going to be put on lucene.CLASSPATH which you use with
lucene.initVM().

Your classes can be declared in any Java package you want. Just make
sure that their names don't clash with other Lucene class names that
you also need to use as the class namespace is flattened in PyLucene.

For more information about JCC and its command line args see JCC's
README file at [1].

Andi..

[1] http://svn.osafoundation.org/pylucene/trunk/jcc/jcc/README
_______________________________________________
pylucene-dev mailing list
pylucene-...@osafoundation.org
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev


http://groups.google.com.pe/group/python-cn/browse_thread/thread/0f085de0eab6f039

标签: , ,

《发布一个python的分词模块》的相关内容

中文分词的相关内容。

http://www.javaeye.com/wiki/topic/163334

标签:

自己写的一个基于词库的lucene分词程序--ThesaurusAnalyzer

前一段时间用lucene做一个搜索程序,找了好长时间的中文分词程序,都没找到合适的,最后自己弄了一个.现在共享出来.希望对大家有用.
分词算法: 基于词库的正向最大匹配算法.
分词词库用的是网上一个叫 segmenter 的分词程序使用的词库.
地址:www.mandarintools.com/segmenter.html
这个segmenter分词程序是把文件按行读取出来,然后把一行假设为一个词,从库中匹配,如果匹配不成功,则去掉一个字,再继续匹配.这样的分词程 序,其一,不便在lucene中使用,因为lucene的analyzer是通过Tokenizer分词的,而Tokenizer中一般是对字符流进行处 理,每次next返回一个Token,并不是一次性把内容读取进来,处理后再返回结果.其二,按行读取会有个缺点,就是如果文本中恰好把一个词用换行符隔 开了,这样这个词也就被切开了,没有被当作一个词处理.

我的程序实现方式:把词库读进内存后构建一个词语树.树的每个节点包含一个字. 比方 中国 中国人 中华民族 中华人民共和国 几个词,构成的树的结构:


国^ 华
人^ 人 民
民 族^


国^

懒得上传图片,所以将就着这样表示了.^表示该节点可以构成一个词.分词的过程类似于输入法的联想功能.读取一个字,然后联想,直到联想到不能为止.如果 当前可以构成词,便返回一个Token.如果当前不能构成词语,便回溯到最近的可以构成词语的节点,返回.最差的情况就是返回第一个单字.然后从返回结果 的下一个字重新开始联想.

lucene自带的几个分词程序中,ChineseAnalyzer是按字分的,与StandardAnalyzer对中文的分词没有大的区别.CJKAnalyzer是按两字切分的,比较武断,并且会产生垃圾Token,影响索引大小.

本分词程序的效果取决与词库.您可以用自己的词库替换程序自带的词库.词库是一个文本文件,名称为word.txt. 每一行一个词语,以#开头表示跳过改行.最后保存为UTF-8的文本.

程序的缺陷:
没有加入识别人名和地名的功能

该分词的一个应用案例:http://www.cyonline.net

这个网站是我给学校做的,用lucene对pdf ,word,excel,html等多种格式的文档进行解析,索引,提供全文搜索,并实现摘要高亮.这个网站在教育网上,公网用户可能访问起来比较慢.


附件1为分词程序的jar包

附件2为分词程序的源码,需要lucene-core.jar,一个比较Analyzer的测试类还需要lucene-analyzers.jar.

有问题或者意见建议请与我联系 jolestar@hotmail.com jolestar@gmail.com

http://www.javaeye.com/topic/58701

标签:

介绍:最新的一种中文分词方式——由字构词

现有的中文分词方法基本上都是采用基于词表的正向最大匹配法进行词语切分。不过这种分词方法具有一个最大的问题,对于未登录词(也就是在词表中并未录入的 词)的切分具有先天的不足,一般的解决方法是在基于正向最大匹配法切分模块后再加入一个未登录词模块,用于处理对于未登录词的切分。而在中文分词技术中, 对于未登录词的切分错误极大的影响到了整体分词的召回率。现在主流的分词算法对于未登录词的召回率仍然在0.6 左右。
最新的一种分词算法叫做“由字构词”的分词方法,关于“由字构词”分词方法的最早的一篇论文发表在2002 年第一届SIGHAN 研讨会上,紧接着Xue 在ME 模型上实现了由字构词的分词系统参加了Bakeoff2003 的评测,获得了封闭测试项目的第二名,让人瞩目的是,它对于未登录词的召回率高达0.7以上。而在Bakeoff2005 的各项赛事中,基于由字构词方法的分词系统几乎囊括了开放和封闭测试的全部冠军!而到了Bakeoff2006,由微软亚洲研究院采用基于CRF 模型实现的由字构词分词系统,获得了参加的六项评测中的四个第一,两个第三。
由字构词的分词方法和以往的分词方法不同,它是把分词视为一个字的分类问题。在微软亚洲研究院的系统中,他们把字分成了六类:S(单独成词)、 B(词首)、B2(词中第二个字)、B3(词中第三个字)、M(词中)、E(词尾)。比如以下的分词结果,可以将字标注为以下形式:
Java代码 复制代码
  1. /上海/计划/到/本/世纪/末/实现/人均/国内/生产/总值/五千美元/。/
  2. 上/B海/E计/B划/E到/S本/S世/B纪/E末/S实/B现/E人/B均/E国/B内/E生/B产/E总/B值/E五/B千/B2美/B3元/E。/S

那么最后可以形成一个字库,规定每个字的词位标记中某一个词位超过50%,那么就认为这个词位是这个字的主词位,否则就认为这个字是自由字。在现有的资料中,语料库中总字量为5147 个,有主词位的字为3920 个,占据总字量的76%。
个人感觉由字构词的分词方法有两个优点:
1、能很好的切分未登录词,而使中文分词切分召回率得到显著提高
2、词表非常小,中文中172个汉字就占据了所有中文用字的50%以上,常用汉字也就2000多个,比起基于最大匹配法所用到的词表小了非常多。

上面只是一个简单的介绍,希望有兴趣的同学可以一起研究研究:)
http://www.javaeye.com/topic/129769

标签:

Lucene中文分词 “庖丁解牛”

附件 为Qieqie设计编写的组件,中文分词“庖丁解牛”,具有相当好的使用价值。。。

高效率:QieQie的赛扬PC 1 秒解析 >>> 20000汉字的词语 (实际测试结果数据,可达1秒10万+汉字)
高可维护性:使用“庖丁”隐喻,形象明晰
高灵活性,可扩展:OOD

对比:《终于突破中文分词的效率问题》http://www.lucene.org.cn/read.php?tid=54&fpage=2 他的效率为 6秒 解析2588汉字

2007-08-08:

由于庖丁解牛进行了一些调整和重构,这里的附件代码已经是"较旧"的,最新的下载地址:

http://code.google.com/p/paoding/downloads/list

SVN地址为:http://paoding.googlecode.com/svn/trunk/paoding-analysis/

同时也可以通过浏览器访问http://paoding.googlecode.com/svn/trunk/paoding-analysis/ 直接浏览代码。

最新的在JavaEye的发布帖子是:

http://www.javaeye.com/topic/110148 中文分词 庖丁解牛 2.0.0 发布

http://www.javaeye.com/topic/49441

标签: ,

辽ICP备05003652号
流风洄雪听天籁,轻云蔽日看落花

Powered by Blogger