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

python中jieba庫(中文分詞庫)使用安裝教程

 更新時(shí)間:2023年04月26日 09:49:37   作者:kaims  
這篇文章主要介紹了python中jieba庫(中文分詞庫)使用安裝教程,jieba庫是通過中文詞庫的方式來識(shí)別分詞的。它首先利用一個(gè)中文詞庫,通過詞庫計(jì)算漢字之間構(gòu)成詞語的關(guān)聯(lián)概率,所以通過計(jì)算漢字之間的概率,就可以形成分詞的結(jié)果,需要的朋友可以參考下

python中jieba庫(中文分詞庫)使用安裝教程

介紹

jieba是優(yōu)秀的中文分詞第三方庫。由于中文文本之間每個(gè)漢字都是連續(xù)書寫的,我們需要通過特定的手段來獲得其中的每個(gè)單詞,這種手段就叫分詞。而jieba是Python計(jì)算生態(tài)中非常優(yōu)秀的中文分詞第三方庫,需要通過安裝來使用它。

jieba庫提供了三種分詞模式,但實(shí)際上要達(dá)到分詞效果只要掌握一個(gè)函數(shù)就足夠了,非常的簡單有效。

安裝第三方庫需要使用pip工具,在命令行下運(yùn)行安裝命令(不是IDLE)。注意:需要將Python目錄和其目錄下的Scripts目錄加到環(huán)境變量中。

使用命令pip install jieba安裝第三方庫,安裝之后會(huì)提示successfully installed,告知是否安裝成功。

分詞原理:簡單來說,jieba庫是通過中文詞庫的方式來識(shí)別分詞的。它首先利用一個(gè)中文詞庫,通過詞庫計(jì)算漢字之間構(gòu)成詞語的關(guān)聯(lián)概率,所以通過計(jì)算漢字之間的概率,就可以形成分詞的結(jié)果。當(dāng)然,除了jieba自帶的中文詞庫,用戶也可以向其中增加自定義的詞組,從而使jieba的分詞更接近某些具體領(lǐng)域的使用。

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

安裝

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

功能

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

分詞

jieba常用的三種模式:

  • 精確模式,試圖將句子最精確地切開,適合文本分析;
  • 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
  • 搜索引擎模式,在精確模式的基礎(chǔ)上,對(duì)長詞再次切分,提高召回率,適合用于搜索引擎分詞。

可使用 jieba.cut 和 jieba.cut_for_search 方法進(jìn)行分詞,兩者所返回的結(jié)構(gòu)都是一個(gè)可迭代的 generator,可使用 for 循環(huán)來獲得分詞后得到的每一個(gè)詞語(unicode),或者直接使用 jieba.lcut 以及 jieba.lcut_for_search 返回 list。

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

jieba.cut 和 jieba.lcut 可接受的參數(shù)如下:

  • 需要分詞的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
  • cut_all:是否使用全模式,默認(rèn)值為 False
  • HMM:用來控制是否使用 HMM 模型,默認(rèn)值為 True

jieba.cut_for_search 和 jieba.lcut_for_search 接受 2 個(gè)參數(shù):

  • 需要分詞的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
  • HMM:用來控制是否使用 HMM 模型,默認(rèn)值為 True

需要注意的是,盡量不要使用 GBK 字符串,可能無法預(yù)料地錯(cuò)誤解碼成 UTF-8。

三種分詞模式的比較:

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

自定義詞典

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

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

詞典格式如下:

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

下面使用一個(gè)例子說明一下:

自定義字典 user_dict.txt:

大學(xué)課程
深度學(xué)習(xí)

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

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

從上面的例子中可以看出,使用自定義詞典與使用默認(rèn)詞典的區(qū)別。

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

關(guān)鍵詞提取

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

使用 jieba.analyse.extract_tags() 函數(shù)進(jìn)行關(guān)鍵詞提取,其參數(shù)如下:

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

  • sentence 為待提取的文本
  • topK 為返回幾個(gè) TF/IDF 權(quán)重最大的關(guān)鍵詞,默認(rèn)值為 20
  • withWeight 為是否一并返回關(guān)鍵詞權(quán)重值,默認(rèn)值為 False
  • allowPOS 僅包括指定詞性的詞,默認(rèn)值為空,即不篩選
  • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實(shí)例,idf_path 為 IDF 頻率文件

也可以使用 jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 實(shí)例,idf_path 為 IDF 頻率文件。

基于 TF-IDF 算法和TextRank算法的關(guān)鍵詞抽取:

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

上面的代碼是讀取文件,提取出現(xiàn)頻率最高的前12個(gè)詞。

詞性標(biāo)注

詞性標(biāo)注主要是標(biāo)記文本分詞后每個(gè)詞的詞性,使用例子如下:

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

paddle模式的詞性對(duì)照表如下:

補(bǔ)充:Python中文分詞庫——jieba的用法

.使用說明

jieba分詞有三種模式:精確模式、全模式和搜索引擎模式。

簡單說,精確模式就是把一段文本精確的切分成若干個(gè)中文單詞,若干個(gè)中文單詞之間經(jīng)過組合就精確的還原為之前的文本,其中不存在冗余單詞。精確模式是最常用的分詞模式。

進(jìn)一步j(luò)ieba又提供了全模式,全模式是把一段中文文本中所有可能的詞語都掃描出來,可能有一段文本它可以切分成不同的模式或者有不同的角度來切分變成不同的詞語,那么jieba在全模式下把這樣的不同的組合都挖掘出來,所以如果用全模式來進(jìn)行分詞,分詞的信息組合起來并不是精確的原有文本,會(huì)有很多的冗余。

而搜索引擎模式更加智能,它是在精確模式的基礎(chǔ)上對(duì)長詞進(jìn)行再次切分,將長的詞語變成更短的詞語,進(jìn)而適合搜索引擎對(duì)短詞語的索引和搜索,在一些特定場合用的比較多。

jieba庫提供的常用函數(shù):

  • jieba.lcut(s)

精確模式,能夠?qū)σ粋€(gè)字符串精確地返回分詞結(jié)果,而分詞的結(jié)果使用列表形式來組織。例如:

>>> import jieba
>>> jieba.lcut("中國是一個(gè)偉大的國家")
Building prefix dict from the default dictionary ...
Dumping model to file cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
Loading model cost 2.489 seconds.
Prefix dict has been built successfully.
['中國', '是', '一個(gè)', '偉大', '的', '國家']
  • jieba.lcut(s,cut_all=True)

全模式,能夠返回一個(gè)列表類型的分詞結(jié)果,但結(jié)果存在冗余。例如:

>>> import jieba 
>>> jieba.lcut("中國是一個(gè)偉大的國家",cut_all=True)
['中國', '國是', '一個(gè)', '偉大', '的', '國家']

jieba.lcut_for_search(s)

搜索引擎模式,能夠返回一個(gè)列表類型的分詞結(jié)果,也存在冗余。例如:

>>> import jieba
>>> jieba.lcut_for_search("中華人民共和國是偉大的")
['中華', '華人', '人民', '共和', '共和國', '中華人民共和國', '是', '偉大', '的']
  • jieba.add_word(w)

向分詞詞庫添加新詞w

最重要的就是jieba.lcut(s)函數(shù),完成精確的中文分詞。

到此這篇關(guān)于python中jieba庫(中文分詞庫)使用安裝教程的文章就介紹到這了,更多相關(guān)python中jieba庫使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 實(shí)現(xiàn)貪吃蛇游戲的示例

    Java 實(shí)現(xiàn)貪吃蛇游戲的示例

    這篇文章主要介紹了Java 如何實(shí)現(xiàn)貪吃蛇游戲,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03
  • JAVA SE包裝類和泛型詳細(xì)介紹及說明方法

    JAVA SE包裝類和泛型詳細(xì)介紹及說明方法

    這篇文章主要介紹了JAVA SE包裝類和泛型的相關(guān)資料,包括基本數(shù)據(jù)類型與包裝類的對(duì)應(yīng)關(guān)系,以及裝箱和拆箱的概念,并重點(diǎn)講解了自動(dòng)裝箱和自動(dòng)拆箱的機(jī)制,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Spring?Cloud?Gateway遠(yuǎn)程命令執(zhí)行漏洞分析(CVE-2022-22947)

    Spring?Cloud?Gateway遠(yuǎn)程命令執(zhí)行漏洞分析(CVE-2022-22947)

    使用Spring Cloud Gateway的應(yīng)用程序在Actuator端點(diǎn)啟用、公開和不安全的情況下容易受到代碼注入的攻擊,攻擊者可以惡意創(chuàng)建允許在遠(yuǎn)程主機(jī)上執(zhí)行任意遠(yuǎn)程執(zhí)行的請求,這篇文章主要介紹了Spring?Cloud?Gateway遠(yuǎn)程命令執(zhí)行漏洞(CVE-2022-22947),需要的朋友可以參考下
    2023-03-03
  • Java 異常的知識(shí)整理

    Java 異常的知識(shí)整理

    這篇文章主要介紹了Java 異常的知識(shí)整理的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java Online Exam在線考試系統(tǒng)的實(shí)現(xiàn)

    Java Online Exam在線考試系統(tǒng)的實(shí)現(xiàn)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+springboot+vue+jsp+mysql+maven實(shí)現(xiàn)Online Exam在線考試系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 淺談Java中SimpleDateFormat 多線程不安全原因

    淺談Java中SimpleDateFormat 多線程不安全原因

    SimpleDateFormat是Java中用于日期時(shí)間格式化的一個(gè)類,本文主要介紹了淺談Java中SimpleDateFormat 多線程不安全原因,感興趣的可以了解一下
    2024-01-01
  • Java中Equals使用方法匯總

    Java中Equals使用方法匯總

    這篇文章主要采用問答的方式集中講解了Java中Equals的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Java設(shè)計(jì)模式常用的七大原則總結(jié)

    Java設(shè)計(jì)模式常用的七大原則總結(jié)

    今天給大家總結(jié)了Java設(shè)計(jì)模式的七大原則,主要有單一職責(zé)原則,接口隔離原則,依賴倒轉(zhuǎn)原則,里氏替換原則等,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • 深入了解Java核心類庫--BigDecimal和System類

    深入了解Java核心類庫--BigDecimal和System類

    這篇文章主要為大家詳細(xì)介紹了javaBigDecimal和System類定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Struts2+uploadify多文件上傳實(shí)例

    Struts2+uploadify多文件上傳實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Struts2+uploadify多文件上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08

最新評(píng)論

曲靖市| 香河县| 噶尔县| 新源县| 临洮县| 临安市| 永泰县| 泗水县| 沙洋县| 山东| 水城县| 上杭县| 库车县| 鲁山县| 阿勒泰市| 元氏县| 定南县| 左贡县| 裕民县| 朝阳县| 南川市| 云南省| 陇川县| 白银市| 屏边| 鹿泉市| 沙湾县| 伽师县| 剑阁县| 江源县| 台州市| 乡宁县| 新河县| 苏尼特左旗| 静安区| 琼结县| 若尔盖县| 红安县| 苗栗市| 新密市| 普洱|