爬取簡書網30日熱門得到詞雲 續
阿新 • • 發佈:2018-12-09
前面所使用的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