中文分詞 jieba

2022-08-11 00:51:14 字數 3608 閱讀 3510

支援繁體分詞

支援自定義詞典

mit 授權協議

**對 python 2/3 均相容

試圖將句子最精確地切開,適合文字分析

import jieba

def main():

s = u'我在人民廣場吃著炸雞'

cut = jieba.cut(s)

print type(cut)

for word in cut:

print word

if __name__ == '__main__':

main()

輸出:#可見分詞結果是乙個生成器我在

人民廣場吃著

炸雞

把句子中所有的可以成詞的詞語都掃瞄出來, 速度非常快,但是不能解決歧義

import jieba

def main():

s = u'我在人民廣場吃著炸雞'

cut = jieba.cut(s, cut_all=true)

print type(cut)

for word in cut:

print word

if __name__ == '__main__':

main()

輸出:我在人民

人民廣場廣場吃

著炸雞

在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。

import jieba

def main():

s = u'我在人民廣場吃著炸雞'

cut = jieba.cut_for_search(s)

print type(cut)

for word in cut:

print word

if __name__ == '__main__':

main()

輸出:我在人民

廣場人民廣場吃著

炸雞

import jieba.posseg as psg

def main():

s = u'我在人民廣場吃著炸雞'

cut = psg.cut(s)

print type(cut)

for word_op in cut:

print word_op.word, type(word_op.word), word_op.flag, type(word_op.flag)

if __name__ == '__main__':

main()

輸出:我 r 在 p 人民廣場 n 吃 v 著 uz 炸雞 n

可以根據詞性篩選:

import jieba.posseg as psg

def main():

s = u'我在人民廣場吃著炸雞'

cut = psg.cut(s)

print type(cut)

for word_op in cut:

if word_op.flag == 'n':

print word_op.word

if __name__ == '__main__':

main()

輸出:人民廣場

炸雞

在文字資料量非常大的時候,為了提高分詞效率,開啟並行分詞就很有必要了。jieba支援並行分詞,基於python自帶的multiprocessing模組,但要注意的是在windows環境下不支援。

用法:注意:並行分詞僅支援預設分詞器jieba.dtjieba.posseg.dt

import jieba.analyse

載入詞典

詞典示例:

雲計算 5

李小福 2 nr

創新辦 3 i

easy_install 3 eng

好用 300

韓玉賞鑑 3 nz

八一雙鹿 3 nz

臺中凱特琳 nz

edu trust認證 2000

調整詞典

ag形語素

形容詞性語素。形容詞**為 a,語素**g前面置以a。

a形容詞

取英語形容詞 adjective的第1個字母。

ad副形詞

直接作狀語的形容詞。形容詞** a和副詞**d並在一起。

an名形詞

具有名詞功能的形容詞。形容詞** a和名詞**n並在一起。

b區別詞

取漢字「別」的聲母。c連詞

取英語連詞 conjunction的第1個字母。

dg副語素

副詞性語素。副詞**為 d,語素**g前面置以d。d副詞

取 adverb的第2個字母,因其第1個字母已用於形容詞。e嘆詞

取英語嘆詞 exclamation的第1個字母。

f方位詞

取漢字「方」g語素

絕大多數語素都能作為合成詞的「詞根」,取漢字「根」的聲母。

h前接成分

取英語 head的第1個字母。i成語

取英語成語 idiom的第1個字母。

j簡稱略語

取漢字「簡」的聲母。

k後接成分

l習用語

習用語尚未成為成語,有點「臨時性」,取「臨」的聲母。m數詞

取英語 numeral的第3個字母,n,u已有他用。

ng名語素

名詞性語素。名詞**為 n,語素**g前面置以n。n名詞

取英語名詞 noun的第1個字母。

nr人名

名詞** n和「人(ren)」的聲母並在一起。

ns地名

名詞** n和處所詞**s並在一起。

nt機構團體

「團」的聲母為 t,名詞**n和t並在一起。

nz其他專名

「專」的聲母的第 1個字母為z,名詞**n和z並在一起。

o擬聲詞

取英語擬聲詞 onomatopoeia的第1個字母。p介詞

取英語介詞 prepositional的第1個字母。q量詞

取英語 quantity的第1個字母。r代詞

取英語代詞 pronoun的第2個字母,因p已用於介詞。

s處所詞

取英語 space的第1個字母。

tg時語素

時間詞性語素。時間詞**為 t,在語素的**g前面置以t。

t時間詞

取英語 time的第1個字母。u助詞

取英語助詞 auxiliary

vg動語素

動詞性語素。動詞**為 v。在語素的**g前面置以v。v動詞

取英語動詞 verb的第乙個字母。

vd副動詞

直接作狀語的動詞。動詞和副詞的**並在一起。

vn名動詞

指具有名詞功能的動詞。動詞和名詞的**並在一起。

w標點符號

x非語素字

非語素字只是乙個符號,字母 x通常用於代表未知數、符號。

y語氣詞

取漢字「語」的聲母。

z狀態詞

取漢字「狀」的聲母的前乙個字母。

un未知詞

不可識別詞及使用者自定義詞組。取英文unkonwn首兩個字母。(非北大標準,csw分詞中定義)

中文分詞工具 Jieba

jieba分詞值基於規則和統計這兩類方法。其首先基於字首詞典進行詞圖掃瞄,字首詞典是指詞典中的詞按照字首的包含順序排列的,從而形成一種層級包含結構。這種字首詞典的好處便是可以快速構建包含全部可能分詞結果的有向無環圖,這個圖包含多條分詞路徑,無環是指節點間不構成閉環。然後基於標註語料,使用動態規劃演算...

python 中文jieba分詞

import os import jieba from collections import counter def words txt print jieba.cut txt lista jieba.cut txt 返回的結構都是乙個可迭代的 generator,可以使用 for 迴圈來獲得分詞後...

中文分詞jieba學習筆記

四 詞性標註 五 並行分詞 六 返回詞語在原文的起止位置 注意 hmm模型 隱馬爾可夫模型 可以識別新詞 jieba.load userdict filename filename為自定義詞典的路徑 在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,乙個詞佔一行,每一行...