PHP前端开发

三种常用的python中文分词工具

百变鹏仔 3个月前 (02-07) #Python
文章标签 分词

本篇文章给大家分享的内容是三种常用的python中文分词工具,有着一定的参考价值,有需要的朋友可以参考一下

这三种分词工具,在这里分享下~

1.jieba 分词:

# -*- coding: UTF-8 -*-import osimport codecsimport jiebaseg_list = jieba.cut('邓超,1979年出生于江西南昌,中国内地男演员、电影导演、投资出品人、互联网投资人。')f1 = codecs.open("d2w_ltp.txt","w")print "/".join(seg_list)for i in seg_list:    f1.write(i.encode("utf-8"))    f1.write(str(" "))

效果:

邓超/,/1979/年出/生于/江西/南昌/,/中国/内地/男演员/、/电影/导演/、/投资/出品人/、/互联网/投资人/。

这里面包括了结巴的分词和写入文件的形式

值得注意的是结巴分词出来的字符编码是 'Unicode' 编码,我们需要把 unicode -> utf-8

2.张华平老师的 NLPIR

(https://github.com/NLPIR-team/NLPIR)

这里给出张华平老师的github 地址 ,需要用的朋友可以去到老师的git上面 拿到 licence 

立即学习“Python免费学习笔记(深入)”;

有两种: 十天的 一个月的

当然,详细的代码和安装包我也上传到了CSDN上面,有兴趣的朋友可以看下(还是需要去更新licence)

值得一提,国内多数论文都是用这个分词工具,比较权威

r = open('text_no_seg.txt','r')list_senten = []sentence = '邓超,1979年出生于江西南昌,中国内地男演员、电影导演、投资出品人、互联网投资人。'for i in seg(sentence):   list_senten.append(i[0])print "/".join(list_senten)f1 = codecs.open("d2w_ltp.txt","w")for i in seg(sentence):   f1.write(i[0])   f1.write(str(" "))

效果:

邓超/,/1979年/出生/于/江西/南昌/,/中国/内地/男/演员/、/电影/导演/、/投资/出品/人/、/互联网/投资人/。

当然NLPIR在在命名实体识别上面也是有着很好的效果:

邓超 nr, wd1979年 t出生 vi于 p江西 ns南昌 ns, wd中国 ns内地 s男 b演员 n、 wn电影 n导演 n、 wn投资 n出品 vi人 n、 wn互联网 n投资人 n。 wj

3.哈工大LTP

# -*- coding: UTF-8 -*-import osimport codecsfrom pyltp import Segmentor#分词def segmentor(sentence):    segmentor = Segmentor()  # 初始化实例    segmentor.load('ltp_data/cws.model')  # 加载模型    words = segmentor.segment(sentence)  # 分词    words_list = list(words)    segmentor.release()  # 释放模型    return words_listf1 = codecs.open("d2w_ltp.txt","w")sentence = '邓超,1979年出生于江西南昌,中国内地男演员、电影导演、投资出品人、互联网投资人。'print "/".join(segmentor(sentence))for i in segmentor(sentence):    f1.write(i)    f1.write(str(" "))

效果: 

邓/超/,/1979年/出生/于/江西/南昌/,/中国/内地/男/演员/、/电影/导演/、/投资/出品人/、/互联网/投资人/。