2017年6月8日 星期四

Python邊學邊記錄-jieba結巴與文字雲

Python Jieba WordCloud

jieba是一個可以用來處理文章斷詞分析的,這很有趣,也可以用來看什麼人的習慣用詞!
另外,jieba本身的預設是簡體的詞庫,如果要繁中的話還要再另外設置。
jieba的繁中字典檔在github上可以下載,不信任連結的話可以直接google jieba,就可以找到github的連結了。

首先,會用到的lib
import json
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

jieba.set_dictionart('dict.txt.big')  #  設置繁中字典檔,跟專案放一起就可以指到了

if __name__ == '__main__':
  justDoit()

def justDoit():
    with open('abc.json', 'r', encoding='utf-8') as f:
        data = json.load(f)  #  案例假裝是從json檔取資料

    dicts = list()
    for d in data.values():
        dicts += [s for s in jieba.cut(d) if s.split() and len(s) > 1]
                                          #  當斷詞之後的文字非空格而且長度大於1
    countD = Counter(dicts)  #Counter是上面import的一個lib,很好用,會回傳list內的出現次數
    print(countD)  #  就可以列印出各詞出現的次數了

    #  接著是文字雲,如果是處理中文字,就要附上字型檔,與專案置於同一資料夾即可
    wCloud = WordCloud(font_path='中文字型檔').generate(' '.join(dicts))
    plt.imshow(wCloud)
    plt.axis('off')
    plt.show()

如果詞庫不足的部份也可以自訂延伸出去!

jieba本身的分詞模式包含了預設切分、全切分、搜尋引擎切分…

jieba.cut("來源字串", cut_all=False)  #  預設切分
jieba.cut("來源字串", cut_all=True)  #  全切分
jieba.cut_for_search("來源字串")  #  搜尋引擎切分

我以字串『藤原栗子準備在2017年6月26日去新公司報到了』下去測試。
得到的結果如下圖:
python jieba

沒有留言:

張貼留言