python 常用中文分词工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdufsTFknight/article/details/79928720

最近在做微博的文本处理,在分词工具的选择上,分别选择了:jieba \ NLPIR \ LTP

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


1.jieba 分词:

# -*- coding: UTF-8 -*-
import os
import codecs
import jieba
seg_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 
有两种: 十天的\ 一个月的

当然,详细的代码和安装包我也上传到了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
, wd
1979年 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 os
import codecs

from 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_list

f1 = codecs.open("d2w_ltp.txt","w")
sentence = '邓超,1979年出生于江西南昌,中国内地男演员、电影导演、投资出品人、互联网投资人。'
print "/".join(segmentor(sentence))

for i in segmentor(sentence):
    f1.write(i)
    f1.write(str(" "))

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

猜你喜欢

转载自blog.csdn.net/gdufsTFknight/article/details/79928720