Genius
Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。
Feature
- 支持python2.x、python3.x以及pypy2.x。
- 支持简单的pinyin分词
- 支持用户自定义break
- 支持用户自定义合并词典
- 支持词性标注
Source Install
- 安装git: 1) ubuntu or debian
apt-get install git
2) fedora or redhatyum install git
- 下载代码:
git clone https://github.com/duanhongyi/genius.git
- 安装代码:
python setup.py install
Pypi Install
- 执行命令:
easy_install genius
或者pip install genius
Algorithm
- 采用trie树进行合并词典查找
- 基于wapiti实现条件随机场分词
- 可以通过genius.loader.ResourceLoader来重载默认的字典
功能 1):分词genius.seg_text
方法
-
genius.seg_text
函数接受5个参数: -
text
第一个参数为需要分词的字符 -
use_break
代表对分词结构进行打断处理 -
use_combine
代表是否使用字典进行词合并 -
use_tagging
代表是否进行词性标注 -
use_pinyin_segment
代表是否对拼音进行分词处理
代码示例( 全功能分词 )
#encoding=utf-8 import genius text = u"""昨天,我和施瓦布先生一起与部分企业家进行了交流,大家对中国经济当前、未来发展的态势、走势都十分关心。""" seg_list = genius.seg_text( text, use_combine=True, use_pinyin_segment=True, use_tagging=True, use_break=True ) print('\n'.join(['%s\t%s' % (word.text, word.tagging) for word in seg_list]))
功能 2):面向索引分词
-
genius.seg_keywords
方法专门为搜索引擎索引准备,保留歧义分割。 -
text
第一个参数为需要分词的字符 -
use_break
代表对分词结构进行打断处理 -
use_tagging
代表是否进行词性标注 -
use_pinyin_segment
代表是否对拼音进行分词处理 - 由于合并操作与此方法有意义上的冲突,此方法并不提供合并功能;并且如果采用此方法做索引时候,检索时不推荐
genius.seg_text
使用use_combine=True
参数。
代码示例
#encoding=utf-8 import genius seg_list = genius.seg_keywords(u'南京市长江大桥') print('\n'.join([word.text for word in seg_list]))
其他说明 3):
- 目前分词语料出自人民日报1998年1月份,所以对于新闻类文章分词较为准确。
- CRF分词效果很大程度上依赖于训练语料的类别以及覆盖度,若解决语料问题分词和标注效果还有很大的提升空间。
7 楼 hity 2013-10-08 11:30
library.zip文件下crf_seg_model.txt这个是训练后的分词model,自己训练一个覆盖即可。
训练方法可以使用crf工具,如wapiti或者是crf++,训练pattern在template文件夹里面可以找到。
6 楼 方世玉 2013-10-08 11:01
5 楼 hity 2013-09-27 14:29
哈哈,分词元年。
4 楼 ansjsun 2013-09-27 12:40
3 楼 IT技术观察员 2013-09-26 11:35
不应该算抄吧?反正那个也是我写的,只是想跟大家分享一下自己的开源项目。
2 楼 hity 2013-09-26 11:01
不应该算抄吧?反正那个也是我写的,只是想跟大家分享一下自己的开源项目。
1 楼 IT技术观察员 2013-09-26 10:36