Python實現jieba分詞

2022-01-01 光城
Python實現jieba分詞

今日知圖
替換

r  替換當前字符
R  替換當前行光標後的字符

0.說在前面1.結巴分詞三種模式2.自定義字典3.動態修改字典4.詞性標註及關鍵字提取5.高級使用6.作者的話

0.說在前面

微信群討論了jieba,這裡我將學到的jieba分享一波,大家一起來學習一下。

1.結巴分詞三種模式

默認模式

s_list=jieba.cut("我來到北京清華大學",cut_all=True) 
print("[全模式]:"+'/'.join(s_list))

精確模式

s_list=jieba.cut("我來到北京清華大學",) 
print("[默認模式]:"+'/'.join(s_list))

搜尋引擎模式

s_list=jieba.cut_for_search("小米畢業於中科院計算所,後來在日本東京大學留學深造") 
print("[默認模式]:"+'/'.join(s_list))

以上結果

[全模式]:我/來到/北京/清華/清華大學/華大/大學
[默認模式]:我/來到/北京/清華大學
[默認模式]:小米/畢業/於/中科/計算/中科院/計算所/中科院計算所/,/後來/在/日本/東京/大學/日本東京大學/留學/深造

2.自定義字典

jieba默認分詞

test_string=("醫療衛生事業是強國安民的光榮事業,是為實現中國夢奠定基礎的偉大事業。")
words=jieba.cut(test_string)
print('jieba默認分詞效果')
print('/'.join(words))

加載自定義字典


光榮事業 4 nz
中國夢 4 nl
奠定基礎 4 nz

jieba.load_userdict('test_string.txt')
words=jieba.cut(test_string)
print("加載自定義字典後,分詞效果")
print('/'.join(words))

以上結果

jieba默認分詞效果
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療衛生/事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。

3.動態修改字典

t=jieba.suggest_freq(('醫療','衛生'),True)
print(t)
print('/'.join(jieba.cut(test_string, HMM=False)))
t=jieba.suggest_freq(('中國夢'),True)
print(t)
print('/'.join(jieba.cut(test_string, HMM=False)))

以上結果

0
醫療/衛生事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。
9
醫療/衛生事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國夢/奠定基礎/的/偉大事業/。

4.詞性標註及關鍵字提取

import jieba.posseg as pseg
words=pseg.cut(test_string)
for word, flag in words:
    print('%s %s' % (word, flag))

以上結果

醫療 n
衛生事業 n
是 v
強國 n
安民 nr
的 uj
光榮事業 nz
, x
是 v
為 p
實現 v
中國夢 nl
奠定基礎 nz
的 uj
偉大事業 nz
。 x

5.高級使用

自定義處理:

自定義字典文件test_string.txt---
光榮事業 4 nz
中國夢 4 nl
奠定基礎 4 nz
issue.py
import jieba
test_string=("醫療衛生事業是強國安民的光榮事業,是為實現中國夢奠定基礎的偉大事業。")
words=jieba.cut(test_string)
print('jieba默認分詞效果')
print('/'.join(words))

jieba.load_userdict('test_string.txt')
words=jieba.cut(test_string)
print("加載自定義字典後,分詞效果")
print('/'.join(words))
output
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療衛生/事業/是/強國/安民/的/光榮事業/,/是/為/實現/中國/夢/奠定基礎/的/偉大事業/。

問題

觀察以上output會發現,光榮事業跟奠定基礎按照了字典文件進行了合併,但是中國夢並沒有,這是什麼問題呢?

於是得出以下結論:
jieba 分詞自定義詞典只對長詞起作用
對如果定義的詞比jieba自己分的短,則沒有用

那如何解決呢?

直接改變主字典路徑(0.28 之前的版本是不能指定主詞典的路徑的,有了延遲加載機制後,你可以改變主詞典的路徑),不用jieba默認的:
將issue.py中的jieba.load_userdict('test_string.txt')
替換為jieba.set_dictionary('test_string.txt')
此時輸出:

jieba默認分詞效果
醫療衛生/事業/是/強國/安民/的/光榮/事業/,/是/為/實現/中國/夢/奠定/基礎/的/偉大事業/。
加載自定義字典後,分詞效果
醫療/衛生/事業/是/強國安民/的/光榮事業/,/是/為/實現/中國夢/奠定基礎/的/偉大事業/。

6.作者的話

如果您覺得本公眾號對您有幫助,歡迎轉發,更多內容請關注本公眾號知識圖譜系列!

需要原始碼的點擊閱讀原文,即可獲取,不要忘記star哦!!!

相關焦點

  • jieba - 最好的 Python 中文分詞組件
    jieba是一款強大的python第三方中文分詞庫。目前jieba已經支持四種分詞模式:精確模式:試圖將句子最精確地切開,不存在冗餘數據,適合文本分析。全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義。
  • jieba分詞-Python中文分詞領域的佼佼者
    1. jieba的江湖地位NLP(自然語言)領域現在可謂是群雄紛爭,各種開源組件層出不窮,其中一支不可忽視的力量便是jieba分詞,號稱要做最好的 Python 中文分詞組件。「最好的」這三個字可不是空穴來風,jieba在開源社區的受歡迎程度非常之高。
  • 中文分詞工具——jieba
    在此介紹中文分詞工具jieba,其特點為:社區活躍、目前github上有19670的star數目功能豐富,支持關鍵詞提取、詞性標註等多語言支持(Python、C++、Go、R等)使用簡單Jieba分詞結合了基於規則和基於統計這兩類方法。
  • Python | 教程 jieba中文分詞
    分詞是目前最簡明的中文分詞組件,支持三種分詞模式:精確模式、全模式和搜尋引擎模式,支持簡繁體分詞,支持自定義詞典。也可使用 jieba.cut 和 jieba.cut_for_search 方法進行分詞,兩者所返回的結構都是一個可迭代的 generator,可使用 for 循環來獲得分詞後得到的每一個詞語(unicode)。
  • jieba分詞詳細介紹
    預計閱讀時間為20分鐘        上一篇文檔已經使用jieba分詞做出雲圖了,但是其中具體的一些東西還是讓人模糊不清,這裡根據官方文檔具體地介紹一下jieba分詞。jieba.cut 方法接受三個輸入參數: 需要分詞的字符串;cut_all 參數用來控制是否採用全模式;HMM 參數用來控制是否使用 HMM 模型;jieba.cut_for_search 方法接受兩個參數:需要分詞的字符串;是否使用 HMM 模型。
  • jieba中文分詞學習筆記一
    由於漢語語言知識的籠統、複雜性,難以將各種語言信息組織成機器可直接讀取的形式,因此目前基於理解的分詞系統還處在試驗階段。基於統計的分詞方法:給出大量已經分詞的文本,利用統計機器學習模型學習詞語切分的規律(稱為訓練),從而實現對未知文本的切分。例如最大概率分詞方法和最大熵分詞方法等。隨著大規模語料庫的建立,統計機器學習方法的研究和發展,基於統計的中文分詞方法漸漸成為了主流方法。
  • 中文分詞庫jieba介紹
    ,英文分詞可以針對空格切分達到很好的效果。本文就介紹基於python第三方庫jieba分詞庫,它是比較好的中文分詞詞庫。jieba庫的分詞原理主要有三項:基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖(DAG)採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合對於未登錄詞,採用了基於漢字成詞能力的
  • Jieba分詞介紹
    1)分詞    2)添加自定義詞典    3)關鍵詞提取什麼是Jieba分詞「結巴」中文分詞:做最好的 Python 中文分詞組件Jieba官方提供了Python、C++、Go、R、iOS等多平臺多語言支持,不僅如此,還提供了很多熱門社區項目的擴展插件,如ElasticSearch、solr、lucene等。在實際項目中,進行擴展十分容易•使用簡單。
  • jieba分詞及詞雲圖的製作
    jieba是比較常用python的分詞庫,這裡簡單介紹它的基本用法。
  • jieba:做最好的 Python 中文分詞組件,了解一下!
    算法今天學習的是Jieba,一個立志於做最好的 Python 中文分詞組件,主要涉及的算法如下:基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG);採用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合;對於未登錄詞,採用基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法。
  • Python分詞庫jieba快速入門
    Python有一個庫名為jieba的中文分詞庫,可以把中文句子切分成一個個的詞語以用於文本分析
  • python二級考試備考之 jieba 中文分詞
    0 引言支持 3 種分詞模式:精確模式、全模式、搜尋引擎模式jieba庫的安裝因為 jieba 是一個第三方庫,所有需要我們在本地進行安裝
  • 使用Jieba庫分分鐘實現高端大氣的詞雲
    實現思路利用python的jieba庫對文本進行分詞及詞頻統計,然後通過在線製作詞雲工具TAGUL,製作詞雲。下面以《鬥破蒼穹》小說為例,利用Jieba庫實現分詞。三十年河東,三十年河西,莫欺少年窮!實現步驟jieba分詞(1)通過pip3 install jieba安裝jieba庫(2)隨後在網上下載《鬥破蒼穹》小說(TXT文檔)及停用詞表。
  • 手把手教會你使用Python進行jieba分詞
    上周我們分享了詞雲,手把手教你使用Python打造絢麗的詞雲圖,這次我們來看看分詞。我們從之前學習過的wordcloud可以得知它只能進行英文分詞,中文暫不支持,這也正是它美中不足的地方,但是有個模塊正好彌補了這一點,它就是----jieba,中文名結巴,沒錯,你沒聽錯也沒看錯,就是結巴。
  • 資源 | Python中文分詞工具大合集
    再附加介紹12款其他的中文分詞工具或者中文分詞模塊,最後的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒有python接口,記錄一下。這些中文分詞工具我沒有測試,感興趣的同學可以動手試試。
  • 【編程課堂】jieba-中文分詞利器
    jieba庫是進行中文分詞的利器,根據文檔描述,具有以下特點:支持三種分詞模式:支持繁體分詞支持自定義詞典本文立足實際需求,提取出部分常用的功能作為講解,內容包括:1、分詞中文分詞是 jieba 庫的核心,其下包括常用的 cut() 和 cut_for_search() 函數。
  • PHP 實現中文分詞搜索功能
    把中文的漢字序列切分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學生,分詞的結果是:我 是 一個 學生。jieba 為 python 版本結巴分詞的 php 實現,分詞效果最好,尤其是新詞發現,不足之處是性能較差,佔用內存大。
  • Jieba.el –在Emacs中使用jieba中文分詞
    jieba.el在Emacs中使用jieba中文分詞眾所周知, Emacs並沒有內置中文分詞系統, 以至於 forward-word 和 backward-word 以及 kill-word 等以單詞為單位的操作只能粗暴的標點符號進行確定所謂」詞彙」, (其實是中文裡的句子
  • Python中文分詞工具大合集:安裝、使用和測試
    再附加介紹12款其他的中文分詞工具或者中文分詞模塊,最後的兩款fnlp和ansj是比較棒的java中文分詞工具,貌似還沒有python接口,記錄一下。這些中文分詞工具我沒有測試,感興趣的同學可以動手試試。
  • Python:jieba庫的使用
    jieba是優秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語。jieba庫提供三種分詞模式,熟練掌握其一即可。安裝jieba庫:(cmd命令行) pip install jiebajieba是通過中文詞庫的方式來識別分詞。