本文要解決的問題是如何給校園網推送的文章起個“親人”并且“受歡迎”的名字。
詞頻反映了詞匯的親人度,而聚類分析則把受歡迎的題目篩選出來,并從分析部分文章內容總結其特點。
通過Python爬取校園網特定欄目文章的標題、閱讀量和回復量,然后用jieba分詞分好所有的文章標題,最后對文章的閱讀量和回復量進行聚類分析,得到結果。同時,也爬取所有流行公眾號咪蒙的文章題目作為一個參考。
全文分為三部分:
1 通過python 爬取校園網數據和傳送門咪蒙的所有文章標題數據放入本地放入本地
2 畫出二者的云圖
3 對校園網標題做聚類分析
本篇文章就第二、三部分進行闡述。
- 畫出睿思文章標題云圖
# 給文章標題分詞,并畫出云圖
# coding:utf-8
import matplotlib.pyplot as plt
import csv
from wordcloud import WordCloud
import jieba
import codecs
import pandas as pd
import parse
fc = pd.read_csv(r'/Users/zhangyi/Desktop/2.csv') # 讀取CSV文件
f1 = fc['title'].drop_duplicates() # 從中抽取標題列
f1.to_csv('/Users/zhangyi/Desktop/1.txt', index=False) # pandas寫入txt
textfc = codecs.open('/Users/zhangyi/Desktop/1.txt').read() #讀txt
wordlist_jieba = jieba.cut(textfc, cut_all=False) #結巴分詞
wl_jieba = " ".join(wordlist_jieba)
fc_worldcloud = WordCloud().generate(wl_jieba)
plt.imshow(fc_worldcloud)
plt.axis("off")
plt.show()
云圖_睿思
- 畫出咪蒙文章標題云圖
給咪蒙標題分詞,并畫出云圖
coding:utf-8
import matplotlib.pyplot as plt
import csv
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import jieba
import codecs
import pandas as pd
import parse
fc = pd.read_csv(r'/Users/zhangyi/Desktop/csvs/mm.csv') # 讀取CSV文件
f1 = fc['title'].drop_duplicates() # 從中抽取標題列
f1.to_csv('/Users/zhangyi/Desktop/csvs/mm.txt', index=False) # pandas寫入txt
textfc = codecs.open('/Users/zhangyi/Desktop/csvs/mm.txt').read() #讀txt
wordlist_jieba1 = jieba.cut(textfc, cut_all=False) #精確模式
wl_jieba1 = " ".join(wordlist_jieba1)
wordlist_jieba2 = jieba.cut(textfc, cut_all=True) #全模式
wl_jieba2 = " ".join(wordlist_jieba2)
wordlist_jieba3 = jieba.cut_for_search(textfc) #搜索引擎模式
wl_jieba3 = " ".join(wordlist_jieba3)
wc = WordCloud(background_color='white', # 設置背景顏色
max_words=5000, # 設置最大現實的字數
stopwords=STOPWORDS, # 設置停用詞
max_font_size=50, # 設置字體最大值
random_state=30, # 設置有多少種隨機生成狀態,即有多少種配色方案
width=800,
height=400
)
fc_worldcloud1 = wc.generate(wl_jieba1)
fc_worldcloud2 = wc.generate(wl_jieba2)
fc_worldcloud3 = wc.generate(wl_jieba3)
plt.imshow(fc_worldcloud1)
plt.imshow(fc_worldcloud2)
plt.imshow(fc_worldcloud3)
plt.axis("off")
plt.show()
fc_worldcloud1.to_file('mimeng_jingque.jpg')
fc_worldcloud2.to_file('mimeng_quan.jpg')
fc_worldcloud3.to_file('mimeng_sousuo.jpg')
云圖_咪蒙_精確模式
云圖_咪蒙_全模式
云圖_咪蒙_搜索模式
- 用R語言對睿思文章標題進行分析
setwd("/Users/zhangyi/Desktop")
Data <- read.csv("1.csv",header = T)[,2:3]
# 聚類建模
km=kmeans(Data,center=4)
km$size/sum(km$size)
# 將數據按聚類結果分組
Data.cluster <- data.frame(Data,km$cluster)
Data1 <- Data[which(Data.cluster$km.cluster==1),]
Data2 <- Data[which(Data.cluster$km.cluster==2),]
Data3 <- Data[which(Data.cluster$km.cluster==3),]
Data4 <- Data[which(Data.cluster$km.cluster==4),]
Data <- read.csv("1.csv",header = T)[,1:3]
Data[row.names(Data1),]$title
Data[row.names(Data2),]$title
Data[row.names(Data3),]$title
Data[row.names(Data4),]$title
如圖所示:
data
通過聚類后的數據表,我們可以大概知道,Data1屬于大眾文章,Data2屬于極少類,而Data3-4 可能屬于我們需要的,閱讀量大而且回復量大的文章。
查找出標題:
data1
data2-3
data4
通過看圖可知,除了Data2的公眾帖,以及Data1的普通帖,Data3-4的閱讀量和回復量都不錯。但通過觀察可知,Data3大多屬于管理帖,只有Data4適合進行分析。而分別查看有限的帖子后會發現,該類帖子屬于“推薦/金幣/定期分享”。如需進行宣傳,尤其是實施長期影響,可采用“金幣+單網頁分享”等方式進行標題選擇。
##### 總結:
通過云圖,我們可以知道在某個領域的關鍵詞如何,在之后選擇題目的時候,可以從其中挑選關鍵詞。在聚類分析后,可以通過分析其文章之間的關聯性,采取長期宣傳的一些特定措施。好比,采取只在一個帖子內進行宣傳,砸金幣,以及定期分享等策略。