真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用python中文分詞庫(kù)jieba-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“怎么使用python中文分詞庫(kù)jieba”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、元謀網(wǎng)站維護(hù)、網(wǎng)站推廣。

安裝python中文分詞庫(kù)jieba

法1:Anaconda Prompt下輸入conda install jieba

法2:Terminal下輸入pip3 install jieba

1、分詞

1.1、CUT函數(shù)簡(jiǎn)介

cut(sentence, cut_all=False, HMM=True)

返回生成器,遍歷生成器即可獲得分詞的結(jié)果

lcut(sentence)

返回分詞列表

import jiebasentence = '我愛自然語(yǔ)言處理'# 創(chuàng)建【Tokenizer.cut 生成器】對(duì)象generator = jieba.cut(sentence)# 遍歷生成器,打印分詞結(jié)果words = '/'.join(generator)print(words)

打印結(jié)果

我/愛/自然語(yǔ)言/處理

import jiebaprint(jieba.lcut('我愛南海中學(xué)'))

打印結(jié)果

[‘我', ‘愛', ‘南海中學(xué)']

1.2、分詞模式

精確模式:精確地切開

全模式:所有可能的詞語(yǔ)都切出,速度快

搜索引擎模式:在精確模式的基礎(chǔ)上,對(duì)長(zhǎng)詞再次切分

import jiebasentence = '訂單數(shù)據(jù)分析'print('精準(zhǔn)模式:', jieba.lcut(sentence))print('全模式:', jieba.lcut(sentence, cut_all=True))print('搜索引擎模式:', jieba.lcut_for_search(sentence))

打印結(jié)果

精準(zhǔn)模式: [‘訂單', ‘?dāng)?shù)據(jù)分析']

全模式: [‘訂單', ‘訂單數(shù)', ‘單數(shù)', ‘?dāng)?shù)據(jù)', ‘?dāng)?shù)據(jù)分析', ‘分析']

搜索引擎模式: [‘訂單', ‘?dāng)?shù)據(jù)', ‘分析', ‘?dāng)?shù)據(jù)分析']

1.3、詞性標(biāo)注

jieba.possegimport jieba.posseg as jpsentence = '我愛Python數(shù)據(jù)分析'posseg = jp.cut(sentence)for i in posseg: print(i.__dict__) # print(i.word, i.flag)

打印結(jié)果

{‘word': ‘我', ‘flag': ‘r'}{‘word': ‘愛', ‘flag': ‘v'}{‘word': ‘Python', ‘flag': ‘eng'}{‘word': ‘?dāng)?shù)據(jù)分析', ‘flag': ‘l'}

詞性標(biāo)注表

a形容詞mq數(shù)量詞tg時(shí)語(yǔ)素ad副形詞n名詞u助詞ag形語(yǔ)素ng例:義 乳 亭ud例:得an名形詞nr人名ug例:過(guò)b區(qū)別詞nrfg也是人名uj例:的c連詞nrt也是人名ul例:了d副詞ns地名uv例:地df例:不要nt機(jī)構(gòu)團(tuán)體uz例:著dg副語(yǔ)素nz其他專名v動(dòng)詞e嘆詞o擬聲詞vd副動(dòng)詞f方位詞p介詞vg動(dòng)語(yǔ)素g語(yǔ)素q量詞vi例:沉溺于 等同于h前接成分r代詞vn名動(dòng)詞i成語(yǔ)rg例:茲vq例:去浄 去過(guò) 唸過(guò)j簡(jiǎn)稱略語(yǔ)rr人稱代詞x非語(yǔ)素字k后接成分rz例:這位y語(yǔ)氣詞l習(xí)用語(yǔ)s處所詞z狀態(tài)詞m數(shù)詞t時(shí)間詞zg例:且 丗 丟

1.4、詞語(yǔ)出現(xiàn)的位置

jieba.tokenize(sentence)import jiebasentence = '訂單數(shù)據(jù)分析'generator = jieba.tokenize(sentence)for position in generator: print(position)

打印結(jié)果

(‘訂單', 0, 2)(‘?dāng)?shù)據(jù)分析', 2, 6)

2、詞典

2.1、默認(rèn)詞典

import jieba, os, pandas as pd# 詞典所在位置print(jieba.__file__)jieba_dict = os.path.dirname(jieba.__file__) + r'\dict.txt'# 讀取字典df = pd.read_table(jieba_dict, sep=' ', header=None)[[0, 2]]print(df.head())# 轉(zhuǎn)字典dt = dict(df.values)print(dt.get('暨南大學(xué)'))

2.2、添詞和刪詞

往詞典添詞

add_word(word, freq=None, tag=None)

往詞典刪詞,等價(jià)于add_word(word, freq=0)

del_word(word)

import jiebasentence = '天長(zhǎng)地久有時(shí)盡,此恨綿綿無(wú)絕期'# 添詞jieba.add_word('時(shí)盡', 999, 'nz')print('添加【時(shí)盡】:', jieba.lcut(sentence))# 刪詞jieba.del_word('時(shí)盡')print('刪除【時(shí)盡】:', jieba.lcut(sentence))

打印結(jié)果

添加【時(shí)盡】: [‘天長(zhǎng)地久', ‘有', ‘時(shí)盡', ‘,', ‘此恨綿綿', ‘無(wú)', ‘絕期']

刪除【時(shí)盡】: [‘天長(zhǎng)地久', ‘有時(shí)', ‘盡', ‘,', ‘此恨綿綿', ‘無(wú)', ‘絕期']

2.3、自定義詞典加載

新建詞典,按照格式【單詞 詞頻 詞性】添詞,以UTF-8編碼保存

使用函數(shù)load_userdict加載詞典

import os, jieba# 創(chuàng)建自定義字典my_dict = 'my_dict.txt'with open(my_dict, 'w', encoding='utf-8') as f: f.write('慕容紫英 9 nr\n云天河 9 nr\n天河劍 9 nz')# 加載字典進(jìn)行測(cè)試sentence = '慕容紫英為云天河打造了天河劍'print('加載前:', jieba.lcut(sentence))jieba.load_userdict(my_dict)print('加載后:', jieba.lcut(sentence))os.remove(my_dict)

打印結(jié)果

加載前: [‘慕容', ‘紫英為', ‘云', ‘天河', ‘打造', ‘了', ‘天河', ‘劍']

加載后: [‘慕容紫英', ‘為', ‘云天河', ‘打造', ‘了', ‘天河劍']

2.4、使單詞中的字符連接或拆分

suggest_freq(segment, tune=False)

import jiebasentence = '上窮碧落下黃泉,兩處茫茫皆不見'print('修正前:', ' | '.join(jieba.cut(sentence)))jieba.suggest_freq(('落', '下'), True)print('修正后:', ' | '.join(jieba.cut(sentence)))

打印結(jié)果

修正前: 上窮 | 碧 | 落下 | 黃泉 | , | 兩處 | 茫茫 | 皆 | 不見

修正后: 上窮 | 碧落 | 下 | 黃泉 | , | 兩處 | 茫茫 | 皆 | 不見

3、jieba分詞原理

基于詞典,對(duì)句子進(jìn)行詞圖掃描,生成所有成詞情況所構(gòu)成的有向無(wú)環(huán)圖(Directed Acyclic Graph)

根據(jù)DAG,反向計(jì)算較大概率路徑(動(dòng)態(tài)規(guī)劃算法;取對(duì)數(shù)防止下溢,乘法運(yùn)算轉(zhuǎn)為加法)

根據(jù)路徑獲取較大概率的分詞序列

import jiebasentence = '中心小學(xué)放假'DAG = jieba.get_DAG(sentence)print(DAG)route = {}jieba.calc(sentence, DAG, route)print(route)

DAG

{0: [0, 1, 3], 1: [1], 2: [2, 3], 3: [3], 4: [4, 5], 5: [5]}

較大概率路徑

{6: (0, 0), 5: (-9.4, 5), 4: (-12.6, 5), 3: (-20.8, 3), 2: (-22.5, 3), 1: (-30.8, 1), 0: (-29.5, 3)}

4、識(shí)別【帶空格的詞】

示例:使Blade Master這類中間有空格的詞被識(shí)別

import jieba, resentence = 'Blade Master疾風(fēng)刺殺Archmage'jieba.add_word('Blade Master') # 添詞print('修改前:', jieba.lcut(sentence))jieba.re_han_default = re.compile('(.+)', re.U) # 修改格式print('修改后:', jieba.lcut(sentence))

打印結(jié)果

修改前: [‘Blade', ' ', ‘Master', ‘疾風(fēng)', ‘刺殺', ‘Archmage']

修改后: [‘Blade Master', ‘疾風(fēng)', ‘刺殺', ‘Archmage']

5、其它

5.1、并行分詞

運(yùn)行環(huán)境:linux系統(tǒng)

開啟并行分詞模式,參數(shù)n為并發(fā)數(shù):jieba.enable_parallel(n)

關(guān)閉并行分詞模式:jieba.disable_parallel()

5.2、關(guān)鍵詞提取

基于TF-IDF:jieba.analyse

基于TextRank:jieba.textrank

import jieba.analyse as ja, jiebatext = '柳夢(mèng)璃施法破解了狐仙的法術(shù)'jieba.add_word('柳夢(mèng)璃', tag='nr')keywords1 = ja.extract_tags(text, allowPOS=('n', 'nr', 'ns', 'nt', 'nz'))print('基于TF-IDF:', keywords1)keywords2 = ja.textrank(text, allowPOS=('n', 'nr', 'ns', 'nt', 'nz'))print('基于TextRank:', keywords2)

打印結(jié)果

基于TF-IDF: [‘柳夢(mèng)璃', ‘狐仙', ‘法術(shù)']

基于TextRank: [‘狐仙', ‘柳夢(mèng)璃', ‘法術(shù)']

5.3、修改HMM參數(shù)

import jiebatext = '柳夢(mèng)璃解夢(mèng)C法'print(jieba.lcut(text, HMM=False)) # ['柳', '夢(mèng)', '璃', '解夢(mèng)', 'C', '法']print(jieba.lcut(text)) # ['柳夢(mèng)璃', '解夢(mèng)', 'C', '法']jieba.finalseg.emit_P['B']['C'] = -1e-9 # beginprint(jieba.lcut(text)) # ['柳夢(mèng)璃', '解夢(mèng)', 'C', '法']jieba.finalseg.emit_P['M']['夢(mèng)'] = -100 # middleprint(jieba.lcut(text)) # ['柳', '夢(mèng)璃', '解夢(mèng)', 'C', '法']jieba.finalseg.emit_P['S']['夢(mèng)'] = -.1 # singleprint(jieba.lcut(text)) # ['柳', '夢(mèng)', '璃', '解夢(mèng)', 'C', '法']jieba.finalseg.emit_P['E']['夢(mèng)'] = -.01 # endprint(jieba.lcut(text)) # ['柳夢(mèng)', '璃', '解夢(mèng)', 'C', '法']jieba.del_word('柳夢(mèng)') # Force_Split_Wordsprint(jieba.lcut(text)) # ['柳', '夢(mèng)', '璃', '解夢(mèng)', 'C', '法']

print

[‘柳', ‘夢(mèng)', ‘璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳夢(mèng)璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳夢(mèng)璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳', ‘夢(mèng)璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳', ‘夢(mèng)', ‘璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳夢(mèng)', ‘璃', ‘解夢(mèng)', ‘C', ‘法']

[‘柳', ‘夢(mèng)', ‘璃', ‘解夢(mèng)', ‘C', ‘法']


“怎么使用python中文分詞庫(kù)jieba”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


新聞名稱:怎么使用python中文分詞庫(kù)jieba-創(chuàng)新互聯(lián)
瀏覽路徑:http://weahome.cn/article/ddedjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部