日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jieba库(jieba库的介绍以及分词原理,jieba的三种模式和常用函数,利用Jieba模块进行中文词语的统计)

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jieba库(jieba库的介绍以及分词原理,jieba的三种模式和常用函数,利用Jieba模块进行中文词语的统计) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境:? Python3.6 +? windows10

jieba介紹以及分詞的原理

1. jieba 是Python中的優秀的中文分詞第三方庫

? ? --中文文本需要通過分詞獲得單個的詞語

2. jieba 庫提供三種分詞模式 ,最簡單只需要掌握一個函數

3.jieba庫的安裝

? ?只需要在cmd 中,? ?pip? install jieba? ? ?

4.. jieba分詞的原理? ??

? ? ? ? 通過中文詞庫的方式來識別分詞的

? ? ? ? -- 利用一個中文詞庫,確定漢字之間的關聯概率

? ? ? ?-- 通過計算漢字之間的概率,漢字間概率大的組成詞組,形成分詞結果

? ? ? ?-- 除了分詞,用戶還可以添加自定義的詞組

?jieba的三種模式以及函數介紹

?1.jieba分詞的三種模式? ? ?

? ? ? 精確模式 :?把文本精確的切分開,不存在冗余單詞? ?(就是切分開之后一個不剩的精確組合) 常用

? ? ?全模式 :?把文本中所有可能的詞語都掃描出來,有冗余

? ? ? ? ? ? ? ? ? 即: 可能有一個文本,可以從不同的角度來切分,變成不同的詞語。在全模式下把不同的詞語都挖掘出來

? ? 搜索引擎模式:在精確 模式基礎上,對長詞語再次切分

2. jieba庫的常用函數

? ?(1)精確模式 函數? jieba.lcut(str)? ? ?返回列表類型

import jieba """jieba.lcut(str)""" s = "中國是一個偉大的國家" print(jieba.lcut(s)) """輸出結果: ['中國', '是', '一個', '偉大', '的', '國家']"""

? (2)全模式? ? jieba.lcut(str,cut_all=True)? ? ?返回列表類型 ,有冗余

print(jieba.lcut(s,cut_all=True)) """輸出結果:['中國', '國是', '一個', '偉大', '的', '國家']"""

(3) 搜索引擎模式: jieba.lcut_for_search(str)? 返回列表類型,有冗余

? ? ?先按照精確模式進行分詞,然后把把比較長的詞進行再次分詞

s1 = "中華人民共和國是偉大的" print(jieba.lcut_for_search(s1)) ''' 輸出結果 : ['中華', '華人', '人民', '共和', '共和國', '中華人民共和國', '是', '偉大', '的'] '''

(4) jieba.add_word(str)? ?向分詞詞典添加新詞 str

?

?jieba使用實例

文本詞頻的統計 :? 一篇文章中,出現了哪些詞?哪些詞出現的最多?

?1. 首先是英文文本 ,對照英文的分詞,進行中文分詞?? 用到的英文文本的網站? ?網站的文本賦全部賦值下來,然后進行保存,:?https://python123.io/resources/pye/hamlet.txt

def getText():txt = open("E:\\\shuju\\hamelet.txt", "r").read()# 文章中的所有單詞轉化為小寫txt = txt.lower()# 使用空格個來替換掉所有的符號for ch in "!\"#$%&()*+,-./:;<>=?@[\\]_'{|}~":txt = txt.replace(ch, " ")return txtdef main():hamletTxt = getText()words = hamletTxt.split()counts = {}for word in words:# 獲取鍵對應的值,如果鍵不存在,給出默認值0# 獲取 每個單詞出現的次數counts[word] = counts.get(word, 0) + 1# 把字典的鍵值對轉化為元組,全部存放在列表里面items = list(counts.items())# 進行排序,按照每個元組的第二個值,即字典的值,進行降序排序items.sort(key=lambda x:x[1],reverse=True)# 對降序排序的前10個進行處理,# 格式化輸出 : word: 最低長度為10,不夠補空格 counts: 最低長度為5,不夠的話補空格# print(items)for i in range(10):word,counts = items[i]print("{0:<10}{1:>5}".format(word,counts))if __name__ == '__main__':main()

運行結果:

the 1143 and 966 to 762 of 669 i 631 you 554 a 546 my 514 hamlet 471 in 451

2.中文的文本進行分析,和英文的相比不同,中文中的有名稱、詞語成語等

? ?現在只統計三國演義中的人物的出現次數,取出排行前10的人物出現的次數

? ? 中文的文本網站: 三國演義的片段文本:?https://python123.io/resources/pye/threekingdoms.txt

? ?詳細看代碼的注釋

"""人物出場統計""" import jieba# 讀取所有的文件 txt = open("E:\\shuju\\threekingdoms.txt","r",encoding="utf-8").read() # 使用jieba分詞的精確模式 words = jieba.lcut(txt) counts = {} '''對進行分詞的之后的結果進行處理,解決類似于孔明和諸葛亮是一個人物的問題,給其重新賦值''' for word in words:# 排除長度為1的if len(word) == 1:continueelif word == "諸葛亮" or word == "孔明曰":rword = "孔明"elif word == "關公" or word == "云長":rword = "關羽"elif word == "玄德" or word == "玄德曰":rword = "劉備"elif word == "孟德" or word == "丞相":rword = "曹操"elif word == "周瑜" or word == "都督":rword = "周瑜"else:rword = word# 統計出場的次數counts[rword] = counts.get(rword,0) + 1 '''因為分詞之后,可能不是人物的詞要比人物的次數多,所以進行處理,如果統計的結果里面出現了不是人物的結果,就對其進行刪除,可以先不進行處理,看看會出現哪些值,然后把這些值放在一個集合里面,然后可以進行相應的刪除多次進行運行,然后添加之后,就可以得到想要的結果''' excludes = {"將軍","卻說","二人","不可","荊州","不能","如此","商議","如何","主公","軍士","左右","軍馬","引兵","次日","大喜","東吳","天下","于是","今日","不敢","魏兵","陛下","不知","一人","人馬","漢中","只見","眾將","后主","大叫","上馬","蜀兵"} for ex in excludes:del counts[ex] # 刪除不是人物的值 items = list(counts.items()) # 安裝從大到小進行排序 items.sort(key=lambda x:x[1],reverse=True) # 只要前排序時候出場次數最多的前10個 for i in range(10):word,count = items[i]print("{0:<10}{1:>5}".format(word,count))

運行結果:

曹操 1451 孔明 1383 劉備 1252 關羽 784 周瑜 438 張飛 358 呂布 300 趙云 278 孫權 264 司馬懿 221

3.同樣的道理,我們可以進行西游記等,還有其他的中文文本的統計,

? ? 還有中文的期刊。新聞等,都是可以進行統計的。

總結

以上是生活随笔為你收集整理的jieba库(jieba库的介绍以及分词原理,jieba的三种模式和常用函数,利用Jieba模块进行中文词语的统计)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。