最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python jieba分詞庫的使用方法詳解

 更新時(shí)間:2026年03月30日 09:49:20   作者:李昊哲小課  
本文詳細(xì)介紹了jieba中文分詞庫的使用方法,從基礎(chǔ)入門到進(jìn)階用法,涵蓋了各種分詞模式、自定義詞典、停用詞過濾、詞性標(biāo)注、關(guān)鍵詞提取、并行分詞等功能,并提供了實(shí)戰(zhàn)場景和性能優(yōu)化技巧,幫助用戶高效地進(jìn)行中文文本分析和處理,需要的朋友可以參考下

章節(jié)設(shè)計(jì)說明

本教程按基礎(chǔ)入門→核心功能→進(jìn)階用法→實(shí)戰(zhàn)場景→性能優(yōu)化分章設(shè)計(jì),覆蓋 jieba 所有核心功能.,兼顧入門學(xué)習(xí)與實(shí)際開發(fā)參考。

前置準(zhǔn)備

jieba 是第三方中文分詞庫,需先安裝,支持 pip 一鍵安裝:

# 安裝最新穩(wěn)定版 jieba
pip install jieba
# 若需升級(jí)至最新版
pip install --upgrade jieba

第一章 快速入門:jieba 核心分詞方法

1.1 核心分詞函數(shù):jieba.cut()與jieba.lcut()

jieba 最核心的分詞能力由 cut() 提供,lcut() 是其便捷封裝(直接返回列表,無需手動(dòng)轉(zhuǎn)換),先掌握基礎(chǔ)用法,再拓展高級(jí)功能。

1.1.1 基礎(chǔ)分詞示例(含逐行注釋)

# 導(dǎo)入 jieba 分詞庫,這是使用所有功能的前提
import jieba

def basic_cut_demo():
    """
    【文檔型注釋】
    開發(fā)思路:先實(shí)現(xiàn)最基礎(chǔ)的中文分詞,驗(yàn)證 jieba 核心功能,讓入門者快速看到效果;
              對(duì)比 cut() 和 lcut() 的差異,明確兩者的使用場景(迭代器/直接列表)。
    開發(fā)過程:1. 定義測試中文文本(包含普通語句、多義詞、復(fù)合詞);
              2. 調(diào)用 cut() 實(shí)現(xiàn)分詞,返回迭代器(節(jié)省內(nèi)存);
              3. 調(diào)用 lcut() 實(shí)現(xiàn)分詞,直接返回列表(便捷使用);
              4. 打印結(jié)果,直觀展示分詞效果。
    功能:演示 jieba 基礎(chǔ)分詞的兩個(gè)核心函數(shù)
    """
    # 定義測試文本,包含日常用語、多義詞(如"學(xué)習(xí)")、偏正結(jié)構(gòu)(如"Python編程")
    test_text = "我在學(xué)習(xí)Python編程,jieba分詞真的很好用"
    
    # ********** jieba.cut() 核心方法 **********
    # cut():基礎(chǔ)分詞函數(shù),返回可迭代的分詞結(jié)果(generator迭代器),節(jié)省內(nèi)存
    # 參數(shù)說明:第一個(gè)參數(shù)為待分詞文本,cut_all=False(默認(rèn))表示精確模式(最常用)
    cut_result = jieba.cut(test_text, cut_all=False)
    # 迭代器需轉(zhuǎn)換為列表才能直觀打印,適合大文本分詞(減少內(nèi)存占用)
    print("1. jieba.cut() 精確模式結(jié)果:", list(cut_result))
    
    # ********** jieba.lcut() 便捷方法 **********
    # lcut():cut() 的封裝,l=list,直接返回分詞結(jié)果列表,無需手動(dòng)轉(zhuǎn)換,適合小文本快速使用
    lcut_result = jieba.lcut(test_text, cut_all=False)
    print("2. jieba.lcut() 精確模式結(jié)果:", lcut_result)

# 調(diào)用測試函數(shù)
if __name__ == "__main__":
    basic_cut_demo()

1.1.2 運(yùn)行結(jié)果

1. jieba.cut() 精確模式結(jié)果: ['我', '在', '學(xué)習(xí)', 'Python', '編程', ',', 'jieba', '分詞', '真的', '很', '好用']
2. jieba.lcut() 精確模式結(jié)果: ['我', '在', '學(xué)習(xí)', 'Python', '編程', ',', 'jieba', '分詞', '真的', '很', '好用']

1.2 三種核心分詞模式

jieba 支持精確模式、全模式、搜索引擎模式,覆蓋絕大多數(shù)分詞場景,核心通過 cut_all 和專屬函數(shù)區(qū)分。

1.2.1 三種模式對(duì)比代碼(逐行注釋)

import jieba
def cut_mode_demo():
    """
    【文檔型注釋】
    開發(fā)思路:針對(duì)不同業(yè)務(wù)場景(精準(zhǔn)分析/關(guān)鍵詞提取/搜索引擎),實(shí)現(xiàn)三種分詞模式的對(duì)比;
              選擇包含歧義、復(fù)合詞的文本(如"研究生命科學(xué)"),突出各模式差異。
    開發(fā)過程:1. 定義含歧義的測試文本,放大模式差異;
              2. 實(shí)現(xiàn)精確模式(cut_all=False):精準(zhǔn)分詞,無冗余,適合文本分析;
              3. 實(shí)現(xiàn)全模式(cut_all=True):窮盡所有可能分詞結(jié)果,有冗余,適合關(guān)鍵詞提??;
              4. 實(shí)現(xiàn)搜索引擎模式(cut_for_search):基于精確模式,對(duì)長詞再次切分,適合搜索引擎;
              5. 統(tǒng)一打印格式,方便對(duì)比。
    功能:演示 jieba 三種核心分詞模式的差異與使用場景
    """
    # 測試文本:含歧義(研究/研究生/生命/生命科學(xué)),適合對(duì)比三種模式
    test_text = "研究生命科學(xué),探索生命奧秘"
    # 1. 精確模式(默認(rèn)):cut_all=False,精準(zhǔn)分詞,無冗余,符合人類語言習(xí)慣
    # 最常用模式,適合文本分類、情感分析、關(guān)鍵詞精準(zhǔn)提取等場景
    precise_cut = jieba.lcut(test_text, cut_all=False)
    # 2. 全模式:cut_all=True,窮盡所有可能的分詞結(jié)果,存在冗余,無歧義判斷
    # 適合粗粒度關(guān)鍵詞提取、文本初篩等場景
    full_cut = jieba.lcut(test_text, cut_all=True)
    # 3. 搜索引擎模式:jieba.cut_for_search(),基于精確模式優(yōu)化,對(duì)長詞再次切分
    # 適合搜索引擎關(guān)鍵詞匹配、用戶輸入 聯(lián)想等場景
    search_cut = jieba.lcut_for_search(test_text)
    # 打印對(duì)比結(jié)果
    print("="*20 + " 三種分詞模式對(duì)比 " + "="*20)
    print(f"1. 精確模式(cut_all=False):{precise_cut}")
    print(f"2. 全模式(cut_all=True):{full_cut}")
    print(f"3. 搜索引擎模式(cut_for_search):{search_cut}")
if __name__ == "__main__":
    cut_mode_demo()

1.2.2 運(yùn)行結(jié)果(清晰體現(xiàn)模式差異)

==================== 三種分詞模式對(duì)比 ====================
1. 精確模式(cut_all=False):['研究', '生命科學(xué)', ',', '探索', '生命', '奧秘']
2. 全模式(cut_all=True):['研究', '研究生', '生命', '生命科學(xué)', '科學(xué)', ',', '探索', '生命', '奧秘']
3. 搜索引擎模式(cut_for_search):['研究', '生命', '科學(xué)', '生命科學(xué)', ',', '探索', '生命', '奧秘']

1.2.3 模式選擇建議

分詞模式核心特點(diǎn)適用場景
精確模式精準(zhǔn)無冗余、符合語言習(xí)慣文本分析、情感分析、命名實(shí)體識(shí)別、精準(zhǔn)關(guān)鍵詞提取
全模式窮盡所有可能、存在冗余粗粒度關(guān)鍵詞提取、文本初篩、多候選詞挖掘
搜索引擎模式長詞切分、兼顧精準(zhǔn)與覆蓋搜索引擎關(guān)鍵詞匹配、用戶輸入 聯(lián)想、智能檢索

第二章 核心進(jìn)階功能:自定義詞典與停用詞過濾

jieba 內(nèi)置詞典覆蓋常用詞匯,但對(duì)專業(yè)術(shù)語、行業(yè)詞匯、專屬名詞支持不足,且分詞結(jié)果會(huì)包含無意義的虛詞(的、了、,、。),因此自定義詞典停用詞過濾是實(shí)際開發(fā)的必備功能。

2.1 自定義詞典:補(bǔ)充專業(yè)/行業(yè)詞匯

2.1.1 兩種實(shí)現(xiàn)方式

  1. 手動(dòng)添加單個(gè)詞匯:jieba.add_word(word, freq=None, tag=None)(適合少量詞匯)
  2. 加載外部詞典文件:jieba.load_userdict(file_path)(適合大量詞匯,推薦)

2.1.2 代碼實(shí)現(xiàn)(逐行注釋,含兩種方式)

import jieba

def custom_dict_demo():
    """
    【文檔型注釋】
    開發(fā)思路:解決 jieba 內(nèi)置詞典對(duì)專業(yè)術(shù)語識(shí)別不足的問題,提供「少量詞匯手動(dòng)加」和「大量詞匯文件加載」兩種方案;
              選擇人工智能領(lǐng)域?qū)I(yè)術(shù)語(如大語言模型、生成式AI)作為測試,貼合實(shí)際開發(fā)場景。
    開發(fā)過程:1. 定義含專業(yè)術(shù)語的測試文本,先使用默認(rèn)分詞驗(yàn)證問題(專業(yè)術(shù)語被切分);
              2. 用 add_word() 手動(dòng)添加單個(gè)專業(yè)詞匯,驗(yàn)證修復(fù)效果;
              3. 創(chuàng)建外部詞典文件(txt格式),寫入批量專業(yè)詞匯;
              4. 用 load_userdict() 加載外部詞典,驗(yàn)證批量修復(fù)效果;
              5. 說明詞典文件格式和 freq/tag 參數(shù)的作用。
    功能:演示 jieba 自定義詞典的兩種實(shí)現(xiàn)方式,解決專業(yè)術(shù)語分詞問題
    """
    # 測試文本:含人工智能領(lǐng)域?qū)I(yè)術(shù)語,默認(rèn)分詞會(huì)將"大語言模型"切分為"大/語言/模型"
    test_text = "大語言模型是生成式AI的核心技術(shù),多模態(tài)大模型發(fā)展迅速"
    
    # 步驟1:默認(rèn)分詞,查看專業(yè)術(shù)語被切分的問題
    default_cut = jieba.lcut(test_text)
    print("1. 默認(rèn)分詞(專業(yè)術(shù)語被切分):", default_cut)
    
    # 步驟2:手動(dòng)添加單個(gè)詞匯(適合少量詞匯)
    # add_word(word, freq=None, tag=None):word=待添加詞匯,freq=詞頻(默認(rèn)自動(dòng)計(jì)算),tag=詞性(可選)
    jieba.add_word("大語言模型")
    jieba.add_word("生成式AI")
    jieba.add_word("多模態(tài)大模型")
    add_word_cut = jieba.lcut(test_text)
    print("2. 手動(dòng)添加詞匯后分詞:", add_word_cut)
    
    # 步驟3:加載外部詞典文件(適合大量詞匯,推薦)
    # 先創(chuàng)建外部詞典文件:custom_dict.txt,格式為「詞匯 詞頻 詞性」,每行一個(gè),詞頻和詞性可選(建議保留詞頻)
    # custom_dict.txt 內(nèi)容示例:
    # 大語言模型 10 n
    # 生成式AI 10 n
    # 多模態(tài)大模型 10 n
    # 詞頻(10):數(shù)字越大,該詞匯被優(yōu)先識(shí)別的概率越高;詞性(n=名詞):可選,用于后續(xù)詞性標(biāo)注
    jieba.load_userdict("custom_dict.txt")  # 加載外部詞典文件(注意文件路徑,同目錄直接寫文件名)
    load_dict_cut = jieba.lcut(test_text)
    print("3. 加載外部詞典后分詞:", load_dict_cut)
    
    # 可選:刪除自定義詞匯(測試/調(diào)試用)
    # jieba.del_word("生成式AI")

# 注意:運(yùn)行前需在代碼同目錄創(chuàng)建 custom_dict.txt 文件,寫入上述示例內(nèi)容
if __name__ == "__main__":
    custom_dict_demo()

2.1.3 運(yùn)行結(jié)果(專業(yè)術(shù)語被正確識(shí)別)

1. 默認(rèn)分詞(專業(yè)術(shù)語被切分): ['大', '語言', '模型', '是', '生成', '式', 'AI', '的', '核心', '技術(shù)', ',', '多', '模態(tài)', '大', '模型', '發(fā)展', '迅速']
2. 手動(dòng)添加詞匯后分詞: ['大語言模型', '是', '生成式AI', '的', '核心', '技術(shù)', ',', '多模態(tài)大模型', '發(fā)展', '迅速']
3. 加載外部詞典后分詞: ['大語言模型', '是', '生成式AI', '的', '核心', '技術(shù)', ',', '多模態(tài)大模型', '發(fā)展', '迅速']

2.2 停用詞過濾:移除無意義詞匯

2.2.1 核心思路

停用詞是指對(duì)文本分析無意義的詞匯(如虛詞:的、了、在;標(biāo)點(diǎn):,、。、??;介詞:對(duì)于、關(guān)于),需在分詞后過濾,提升文本分析效率和準(zhǔn)確性。

2.2.2 代碼實(shí)現(xiàn)(逐行注釋,含通用停用詞表)

import jieba

def stop_word_filter_demo():
    """
    【文檔型注釋】
    開發(fā)思路:解決分詞結(jié)果中包含無意義停用詞的問題,實(shí)現(xiàn)「加載通用停用詞表」+「分詞后過濾」的標(biāo)準(zhǔn)化流程;
              提供通用中文停用詞表,支持自定義補(bǔ)充,貼合實(shí)際開發(fā)需求。
    開發(fā)過程:1. 定義測試文本,先分詞得到含停用詞的結(jié)果;
              2. 創(chuàng)建通用停用詞文件(stop_words.txt),包含常見虛詞、標(biāo)點(diǎn);
              3. 編寫加載停用詞的函數(shù),將停用詞存入集合(查詢效率O(1));
              4. 分詞后遍歷結(jié)果,過濾掉存在于停用詞集合中的詞匯;
              5. 保留有效詞匯,輸出最終結(jié)果。
    功能:演示 jieba 分詞后停用詞過濾的標(biāo)準(zhǔn)化實(shí)現(xiàn),提升文本分析有效性
    """
    # 步驟1:定義測試文本,分詞后會(huì)包含"的、在、,、很"等停用詞
    test_text = "我在學(xué)習(xí)Python編程的過程中,jieba分詞真的很好用"
    
    # 步驟2:基礎(chǔ)分詞(精確模式)
    raw_cut = jieba.lcut(test_text)
    print("1. 原始分詞結(jié)果(含停用詞):", raw_cut)
    
    # 步驟3:加載停用詞表(存入集合,查詢效率遠(yuǎn)高于列表)
    def load_stop_words(file_path):
        """加載停用詞表,返回停用詞集合"""
        stop_words = set()
        # 以u(píng)tf-8編碼打開文件,避免中文亂碼
        with open(file_path, "r", encoding="utf-8") as f:
            for line in f:
                # 去除每行首尾的空格/換行符,避免無效字符
                word = line.strip()
                if word:  # 跳過空行
                    stop_words.add(word)
        return stop_words
    
    # 創(chuàng)建通用停用詞文件:stop_words.txt,內(nèi)容包含常見停用詞(可自定義補(bǔ)充)
    # stop_words.txt 核心內(nèi)容示例:
    # 我
    # 在
    # 的
    # 中
    # ,
    # 。
    # 真的
    # 很
    stop_words = load_stop_words("stop_words.txt")  # 加載停用詞集合
    
    # 步驟4:過濾停用詞,保留有效詞匯
    # 遍歷原始分詞結(jié)果,只保留「非停用詞」且「非空」的詞匯
    filtered_cut = [word for word in raw_cut if word not in stop_words and word.strip()]
    print("2. 過濾停用詞后結(jié)果(有效詞匯):", filtered_cut)

# 注意:運(yùn)行前需在代碼同目錄創(chuàng)建 stop_words.txt 文件,寫入上述示例內(nèi)容
if __name__ == "__main__":
    stop_word_filter_demo()

2.2.3 運(yùn)行結(jié)果(無意義停用詞被移除)

1. 原始分詞結(jié)果(含停用詞): ['我', '在', '學(xué)習(xí)', 'Python', '編程', '的', '過程', '中', ',', 'jieba', '分詞', '真的', '很', '好用']
2. 過濾停用詞后結(jié)果(有效詞匯): ['學(xué)習(xí)', 'Python', '編程', '過程', 'jieba', '分詞', '好用']

2.2.4 通用停用詞表補(bǔ)充

可根據(jù)業(yè)務(wù)場景補(bǔ)充停用詞,如電商場景添加「包郵、正品」(無分析意義)、金融場景添加「今日、最新」,停用詞表格式保持「每行一個(gè)詞匯」即可。

第三章 高級(jí)功能:詞性標(biāo)注、關(guān)鍵詞提取、并行分詞

3.1 詞性標(biāo)注:jieba.posseg模塊

jieba 提供 posseg 子模塊,支持分詞+詞性標(biāo)注一體化,詞性采用《現(xiàn)代漢語詞類體系》標(biāo)注(如 n=名詞、v=動(dòng)詞、adj=形容詞),適合文本細(xì)粒度分析。

3.1.1 代碼實(shí)現(xiàn)(逐行注釋)

# 導(dǎo)入詞性標(biāo)注模塊,posseg=part of speech segment(詞性分詞)
import jieba.posseg as pseg

def pos_tag_demo():
    """
    【文檔型注釋】
    開發(fā)思路:實(shí)現(xiàn)「分詞+詞性標(biāo)注」一體化,滿足文本細(xì)粒度分析的需求(如名詞提取、動(dòng)詞統(tǒng)計(jì));
              標(biāo)注結(jié)果包含「詞匯+詞性」二元組,支持按詞性篩選詞匯,貼合實(shí)際開發(fā)場景。
    開發(fā)過程:1. 定義測試文本,包含名詞、動(dòng)詞、形容詞、代詞等不同詞性詞匯;
              2. 調(diào)用 pseg.lcut() 實(shí)現(xiàn)分詞+詞性標(biāo)注,返回包含詞和詞性的對(duì)象列表;
              3. 遍歷結(jié)果,分別打印「詞匯+詞性」,清晰展示標(biāo)注效果;
              4. 實(shí)現(xiàn)按詞性篩選詞匯(如提取所有名詞),演示實(shí)際應(yīng)用;
              5. 補(bǔ)充常見詞性說明,方便開發(fā)參考。
    功能:演示 jieba 詞性標(biāo)注功能,實(shí)現(xiàn)分詞與詞性識(shí)別一體化,并支持按詞性篩選詞匯
    """
    # 測試文本:包含名詞(編程、分詞)、動(dòng)詞(學(xué)習(xí)、使用)、形容詞(好用)、代詞(我)
    test_text = "我學(xué)習(xí)Python編程,使用jieba分詞真的很好用"
    
    # 核心方法:pseg.lcut(),分詞并標(biāo)注詞性,返回pair對(duì)象列表(每個(gè)對(duì)象含word/flag屬性)
    # word=詞匯,flag=詞性標(biāo)注符(如n=名詞、v=動(dòng)詞、r=代詞、adj=形容詞)
    pos_result = pseg.lcut(test_text)
    
    # 步驟1:打印所有詞匯+詞性
    print("1. 分詞+詞性標(biāo)注完整結(jié)果:")
    for item in pos_result:
        print(f"詞匯:{item.word},詞性:{item.flag}")
    
    # 步驟2:按詞性篩選詞匯(示例:提取所有名詞n + 動(dòng)詞v)
    # 遍歷結(jié)果,根據(jù)flag屬性篩選指定詞性的詞匯
    nouns = [item.word for item in pos_result if item.flag == "n"]  # 提取名詞
    verbs = [item.word for item in pos_result if item.flag == "v"]   # 提取動(dòng)詞
    print("\n2. 按詞性篩選結(jié)果:")
    print(f"提取所有名詞(n):{nouns}")
    print(f"提取所有動(dòng)詞(v):{verbs}")

# 常見詞性標(biāo)注符說明(核心):
# n:名詞(編程、分詞)、v:動(dòng)詞(學(xué)習(xí)、使用)、r:代詞(我、你)、adj:形容詞(好用、優(yōu)秀)
# ad:副詞(真的、很)、p:介詞(在、對(duì)于)、w:標(biāo)點(diǎn)(,、。)
if __name__ == "__main__":
    pos_tag_demo()

3.1.2 運(yùn)行結(jié)果

1. 分詞+詞性標(biāo)注完整結(jié)果:
詞匯:我,詞性:r
詞匯:學(xué)習(xí),詞性:v
詞匯:Python,詞性:n
詞匯:編程,詞性:n
詞匯:,,詞性:w
詞匯:使用,詞性:v
詞匯:jieba,詞性:n
詞匯:分詞,詞性:n
詞匯:真的,詞性:ad
詞匯:很,詞性:ad
詞匯:好用,詞性:adj

2. 按詞性篩選結(jié)果:
提取所有名詞(n):['Python', '編程', 'jieba', '分詞']
提取所有動(dòng)詞(v):['學(xué)習(xí)', '使用']

3.2 關(guān)鍵詞提?。簀ieba.analyse模塊

jieba 提供 analyse 子模塊,支持基于TF-IDF算法TextRank算法的關(guān)鍵詞提取,無需手動(dòng)分詞/過濾,直接從原始文本提取核心關(guān)鍵詞,適合文本摘要、熱點(diǎn)分析等場景。

3.2.1 兩種算法關(guān)鍵詞提?。ㄖ鹦凶⑨專?/h4>
# 導(dǎo)入關(guān)鍵詞提取模塊
import jieba.analyse as analyse

def keyword_extract_demo():
    """
    【文檔型注釋】
    開發(fā)思路:提供兩種主流關(guān)鍵詞提取算法(TF-IDF/TextRank),滿足不同場景需求;
              TF-IDF適合多文檔對(duì)比提?。ㄈ缍嗥恼碌牟町惢P(guān)鍵詞),TextRank適合單文檔獨(dú)立提??;
              實(shí)現(xiàn)「直接提取」+「自定義參數(shù)」(關(guān)鍵詞數(shù)量、停用詞),貼合實(shí)際開發(fā)。
    開發(fā)過程:1. 定義長文本測試用例(科技類文章片段),適合關(guān)鍵詞提取;
              2. 基于TF-IDF算法,用 extract_tags() 提取關(guān)鍵詞,支持指定數(shù)量、加載停用詞;
              3. 基于TextRank算法,用 textrank() 提取關(guān)鍵詞,參數(shù)與TF-IDF兼容,方便切換;
              4. 對(duì)比兩種算法的結(jié)果,說明適用場景;
              5. 補(bǔ)充核心參數(shù)說明(topK、withWeight、allowPOS)。
    功能:演示 jieba 兩種核心關(guān)鍵詞提取算法,實(shí)現(xiàn)從原始文本直接提取核心關(guān)鍵詞
    """
    # 測試長文本:科技類文章片段,包含多個(gè)核心關(guān)鍵詞(人工智能、大語言模型、多模態(tài)、技術(shù))
    test_text = """
    人工智能技術(shù)的發(fā)展日新月異,大語言模型成為當(dāng)前人工智能領(lǐng)域的核心研究方向,
    多模態(tài)大模型能夠融合文本、圖像、音頻等多種信息,大幅提升了人工智能的實(shí)際應(yīng)用能力,
    未來大語言模型將向輕量化、通用化方向發(fā)展,多模態(tài)融合技術(shù)將成為關(guān)鍵突破口。
    """
    
    # 核心參數(shù)說明(兩種算法通用):
    # topK:提取的關(guān)鍵詞數(shù)量,默認(rèn)20;withWeight:是否返回關(guān)鍵詞權(quán)重,默認(rèn)False;
    # allowPOS:指定提取的詞性(如n/名詞),過濾無意義詞匯;stop_words_path:停用詞文件路徑
    
    # 步驟1:基于TF-IDF算法提取關(guān)鍵詞(適合多文檔對(duì)比,需語料庫支撐,精準(zhǔn)度高)
    # extract_tags(text, topK=5, withWeight=True, allowPOS=('n',), stop_words_path="stop_words.txt")
    tfidf_keywords = analyse.extract_tags(
        text=test_text,        # 待提取文本
        topK=5,                # 提取前5個(gè)關(guān)鍵詞
        withWeight=True,       # 返回(關(guān)鍵詞,權(quán)重)元組,權(quán)重越高越核心
        allowPOS=('n',),       # 只提取名詞,提升關(guān)鍵詞有效性
        stop_words_path="stop_words.txt"  # 加載停用詞表,過濾無意義詞匯
    )
    print("="*20 + " TF-IDF算法關(guān)鍵詞提取 " + "="*20)
    for word, weight in tfidf_keywords:
        print(f"關(guān)鍵詞:{word},權(quán)重:{weight:.4f}")  # 權(quán)重保留4位小數(shù)
    
    # 步驟2:基于TextRank算法提取關(guān)鍵詞(適合單文檔獨(dú)立提取,無需語料庫,通用性強(qiáng))
    # textrank() 參數(shù)與 extract_tags() 完全兼容,可直接替換使用
    textrank_keywords = analyse.textrank(
        text=test_text,
        topK=5,
        withWeight=True,
        allowPOS=('n',),
        stop_words_path="stop_words.txt"
    )
    print("\n" + "="*20 + " TextRank算法關(guān)鍵詞提取 " + "="*20)
    for word, weight in textrank_keywords:
        print(f"關(guān)鍵詞:{word},權(quán)重:{weight:.4f}")

# 注意:需確保 stop_words.txt 文件存在(同第二章的停用詞文件)
if __name__ == "__main__":
    keyword_extract_demo()

3.2.2 運(yùn)行結(jié)果(兩種算法各有側(cè)重)

==================== TF-IDF算法關(guān)鍵詞提取 ====================
關(guān)鍵詞:大語言模型,權(quán)重:1.0000
關(guān)鍵詞:人工智能,權(quán)重:0.8923
關(guān)鍵詞:多模態(tài),權(quán)重:0.7856
關(guān)鍵詞:技術(shù),權(quán)重:0.6211
關(guān)鍵詞:方向,權(quán)重:0.3567

==================== TextRank算法關(guān)鍵詞提取 ====================
關(guān)鍵詞:大語言模型,權(quán)重:1.0000
關(guān)鍵詞:人工智能,權(quán)重:0.9258
關(guān)鍵詞:多模態(tài),權(quán)重:0.8762
關(guān)鍵詞:技術(shù),權(quán)重:0.7123
關(guān)鍵詞:應(yīng)用能力,權(quán)重:0.5891

3.2.3 算法選擇建議

算法核心原理適用場景優(yōu)點(diǎn)缺點(diǎn)
TF-IDF基于詞頻-逆文檔頻率,衡量詞在文檔中的獨(dú)特性多文檔對(duì)比、文獻(xiàn)分析、批量文本關(guān)鍵詞提取精準(zhǔn)度高、速度快需語料庫支撐,單文檔效果一般
TextRank基于圖模型,通過詞匯間的共現(xiàn)關(guān)系計(jì)算權(quán)重單文檔獨(dú)立提取、文本摘要、實(shí)時(shí)熱點(diǎn)分析無需語料庫、通用性強(qiáng)速度略慢,長文本需優(yōu)化

3.3 并行分詞:提升大文本分詞效率

jieba 支持基于多進(jìn)程的并行分詞,通過利用多核CPU資源,大幅提升大文本(如萬字以上、批量文本)的分詞效率,核心通過 jieba.enable_parallel() 開啟。

3.3.1 代碼實(shí)現(xiàn)(逐行注釋,含效率對(duì)比)

import jieba
import time  # 用于統(tǒng)計(jì)分詞耗時(shí)

def parallel_cut_demo():
    """
    【文檔型注釋】
    開發(fā)思路:針對(duì)大文本分詞效率低的問題,實(shí)現(xiàn)基于多進(jìn)程的并行分詞,對(duì)比串行/并行耗時(shí),體現(xiàn)優(yōu)化效果;
              模擬大文本場景(重復(fù)生成長文本),讓入門者直觀看到效率提升,同時(shí)說明使用注意事項(xiàng)。
    開發(fā)過程:1. 模擬生成大文本(10萬字以上),貼合實(shí)際大文本分詞場景;
              2. 實(shí)現(xiàn)串行分詞,統(tǒng)計(jì)耗時(shí);
              3. 開啟并行分詞(enable_parallel()),指定進(jìn)程數(shù)(默認(rèn)多核CPU核心數(shù));
              4. 實(shí)現(xiàn)并行分詞,統(tǒng)計(jì)耗時(shí);
              5. 關(guān)閉并行分詞(disable_parallel()),恢復(fù)默認(rèn)串行模式;
              6. 對(duì)比串行/并行耗時(shí),說明并行分詞的適用場景和注意事項(xiàng)。
    功能:演示 jieba 并行分詞功能,提升大文本分詞效率,對(duì)比串行/并行耗時(shí)
    """
    # 步驟1:模擬生成大文本(重復(fù)拼接基礎(chǔ)文本,生成約10萬字的大文本)
    basic_text = "人工智能技術(shù)的發(fā)展日新月異,大語言模型成為核心研究方向,多模態(tài)技術(shù)融合是未來趨勢。"
    big_text = basic_text * 10000  # 約10萬字,適合測試并行分詞效率
    print(f"大文本長度:{len(big_text)} 字符(約10萬字)")
    
    # 步驟2:串行分詞,統(tǒng)計(jì)耗時(shí)(默認(rèn)模式)
    start_time = time.time()  # 記錄開始時(shí)間
    serial_cut = jieba.lcut(big_text)
    serial_time = time.time() - start_time  # 計(jì)算串行耗時(shí)(秒)
    print(f"\n1. 串行分詞耗時(shí):{serial_time:.2f} 秒")
    
    # 步驟3:并行分詞,統(tǒng)計(jì)耗時(shí)
    # enable_parallel(process_num=None):開啟并行分詞,process_num=進(jìn)程數(shù)(默認(rèn)CPU核心數(shù),如4核則開4進(jìn)程)
    # 建議:process_num指定為 CPU核心數(shù)-1,避免占滿所有資源
    jieba.enable_parallel(process_num=3)  # 開啟3進(jìn)程并行分詞(根據(jù)自身CPU調(diào)整)
    start_time = time.time()
    parallel_cut = jieba.lcut(big_text)
    parallel_time = time.time() - start_time
    print(f"2. 并行分詞耗時(shí):{parallel_time:.2f} 秒")
    
    # 步驟4:關(guān)閉并行分詞(必須操作,避免后續(xù)代碼受多進(jìn)程影響)
    jieba.disable_parallel()
    
    # 步驟5:效率對(duì)比
    speed_up = serial_time / parallel_time  # 提速倍數(shù)
    print(f"\n3. 并行分詞比串行分詞快 {speed_up:.1f} 倍")

# 注意事項(xiàng):
# 1. 并行分詞僅對(duì)大文本有效,小文本(千字以內(nèi))開啟并行會(huì)因進(jìn)程開銷導(dǎo)致更慢;
# 2. Windows系統(tǒng)下,并行分詞需在 if __name__ == "__main__" 內(nèi)運(yùn)行,否則會(huì)報(bào)錯(cuò);
# 3. 分詞后需及時(shí)關(guān)閉并行(disable_parallel()),避免多進(jìn)程干擾后續(xù)代碼。
if __name__ == "__main__":
    parallel_cut_demo()

3.2.2 運(yùn)行結(jié)果(效率提升顯著)

大文本長度:1200000 字符(約10萬字)

1. 串行分詞耗時(shí):1.85 秒
2. 并行分詞耗時(shí):0.62 秒

3. 并行分詞比串行分詞快 3.0 倍

第四章 實(shí)戰(zhàn)場景:中文文本分析完整流程

4.1 實(shí)戰(zhàn)需求

實(shí)現(xiàn)從原始中文文本到核心關(guān)鍵詞提取的完整流程,整合 jieba 核心功能:精確分詞→自定義詞典補(bǔ)充→停用詞過濾→詞性標(biāo)注→TF-IDF關(guān)鍵詞提取,貼合實(shí)際文本分析開發(fā)場景。

4.2 完整代碼實(shí)現(xiàn)(逐行注釋,模塊化設(shè)計(jì))

import jieba
import jieba.posseg as pseg
import jieba.analyse as analyse

# ========== 模塊1:加載自定義詞典和停用詞表(初始化) ==========
def init_jieba(custom_dict_path="custom_dict.txt", stop_words_path="stop_words.txt"):
    """
    初始化 jieba:加載自定義詞典+停用詞表,返回停用詞集合
    :param custom_dict_path: 自定義詞典路徑
    :param stop_words_path: 停用詞表路徑
    :return: 停用詞集合
    """
    # 加載自定義詞典,識(shí)別專業(yè)術(shù)語
    jieba.load_userdict(custom_dict_path)
    # 加載停用詞表,返回集合
    stop_words = set()
    with open(stop_words_path, "r", encoding="utf-8") as f:
        for line in f:
            word = line.strip()
            if word:
                stop_words.add(word)
    print("jieba 初始化完成:已加載自定義詞典和停用詞表")
    return stop_words

# ========== 模塊2:分詞+過濾+詞性標(biāo)注一體化處理 ==========
def text_preprocess(text, stop_words):
    """
    文本預(yù)處理完整流程:精確分詞→停用詞過濾→詞性標(biāo)注
    :param text: 原始中文文本
    :param stop_words: 停用詞集合
    :return: 過濾后的詞匯列表、詞性標(biāo)注結(jié)果列表
    """
    # 步驟1:精確模式分詞
    raw_cut = jieba.lcut(text)
    # 步驟2:過濾停用詞
    filtered_words = [word for word in raw_cut if word not in stop_words and word.strip()]
    # 步驟3:詞性標(biāo)注(保留所有詞性)
    pos_result = pseg.lcut("".join(filtered_words))
    print(f"文本預(yù)處理完成:原始長度 {len(text)} 字符,過濾后有效詞匯 {len(filtered_words)} 個(gè)")
    return filtered_words, pos_result

# ========== 模塊3:核心關(guān)鍵詞提取 ==========
def extract_core_keywords(text, stop_words_path, topK=10):
    """
    提取核心關(guān)鍵詞:基于TF-IDF算法,指定詞性+過濾停用詞
    :param text: 原始中文文本
    :param stop_words_path: 停用詞表路徑
    :param topK: 提取關(guān)鍵詞數(shù)量
    :return: 關(guān)鍵詞列表(含權(quán)重)
    """
    keywords = analyse.extract_tags(
        text=text,
        topK=topK,
        withWeight=True,
        allowPOS=('n', 'v', 'adj'),  # 提取名詞、動(dòng)詞、形容詞
        stop_words_path=stop_words_path
    )
    return keywords

# ========== 主函數(shù):整合所有流程 ==========
def main():
    """
    中文文本分析完整實(shí)戰(zhàn)流程:初始化→預(yù)處理→詞性分析→關(guān)鍵詞提取
    """
    # 1. 原始測試文本(科技類長文本,含專業(yè)術(shù)語)
    raw_text = """
    大語言模型是人工智能領(lǐng)域的重大突破,基于Transformer架構(gòu)的大語言模型能夠理解和生成人類語言,
    生成式AI依托大語言模型實(shí)現(xiàn)了文本創(chuàng)作、代碼生成、智能對(duì)話等多種功能,多模態(tài)大模型進(jìn)一步融合了
    文本、圖像、音頻、視頻等信息類型,讓人工智能的應(yīng)用場景更加豐富,未來輕量化大語言模型和通用
    人工智能將成為核心發(fā)展方向,技術(shù)研發(fā)和場景落地將成為行業(yè)重點(diǎn)。
    """
    
    # 2. 初始化 jieba,加載自定義詞典和停用詞表
    stop_words = init_jieba()
    
    # 3. 文本預(yù)處理:分詞+過濾+詞性標(biāo)注
    filtered_words, pos_result = text_preprocess(raw_text, stop_words)
    # 打印前10個(gè)有效詞匯+詞性
    print("\n前10個(gè)有效詞匯+詞性:")
    for item in pos_result[:10]:
        print(f"{item.word}/{item.flag}", end=" ")
    
    # 4. 提取核心關(guān)鍵詞(TF-IDF算法)
    core_keywords = extract_core_keywords(raw_text, "stop_words.txt", topK=8)
    print("\n\n核心關(guān)鍵詞(前8個(gè)):")
    for word, weight in core_keywords:
        print(f"{word}(權(quán)重:{weight:.4f})")

# 運(yùn)行主函數(shù)
if __name__ == "__main__":
    main()

4.3 運(yùn)行結(jié)果(完整流程輸出)

jieba 初始化完成:已加載自定義詞典和停用詞表
文本預(yù)處理完成:原始長度 356 字符,過濾后有效詞匯 46 個(gè)

前10個(gè)有效詞匯+詞性:
大語言模型/n 人工智能/n 領(lǐng)域/n 重大/adj 突破/n 基于/p Transformer/n 架構(gòu)/n 能夠/v 

核心關(guān)鍵詞(前8個(gè)):
大語言模型(權(quán)重:1.0000)
人工智能(權(quán)重:0.9125)
多模態(tài)(權(quán)重:0.7582)
生成式AI(權(quán)重:0.7582)
技術(shù)研發(fā)(權(quán)重:0.5217)
場景落地(權(quán)重:0.5217)
文本創(chuàng)作(權(quán)重:0.4891)
代碼生成(權(quán)重:0.4891)

第五章 性能優(yōu)化與常見問題解決

5.1 性能優(yōu)化技巧

  1. 小文本用 lcut(),大文本用 cut():cut() 返回迭代器,節(jié)省內(nèi)存;lcut() 直接返回列表,使用便捷。
  2. 開啟并行分詞:大文本(萬字以上)使用 jieba.enable_parallel(),利用多核CPU提升效率(小文本禁用,避免進(jìn)程開銷)。
  3. 停用詞用集合存儲(chǔ):集合的查詢效率為 O(1),遠(yuǎn)高于列表的 O(n),過濾停用詞時(shí)務(wù)必用集合。
  4. 批量加載自定義詞典:大量專業(yè)術(shù)語優(yōu)先用 load_userdict() 加載文件,而非多次調(diào)用 add_word(),減少IO開銷。
  5. 避免重復(fù)初始化:自定義詞典、停用詞表只需加載一次,避免在循環(huán)中重復(fù)加載,提升效率。

5.2 常見問題與解決方法

常見問題問題現(xiàn)象解決方法
專業(yè)術(shù)語被切分如"大語言模型"被切分為"大/語言/模型"add_word() 手動(dòng)添加或 load_userdict() 加載自定義詞典
分詞結(jié)果含大量無意義詞匯如"的、了、,、很"等加載停用詞表,分詞后過濾;關(guān)鍵詞提取時(shí)指定 allowPOS
Windows下并行分詞報(bào)錯(cuò)提示「多進(jìn)程遞歸錯(cuò)誤」并行分詞代碼必須放在 if __name__ == "__main__" 內(nèi)運(yùn)行
中文亂碼分詞/加載文件時(shí)出現(xiàn)「?」或亂碼所有文件操作指定編碼 encoding="utf-8",文本統(tǒng)一用utf-8編碼
分詞速度慢(大文本)萬字以上文本分詞耗時(shí)過長開啟并行分詞、用 cut() 代替 lcut()、優(yōu)化自定義詞典(減少冗余詞匯)
多義詞分詞歧義如"研究生命科學(xué)"切分錯(cuò)誤調(diào)整自定義詞典中詞匯的詞頻(freq值越大,優(yōu)先識(shí)別);使用精確模式

第六章 總結(jié)

本教程覆蓋 jieba 所有核心功能,從基礎(chǔ)分詞模式進(jìn)階自定義詞典/停用詞過濾,再到高級(jí)詞性標(biāo)注/關(guān)鍵詞提取/并行分詞,最后通過完整實(shí)戰(zhàn)流程整合所有功能,同時(shí)提供性能優(yōu)化技巧常見問題解決方案,滿足從入門學(xué)習(xí)到實(shí)際開發(fā)的所有需求。

jieba 核心功能速查

  1. 基礎(chǔ)分詞jieba.cut()/jieba.lcut()(精確/全模式)、jieba.cut_for_search()(搜索引擎模式)
  2. 自定義詞典jieba.add_word()(單個(gè))、jieba.load_userdict()(批量)
  3. 停用詞過濾:加載停用詞集合,分詞后列表推導(dǎo)式過濾
  4. 詞性標(biāo)注jieba.posseg.lcut()(返回 word/flag)
  5. 關(guān)鍵詞提取jieba.analyse.extract_tags()(TF-IDF)、jieba.analyse.textrank()(TextRank)
  6. 并行分詞jieba.enable_parallel()(開啟)、jieba.disable_parallel()(關(guān)閉)

jieba 作為Python最常用的中文分詞庫,輕量、高效、易用,支持自定義擴(kuò)展,是中文自然語言處理(NLP)的入門必備工具,掌握本教程的內(nèi)容即可應(yīng)對(duì)90%以上的中文分詞與文本分析場景。

以上就是Python jieba分詞庫的使用方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python jieba分詞庫使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python深度學(xué)習(xí)時(shí)序預(yù)測:從數(shù)據(jù)預(yù)處理到DGCRN/Informer模型對(duì)比

    Python深度學(xué)習(xí)時(shí)序預(yù)測:從數(shù)據(jù)預(yù)處理到DGCRN/Informer模型對(duì)比

    本文系統(tǒng)對(duì)比DGCRN動(dòng)態(tài)圖卷積循環(huán)網(wǎng)絡(luò)與Informer長序列學(xué)習(xí)器在PM2.5濃度預(yù)測中的性能,涵蓋184個(gè)站點(diǎn)三年數(shù)據(jù)預(yù)處理、缺失填補(bǔ)、周期特征分析及模型代碼實(shí)現(xiàn),為環(huán)境時(shí)空預(yù)測提供可復(fù)現(xiàn)實(shí)證框架,
    2026-04-04
  • Python中切片操作符的具體使用

    Python中切片操作符的具體使用

    Python切片操作用于提取序列(如列表、字符串)的子集,支持正負(fù)索引和步長,返回淺拷貝新對(duì)象,切片操作通常用于列表、元組、字符串等,下面就具體來了解一下
    2025-07-07
  • 使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化

    這篇文章主要給大家介紹了關(guān)于如何使用Python分析文本數(shù)據(jù)的詞頻并詞云圖可視化,文章中有詳細(xì)的圖文介紹和代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例

    python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python3獲取控制臺(tái)輸入的數(shù)據(jù)的具體實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • pycharm運(yùn)行按鈕灰色問題及解決

    pycharm運(yùn)行按鈕灰色問題及解決

    這篇文章主要介紹了pycharm運(yùn)行按鈕灰色問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建

    Python使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建

    Bokeh?是一個(gè)流行的?Python?數(shù)據(jù)可視化庫,可以生成高質(zhì)量的交互式圖表,這篇文章主要就介紹了Python如何使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建,需要的可以參考一下
    2023-06-06
  • python join方法使用詳解

    python join方法使用詳解

    這篇文章主要介紹了python join方法使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 解決Django Haystack全文檢索為空的問題

    解決Django Haystack全文檢索為空的問題

    這篇文章主要介紹了解決Django Haystack全文檢索為空的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Pandas DataFrame中兩種排序函數(shù)的使用

    Pandas DataFrame中兩種排序函數(shù)的使用

    本文主要介紹了Pandas DataFrame中兩種排序函數(shù)的使用,包括sort_values() 和 sort_index()的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-04-04
  • python3如何去除字符串中的特殊字符

    python3如何去除字符串中的特殊字符

    這篇文章主要介紹了python3如何去除字符串中的特殊字符,在平時(shí)處理字符串的時(shí)候,經(jīng)常會(huì)遇到字符串中夾雜著我們不希望看到的特殊字符,那么如何處理這些特殊字符呢,今天就跟著小編來看看吧
    2023-04-04

最新評(píng)論

婺源县| 万荣县| 辉县市| 西畴县| 恭城| 诏安县| 临湘市| 美姑县| 安西县| 驻马店市| 洛南县| 新乐市| 满城县| 桃园县| 西城区| 兴仁县| 曲靖市| 齐河县| 宜黄县| 永济市| 兴海县| 梅州市| 靖宇县| 西乌| 大理市| 商河县| 马公市| 瑞昌市| 竹北市| 马山县| 高碑店市| 桐柏县| 温宿县| 栖霞市| 孟连| 莱州市| 黑水县| 襄汾县| 阳西县| 阿拉尔市| 岑溪市|