分词工具介绍与简单实例

目录

  • ICTCLAS
  • IK Analyzer
  • Paoding
  • MMSEG4J
  • Jieba
  • 相关链接

ICTCLAS

1.主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典;
2.ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。
系统平台:Windows
开发语言:C/C++、Java、C#
使用方式:dll调用
演示网址:http://ictclas.org/test.html
开源官网:http://ictclas.org

ICTCLAS的简单应用

用ICTCLAS进行分词比较简单,我们可以直接在其官网中进行操作。以分析金庸的射雕英雄传第十章为例
输入要分析的url或者文本内容:
输入要分析的url或者文本内容

点击开始分析:
分词标注:
分词标注

实体抽取:

实体抽取

词频统计:

词频统计

文本分类:

文本分类

情感分析:

情感分析

关键词提取:
关键词提取

IK Analyzer

  1. IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
  2. 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
  3. 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。优化的词典存储,更小的内存占用。
    4.支持用户词典扩展定义,针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

Paoding

1.Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。
2.高效率:在PIII 1G内存个人机器上,1秒可准确分词 100万汉字。
3.采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。
4.能够对未知的词汇进行合理解析。
5.仅支持Java语言。
下面举个paoding的小用例:

  • 首先,下载paoding压缩包:,直接解压缩。我放在F:\lucene\paoding目录下。

压缩包

  • 接着配置paoding环境。
    计算机->属性->高级->环境变量->新建一个环境变量,命名为PAODING_DIC_HOME,值设置为F:\lucene\paoding\dic\(你的安装目录\dic\)

配置Paoding环境

  • 接下来打开命令提示框,定位到我们paoding目录下后,windows输入analyzer.bat,linux系统输analyzer.sh

开始分词

  • 之后就可以进行分词操作,直接输入或者粘贴要进行分词的语句,以分号结束

键入:e或:q退出会话 (包括:符号)
键入:?显示帮助(包括:符号) 。

键入?

  • 对这一句话”Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率高扩展性。”进行分词:

分词实例1

  • 从图中可以看出进行了分词,分了22个,耗时15ms。
    analyzer.bat允许对指定的文件进行分词体验。文件以路径名给出可以使绝对地址、相对当前目录的地址,或以classpath:为前缀的类路径地址。

MMSEG4J

MMSEG4J基于Java的开源中文分词组件,提供lucene和solr 接口:
1.mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2.MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

Jieba

特点:
支持三种分词模式:
1.精确模式,试图将句子最精确地切开,适合文本分析;
2.全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
3.搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

算法:
1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
3.对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

jieba简单实例:

  1. jieba是Python的一个分词库。首先要进行安装,键盘Windows+R —>输入cmd–>pip install jieba即可。
  2. 安装Anaconda。

anaconda下载

安装完成之后键盘Windows+R —>输入cmd–>jupyter notebook即可打开jupyter notebook页面

juoyter notebook主页

3.编写要分词的文档test.txt

test.txt

4.直接拖入文档到jupyter notebook主页,upload

上传文件

5.新建python文档new->python

新建python文件

进入页面:

代码输入页

6.输入代码:

import jieba           #导入jieba
with open('test.txt','r')as f:    #打开所需分词文本text.txt
    for line in f:        
        seg=jieba.cut(line.strip(),cut_all = False)    #jieba分词
        print('/'.join(seg))

按下Ctrl+Enter,得到如下分词结果:

分词结果

7.上面我们就完成了一个简单的分词。我们还可以进一步进行词频统计。按下Shift+Enter,继续编写如下代码:

from collections import Counter  
total = []


with open('test.txt','r')as f:    
    for line in f:
        seg_list = jieba.lcut(line.strip(),cut_all = False) # jieba.lcut 可以直接输出列表。
        for word in seg_list:
            total.append(word)

c=Counter(total)        #这里一定要顶格写,否则就进入到上面的for循环里面,出错。
for item in c.most_common(5):      #数字5表示提取前5个高频词,可根据需要更改。
    print (item[0],item[1])

输出结果如下

词频结果

相关链接

http://ictclas.nlpir.org/
http://baike.so.com/doc/9553551-9898246.html
http://blog.csdn.net/liujihaozhy/article/details/39496745
http://blog.csdn.net/u013070853/article/details/48715183
http://www.oschina.net/question/tag/mmseg4j?show=time
http://baike.so.com/doc/2651801-2800213.html
https://github.com/fxsjy/jieba
http://blog.csdn.net/lengyuhong/article/details/5993316

你可能感兴趣的:(python,io-ir,IK-Analyze,jieba,Paoding)