運用jieba庫分詞

来源:https://www.cnblogs.com/sun0618-/archive/2019/04/04/10657400.html
-Advertisement-
Play Games

恢復內容開始 運用jieba庫分詞 一、jieba庫基本介紹 1、jieba庫概述 jieba是優秀的中文分詞第三方庫 - 中文文本需要通過分詞獲得單個的詞語 - jieba是優秀的中文分詞第三方庫,需要額外安裝 - jieba庫提供三種分詞模式,最簡單隻需掌握一個函數 2、jieba分詞的原理 J ...


                  運用jieba庫分詞

  

一、jieba庫基本介紹

  1、jieba庫概述 

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

         - 中文文本需要通過分詞獲得單個的詞語
         - jieba是優秀的中文分詞第三方庫,需要額外安裝

         - jieba庫提供三種分詞模式,最簡單隻需掌握一個函數

  2、jieba分詞的原理

         Jieba分詞依靠中文詞庫 

         - 利用一個中文詞庫,確定漢字之間的關聯概率
         - 漢字間概率大的組成片語,形成分詞結果

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

 

3、jieba庫使用說明

  (1)、jieba分詞的三種模式 

         精確模式、全模式、搜索引擎模式 

         - 精確模式:把文本精確的切分開,不存在冗餘單詞
         - 全模式:把文本中所有可能的詞語都掃描出來,有冗餘

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

  (2)、jieba庫常用函數


    

 

二、安裝jieba庫

  點擊電腦中的‘開始’,然後在搜索欄中輸入‘cmd’,點擊‘命令指示符’,出現界面後在輸入‘pip install jieba’,剛開始的時候,我的電腦出現了這樣的情況,安裝不了。

       

 

 後來在老師的幫助下,就安裝成功了。而且在安裝其他庫的時候也不會再出現第一次的情況。

    

  這樣就安裝成功啦~~~

 

三、jieba庫的使用用例

1、分詞

    

  

2、詞雲

  這是我在網上找的詞雲的一個例子: 

  1 # 如果您需要使用此代碼,os.chdir路經需要指定到txt文本所在路徑
  2 # 使用Zipin函數,需要txt有read()函數可以打開的正確的編碼格式
  3 # 使用Cipin函數需要安裝jieba庫
  4 # 使用word cloud函數需要安裝wordcloud與matplotlib庫
  5 import os
  6 import codecs
  7 import jieba
  8 import pandas as pd
  9 from wordcloud import WordCloud
 10 from scipy.misc import imread
 11 import matplotlib.pyplot as plt
 12 os.chdir("/Users/Zhaohaibo/Desktop")
 13 
 14 class Hlm(object): 
 15 
 16     # —————————————————————
 17     # Zipin(self, readdoc, writedoc)
 18     # readdoc: 要讀取的文件名
 19     # writedoc:要寫入的文件名
 20 
 21     # output
 22     # 字頻前100,並寫入writedoc
 23     # —————————————————————
 24     def Zipin(self, readdoc, writedoc):
 25         word_lst = []
 26         word_dict = {}       
 27         exclude_str = ",。!?、()【】<>《》=:+-*—“”…" 
 28         with open(readdoc,"r") as fileIn ,open(writedoc,'w') as fileOut:
 29 
 30             # 添加每一個字到列表中
 31             for line in fileIn:
 32                 for char in line:
 33                     word_lst.append(char)
 34 
 35             # 用字典統計每個字出現的個數       
 36             for char in word_lst:
 37                 if char not in exclude_str:
 38                     if char.strip() not in word_dict: # strip去除各種空白
 39                         word_dict[char] = 1
 40                     else :
 41                         word_dict[char] += 1
 42 
 43             # 排序x[1]是按字頻排序,x[0]則是按字排序
 44             lstWords = sorted(word_dict.items(), key=lambda x:x[1],  reverse=True) 
 45 
 46             # 輸出結果 (前100)
 47             print ('字元\t字頻')
 48             print ('=============')
 49             for e in lstWords[:100]:
 50                 print ('%s\t%d' % e)
 51                 fileOut.write('%s, %d\n' % e)
 52 
 53 
 54     # —————————————————————
 55     # Cipin(self, doc)
 56     # doc: 要讀取的文件名
 57 
 58     # return:
 59     # 詞頻表(DataFrame格式)
 60     # —————————————————————
 61     def Cipin(self, doc):
 62         wdict = {}
 63         f = open(doc,"r")
 64         for line in f.readlines():
 65             words = jieba.cut(line)
 66             for w in words:
 67                 if(w not in wdict):
 68                     wdict[w] = 1
 69                 else:
 70                     wdict[w] += 1                
 71         # 導入停用詞表
 72         stop = pd.read_csv('stoplist.txt', encoding = 'utf-8', sep = 'zhao', header = None,engine = 'python') #sep:分割符號(需要用一個確定不會出現在停用詞表中的單詞)
 73         stop.columns = ['word']    
 74         stop = [' '] + list(stop.word) #python讀取時不會讀取到空格。但空格依舊需要去除。所以加上空格; 讀取後的stop是series的結構,需要轉成列表
 75         for i in range(len(stop)):
 76             if(stop[i] in wdict):
 77                 wdict.pop(stop[i])
 78 
 79         ind = list(wdict.keys())
 80         val = list(wdict.values())
 81         ind = pd.Series(ind)
 82         val = pd.Series(val)
 83         data =  pd.DataFrame()
 84         data[''] = ind
 85         data['詞頻'] = val
 86         return data
 87 
 88     # —————————————————————
 89     # Ciyun(self, doc)
 90     # doc: 要讀取的文件名
 91 
 92     # output: 
 93     # 詞雲圖
 94     # —————————————————————
 95     def Ciyun(self,doc):
 96         g = open(doc,"r").read()
 97         back_pic = imread("aixin.jpg")  # 設置背景圖片  
 98         wc = WordCloud( font_path='/System/Library/Fonts/STHeiti Medium.ttc',#設置字體  
 99                           background_color="white", #背景顏色  
100                           max_words=2000,# 詞雲顯示的最大詞數  
101                           mask=back_pic,#設置背景圖片  
102                           max_font_size=200, #字體最大值  
103                           random_state=42,  
104                          ).generate(g)   
105         plt.figure(figsize=(64,32))
106         plt.imshow(wc)
107         plt.axis('off')
108         plt.savefig("ciyun.jpg")
109         plt.show()
110 
111 
112     def main(self,readdoc):
113         # self.Zipin(readdoc,writedoc)
114         df = self.Cipin(readdoc)
115         #self.Ciyun(readdoc)
116         return df
117 
118 
119 if __name__ == '__main__':
120     hlm = Hlm()
121     hlm.Zipin("紅樓夢.txt","紅樓夢字頻.txt")
122     df_hlm1 = hlm.main("紅樓夢.txt")
123 --------------------- 
124 作者:Iovebecky 
125 來源:CSDN 
126 原文:https://blog.csdn.net/zhaohaibo_/article/details/81902456 
127 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

      

    代碼顯示如下:

    

   

 

   到這裡就結束啦啦啦啦啦~~~~~~~

    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 列表推導式和生成表達式有相似,但是卻有本質不不同簡單的把它們之間的關係理一理吧:# 列表推導式: res=[i for i in range(6)] print(res) 結果:[0, 1, 2, 3, 4, 5] # 生成表達式: res=(i for i in range(6)) print(r ...
  • Python 簡介 Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向對象的腳本語言。 Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。 Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向對象的腳 ...
  • Python基礎數據類型之int,str,bool及常用方法 ...
  • 回到上次編輯位置 Ctrl + Alt + <- (向後) Ctrl + Alt + -> (向前) 這個快捷鍵有時和電腦桌面快捷鍵衝突。解決辦法: win + D 回到電腦桌面,右鍵—>圖像選項—>快捷鍵—>禁用 ...
  • 死磕 java集合之TreeMap源碼分析(三) 紅黑樹刪除元素的時間複雜度如何? 為什麼刪除元素之後要做平衡? 以什麼樣的形式平衡最省時間? ...
  • 鎖的種類 獨享鎖 VS 共用鎖 獨享鎖:鎖只能被一個線程持有(synchronized) 共用鎖:鎖可以被多個程式所持有(讀寫鎖) 樂觀鎖 VS 悲觀鎖 樂觀鎖:每次去拿數據的時候都樂觀地認為別人不會修改,所以不進行加鎖操作。樂觀鎖適用於多讀的應用類型。(CAS,Atomic) CAS(Compar ...
  • 介紹 本文介紹如何在 CentOS 7(6/6.5)、 Fedora、RHEL 上安裝 Java。Java是一個流行的軟體平臺,允許您運行Java應用程式。 本文涵蓋了以下Java版本的安裝: OpenJDK 8 Oracle Java 8 先決條件 在開始之前,您應該有一個能夠執行 root 許可權 ...
  • [Question]問題描述: 單獨的ListView列表能自動垂直滾動,但當將ListView嵌套在ScrollView後,會和ScrollView的滾動滑塊衝突,造成ListView滑塊顯示不完整。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...