首頁 >後端開發 >Python教學 >三種常用的python中文分詞工具

三種常用的python中文分詞工具

零到壹度
零到壹度原創
2018-04-14 11:05:298538瀏覽

本篇文章給大家分享的內容是三種常用的python中文分詞工具,有著一定的參考價值,有需要的朋友可以參考一下

這三種分詞工具,在這裡分享下~

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年/出生/于/江西/南昌/,/中国/内地/男/演员/、/电影/导演/、/投资/出品人/、/互联网/投资人/。

以上是三種常用的python中文分詞工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn