Jieba庫使用和好玩的詞雲

1.認識jieba庫和安裝。

主要功能包括分詞,添加自定義詞典,關鍵詞提取,詞性標註,並行分詞,Tokenize:返回詞語在原文的起始位置,命令行分詞等功能。python

代碼對 Python 2/3 均兼容dom

全自動安裝:easy_install jieba 或者 pip install jieba / pip3 install jieba函數

半自動安裝:先下載 http://pypi.python.org/pypi/jieba/ ,解壓後運行 python setup.py install字體

手動安裝:將 jieba 目錄放置於當前目錄或者 site-packages 目錄編碼

經過 import jieba 來引用spa

 

2.利用jieba庫來進行分析文章,得到詞頻並排序。

安裝完jieba庫以後,咱們能夠利用其來得到文章中的詞頻。命令行

分析劉慈欣小說《三體》(一二三部合集)出現次數最多的詞語。code

首先下載好《三體》以txt格式、utf-8編碼。導入jieba庫:orm

import jieba  

打開文件:blog

txt = open("santi.txt", encoding="utf-8").read()

使用全模式進行分詞,返回列表:

words  = jieba.lcut(txt)

定義空集合,並藉此進行進行統計:

counts = {}  

for word in words:  

    counts[word] = counts.get(word,0) + 1

dict_items轉換爲列表,並以第二個元素排序:

items = list(counts.items())  

items.sort(key=lambda x:x[1], reverse=True)

以格式化打印前30名:

for i in range(30):  

    word, count = items[i]  

    print ("{0:<10}{1:>5}".format(word, count))

運行結果以下圖

3.利用jieba分詞來實現詞雲

 同時利用wordcloud,matplotlib庫來製做圖雲
此次使用百年孤獨的文章來製做詞雲
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba

def create_word_cloud(filename):

    text = open("百年孤獨.txt","r",encoding='utf-8').read()  #打開本身想要的文本

    

    wordlist = jieba.cut(text, cut_all=True)  # 結巴分詞

    wl = " ".join(wordlist)

    wc = WordCloud(             #設置詞雲

        background_color="white",        # 設置背景顏色

        max_words=20,        # 設置最大顯示的詞雲數

        font_path='C:/Windows/Fonts/simfang.ttf',        # 索引在C盤上的字體庫

        height=500,

        width=500,

        max_font_size=150,        # 設置字體最大值

        random_state=150,        # 設置有多少種隨機生成狀態,即有多少種配色方案

    )

 

    myword = wc.generate(wl)  # 生成詞雲

    plt.imshow(myword)    # 展現詞雲圖

    plt.axis("off")

    plt.show()

    wc.to_file('img_book.png')        # 把詞雲保存下

txt=open("百年孤獨.txt","r",encoding='utf-8').read()   #打開本身想要的文本
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:  #排除單個字符的分詞結果
        continue
    else :
        counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(20):
    word,count=items[i]
    print ("{0:<20}{1:>5}".format(word,count))
if __name__ == '__main__':
    create_word_cloud('百年孤獨')          #運行編輯的函數,得到詞雲

 

 

相關文章
相關標籤/搜索