1. 程式人生 > >爬取簡書網30日熱門得到詞雲 續

爬取簡書網30日熱門得到詞雲 續

前面所使用的jieba分詞中,是自行收集一些不重要的詞進行過濾的,效率不是很高,並且帶有比較大的主觀性(算是優點,也算是缺點)。

本次則改為使用中文停用詞表來過濾一些詞語。程式碼相對於上一節來說變化的主要是analysis.py 中的analysis函式。

程式碼大致如下:

import jieba.analyse
def analysis(db_name, collection_name):
    ''' 
    分析資料
    @param db_name mongo資料庫名
    @param collection_name 集合名稱
    @return 返回collections.Counter
    '''
    client = pymongo.MongoClient('localhost', 27017)
    mydb = client[db_name]
    jianshu = mydb[collection_name]

    #獲取所有資料,返回的為一個迭代器
    results = jianshu.find()
    #計數器
    counter = Counter()

    #停用詞表
    jieba.analyse.set_stop_words('./chinese_stop_words.txt')

    for result in results:
        text = result['text']
        tags = jieba.analyse.extract_tags(text, withWeight = True)
        #tags = jieba.analyse.extract_tags(text, topK = 100, withWeight = True)

        for item in tags:
            counter[item[0]] += item[1]

    return counter

因為本次目標是對所有的文章進行分詞,所以還是需要Counter進行計數,只不過添加了一個停用詞表過濾詞語。

jieba.analyse.extract_tags()中的topK表示取出前若干個頻率最高的詞,返回的是list[tuple(詞, 頻率)],這裡因為是對所有的文章進行分析,所以並沒有加入引數topK;若加入則會根據topK大小而使得生成的詞雲也會有所不同。

執行結果大致如下:

 權重最大的是"簡書",這個情有可原。拋開這個的話,出現的較多的有"寫作"、“文章”、“大學”...

更改後的程式碼:

https://github.com/sky94520/jianshu_month/tree/jianshu-02