最近想在google app engine上实现站内的全文检索。于是想写一个纯python实现的中文分词程序。
目标如下:
1,实用,能满足绝大部分网络文章的分词需要。
2,快速,分词过程中不会抛出DeadlineExceededError错误。
3,低内存占用,不会因为内存占用超过限制而每个实例运行一次之后就被强制kill掉。
最初的思路是:将分词词库排序好保存在一个list对象里,然后用bisect库对词库进行快速查找。因为bisect默认是c实现的,所以匹配速度非常快,但是list对象保存的词库过于耗费内存,加载速度非常慢。完全不适合在google app engine上使用。
解决的办法是:把词库中不同长度的词分开存储在不用的str对象中,使用跟bisect库同样的二分法对词库进行匹配。
FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n-1个...然后继续下去。假如n个词在词典中出现,那么从n+1位置继续找下去,知道句子结束。
High performance Chinese word segmenting module for Python。
pymmseg-cpp is a Python port of the rmmseg-cpp project. rmmseg-cpp is a MMSEG Chinese word segmenting algorithm implemented in C++ with a Ruby interface.
DFA Based Chinese Word Segmentation Library of Python and Java。
特点:可自定义词典、速度快、可在Google App Engine上运行。
开放的中文分词项目,高性能、高可用性分词系统。主要由好看薄的蚂蚁同学维护。
BECer是纯python实现,专门为google app engine而开发的中文分词和全文搜索模块,BECer的特点是快速而且低内存占用,每秒处理三万字,词库和分词模块仅占3M内存,完全适用google app engine环境.不必担心google app engine的cpu时间限制和内存限制.