生活不易 我用python

给文章起个亲人而受欢迎的题目(二)

2017-05-27  本文已影响169人  文质彬彬彬

本文要解决的问题是如何给校园网推送的文章起个“亲人”并且“受欢迎”的名字。

词频反映了词汇的亲人度,而聚类分析则把受欢迎的题目筛选出来,并从分析部分文章内容总结其特点。

通过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')

云图_咪蒙_精确模式 云图_咪蒙_全模式 云图_咪蒙_搜索模式
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适合进行分析。而分别查看有限的帖子后会发现,该类帖子属于“推荐/金币/定期分享”。如需进行宣传,尤其是实施长期影响,可采用“金币+单网页分享”等方式进行标题选择。


##### 总结:

通过云图,我们可以知道在某个领域的关键词如何,在之后选择题目的时候,可以从其中挑选关键词。在聚类分析后,可以通过分析其文章之间的关联性,采取长期宣传的一些特定措施。好比,采取只在一个帖子内进行宣传,砸金币,以及定期分享等策略。
上一篇下一篇

猜你喜欢

热点阅读