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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中jieba库使用教程

發布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中jieba库使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jieba是python的一個中文分詞庫,下面介紹它的使用方法。

安裝

方式1: pip install jieba方式2: 先下載 http://pypi.python.org/pypi/jieba/ 然后解壓,運行 python setup.py install

功能

下面介紹下jieba的主要功能,具體信息可參考github文檔:https://github.com/fxsjy/jieba

分詞

jieba常用的三種模式:

  • 精確模式,試圖將句子最精確地切開,適合文本分析;
  • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非???#xff0c;但是不能解決歧義;
  • 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
  • 可使用?jieba.cut?和?jieba.cut_for_search?方法進行分詞,兩者所返回的結構都是一個可迭代的 generator,可使用 for 循環來獲得分詞后得到的每一個詞語(unicode),或者直接使用?jieba.lcut?以及?jieba.lcut_for_search?返回 list。

    jieba.Tokenizer(dictionary=DEFAULT_DICT)?:使用該方法可以自定義分詞器,可以同時使用不同的詞典。jieba.dt?為默認分詞器,所有全局分詞相關函數都是該分詞器的映射。

    jieba.cut?和?jieba.lcut?可接受的參數如下:

  • 需要分詞的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
  • cut_all:是否使用全模式,默認值為?False
  • HMM:用來控制是否使用 HMM 模型,默認值為?True
  • jieba.cut_for_search?和?jieba.lcut_for_search?接受 2 個參數:

  • 需要分詞的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
  • HMM:用來控制是否使用 HMM 模型,默認值為?True
  • 需要注意的是,盡量不要使用 GBK 字符串,可能無法預料地錯誤解碼成 UTF-8。

    三種分詞模式的比較:

    # 全匹配 seg_list = jieba.cut("今天哪里都沒去,在家里睡了一天", cut_all=True) print(list(seg_list)) # ['今天', '哪里', '都', '沒去', '', '', '在家', '家里', '睡', '了', '一天']# 精確匹配 默認模式 seg_list = jieba.cut("今天哪里都沒去,在家里睡了一天", cut_all=False) print(list(seg_list)) # ['今天', '哪里', '都', '沒', '去', ',', '在', '家里', '睡', '了', '一天']# 精確匹配 seg_list = jieba.cut_for_search("今天哪里都沒去,在家里睡了一天") print(list(seg_list)) # ['今天', '哪里', '都', '沒', '去', ',', '在', '家里', '睡', '了', '一天']

    自定義詞典

    開發者可以指定自己自定義的詞典,以便包含 jieba 詞庫里沒有的詞。
    用法: jieba.load_userdict(dict_path)

    dict_path:為自定義詞典文件的路徑

    詞典格式如下:

    一個詞占一行;每一行分三部分:詞語、詞頻(可省略)、詞性(可省略),用空格隔開,順序不可顛倒。

    下面使用一個例子說明一下:

    自定義字典 user_dict.txt:

    大學課程 深度學習

    下面比較下精確匹配、全匹配和使用自定義詞典的區別:

    import jiebatest_sent = """ 數學是一門基礎性的大學課程,深度學習是基于數學的,尤其是線性代數課程 """words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學', '課程', ',', '深度', # '學習', '是', '基于', '數學', '的', ',', '尤其', '是', '線性代數', '課程', '\n']words = jieba.cut(test_sent, cut_all=True) print(list(words)) # ['\n', '數學', '是', '一門', '基礎', '基礎性', '的', '大學', '課程', '', '', '深度', # '學習', '是', '基于', '數學', '的', '', '', '尤其', '是', '線性', '線性代數', '代數', '課程', '\n']jieba.load_userdict("userdict.txt") words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學課程', ',', '深度學習', '是', # '基于', '數學', '的', ',', '尤其', '是', '線性代數', '課程', '\n']jieba.add_word("尤其是") jieba.add_word("線性代數課程")words = jieba.cut(test_sent) print(list(words)) # ['\n', '數學', '是', '一門', '基礎性', '的', '大學課程', ',', '深度學習', '是', # '基于', '數學', '的', ',', '尤其是', '線性代數課程', '\n']

    從上面的例子中可以看出,使用自定義詞典與使用默認詞典的區別。

    jieba.add_word():向自定義字典中添加詞語

    關鍵詞提取

    可以基于 TF-IDF 算法進行關鍵詞提取,也可以基于TextRank 算法。 TF-IDF 算法與 elasticsearch 中使用的算法是一樣的。

    使用 jieba.analyse.extract_tags() 函數進行關鍵詞提取,其參數如下:

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

  • sentence 為待提取的文本
  • topK 為返回幾個 TF/IDF 權重最大的關鍵詞,默認值為 20
  • withWeight 為是否一并返回關鍵詞權重值,默認值為 False
  • allowPOS 僅包括指定詞性的詞,默認值為空,即不篩選
  • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件
  • 也可以使用 jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實例,idf_path 為 IDF 頻率文件。

    基于 TF-IDF 算法和TextRank算法的關鍵詞抽取:

    import jieba.analysefile = "sanguo.txt" topK = 12 content = open(file, 'rb').read()# 使用tf-idf算法提取關鍵詞 tags = jieba.analyse.extract_tags(content, topK=topK) print(tags) # ['玄德', '程遠志', '張角', '云長', '張飛', '黃巾', '封谞', '劉焉', '鄧茂', '鄒靖', '姓名', '招軍'] # 使用textrank算法提取關鍵詞 tags2 = jieba.analyse.textrank(content, topK=topK)# withWeight=True:將權重值一起返回 tags = jieba.analyse.extract_tags(content, topK=topK, withWeight=True) print(tags) # [('玄德', 0.1038549799467099), ('程遠志', 0.07787459004363208), ('張角', 0.0722532891360849), # ('云長', 0.07048801593691037), ('張飛', 0.060972692853113214), ('黃巾', 0.058227157790330185), # ('封谞', 0.0563904127495283), ('劉焉', 0.05470798376886792), ('鄧茂', 0.04917692565566038), # ('鄒靖', 0.04427258239705188), ('姓名', 0.04219704283997642), ('招軍', 0.04182041076757075)]

    上面的代碼是讀取文件,提取出現頻率最高的前12個詞。

    詞性標注

    詞性標注主要是標記文本分詞后每個詞的詞性,使用例子如下:

    import jieba import jieba.posseg as pseg# 默認模式 seg_list = pseg.cut("今天哪里都沒去,在家里睡了一天") for word, flag in seg_list:print(word + " " + flag)""" 使用 jieba 默認模式的輸出結果是: 我 r Prefix dict has been built successfully. 今天 t 吃 v 早飯 n 了 ul """# paddle 模式 words = pseg.cut("我今天吃早飯了",use_paddle=True) """ 使用 paddle 模式的輸出結果是: 我 r 今天 TIME 吃 v 早飯 n 了 xc """

    paddle模式的詞性對照表如下:

    總結

    以上是生活随笔為你收集整理的python中jieba库使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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