项目:产品推广策略数据分析 - 游戏为例
本案例基于搜索引擎数据,针对热门游戏《旅行青蛙》的推广策略进行分析研究
lvxingqingwa.jpg背景介绍
基于搜索引擎的产品推广策略
-
SEO:搜索引擎优化
- 内容
- 外链
- SEM:搜索引擎营销
搜索引擎优化的意义
搜索引擎作为传统互联网的主要数据源,在信息传播过程中占有重要地位
个人发布信息被搜索引擎收录、展示,可以引来流量,以较低成本实现产品推广
搜索引擎优化途径:
在搜索引擎可以检索到的各种公开社区发布文章,为自己的产品引流。
如:论坛社区、问答、贴吧、博客、视频、自媒体等等
游戏产品的搜索引擎推广策略
- 排名分析
- 选择什么渠道?(在哪儿发软文)
- 选择相关内容搜索排名靠前的网站发布信息
- 流量监测
- 发布信息时间?
- 监测不同网站流量效果,调整推广渠道
- 内容设计(标题)
- 发布信息标题和内容的设计
- 精心设计标题,吸引用户点击
2018年1-2月最火的游戏:旅行青蛙
-
短时间内爆发,1月份iOS中国区下载总榜第一名
-
以旅行青蛙游戏为例,研究它在搜索引擎平台的推广过程
游戏介绍
-
游戏情况
- 《旅行青蛙》是由游戏公司HIT-POINT开发的休闲小游戏,一款放置类型手游
-
游戏内容
- 玩家通过收集三叶草去商城买东西,青蛙带着这些东西出门旅行,旅行途中拍照片邮寄回来
-
社会反响
- 这款游戏顺应了广大青年的佛系情感述求。成为社交圈刷屏的现象级游戏,产生了巨大的社会影响
推广策略研究
流行的引爆取决于三类人的先后贡献
--- 《引爆点》
任何一场潮流到来时,总有几个关键的人物,他们独有的社会关系和其他特点,如激情和个人魅力,能够快速将信息在一定范围散布开来。
具体来说。流行的引爆取决于三类人的先后贡献,如果在引爆潮流的不同时期,找准人群中的个别关键人物,利用他们来传播信息,就能点燃潮流
流行引爆的三个不同时期:
-
前期:内行(专业人士,产生信息)
- 某一领域有丰富知识的权威人士
- 在前期实现原始信息的产生
- 内行专业且乐于讨论分享,但没有很好的说服力
- ----专业社区,专业圈子,如某软件或游戏等产品论坛
-
中期:联系员(桥梁,从专业小圈子介绍传播到大众圈)
- 什么人都认识的交际人才
- 其人际和社会关系可同时涉及几种不同领域
- 联系员能够将信息从某固定小圈子散布到其他更大的领域
- ----行业社区、行业圈子,如互联网社区、帝吧、虎扑、知乎,原创自媒体
-
后期:推销员(口耳相传,扩散,引爆)
- 对信息领域未必了解,但具有说服力
- 决定了信息传播的“最后一公里”
- 推销员使信息病毒式扩散,实现最终引爆
- ----大众社区,大众圈子,如各种自媒体、微博、微信朋友圈,腾讯网易新浪搜狐等传统媒体、报纸电视广播等
举例:中文互联网流行词或梗的流行全过程
如:“六学”
直播 -> 微博,公众号,抖音,知乎、B站 -> 网易搜狐新浪腾讯,电视节目 -> 春晚
数据获取
具体实施:
根据百度指数热门程度直观分析,
抓取百度新闻 旅行青蛙 (按内容查询)关键字的文字标题和相关信息,
时间从 2018-1-15左右到2018-2-18日左右
目前是:新闻页码11-36,每页20条,一共27页
数据获取完成,详见附录
数据规整
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# plt.style.use('seaborn')
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif']
读入百度指数数据
baidu = pd.read_csv(
'data/baidu_index.csv',
parse_dates=['百度指数'],
index_col='Unnamed: 0', # 将某列设为行索引
)
baidu.head()
image.png
baidu.info()
<class 'pandas.core.frame.DataFrame'>
Index: 35 entries, 2018-01-15 to 2018-02-18
Data columns (total 1 columns):
百度指数 35 non-null object
dtypes: object(1)
memory usage: 560.0+ bytes
读入爬虫抓取新闻数据
content = pd.read_csv(
'data/content.csv',
# parse_dates={'s': ['date','time']}, # 将两列合并解析为时间格式,自定义列名,为配合百度指数时间,这里不合并
parse_dates=['date'],
).set_index('date').sort_index() # 将date2设为行索引,并排序
content.head()
image.png
# 只保留2列做分析
content = content[['source', 'title']]
content.head()
image.png
content.tail()
image.png
baidu.info()
<class 'pandas.core.frame.DataFrame'>
Index: 35 entries, 2018-01-15 to 2018-02-18
Data columns (total 1 columns):
百度指数 35 non-null object
dtypes: object(1)
memory usage: 560.0+ bytes
百度指数列错误,改为整型
bindex = baidu['百度指数'].astype(np.int)
bindex.head()
2018-01-15 5408
2018-01-16 10007
2018-01-17 17817
2018-01-18 39514
2018-01-19 82117
Name: 百度指数, dtype: int32
bindex.describe()
count 35.000000
mean 224537.942857
std 252476.209422
min 5408.000000
25% 46004.500000
50% 120038.000000
75% 310564.500000
max 858690.000000
Name: 百度指数, dtype: float64
content.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 503 entries, 2017-09-07 to 2018-02-23
Data columns (total 2 columns):
source 503 non-null object
title 503 non-null object
dtypes: object(2)
memory usage: 11.8+ KB
content.describe()
image.png
新闻数据正常
合并百度指数和百度新闻两表
bindex.head()
2018-01-15 5408
2018-01-16 10007
2018-01-17 17817
2018-01-18 39514
2018-01-19 82117
Name: 百度指数, dtype: int32
content.head()
image.png
content2 = content.join(bindex).dropna()
content2.head()
image.png
content2.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source 485 non-null object
title 485 non-null object
百度指数 485 non-null float64
dtypes: float64(1), object(2)
memory usage: 15.2+ KB
content2.shape
(485, 3)
由于新闻数据时间范围比指数数据大,所以合并后数据应该有缺失值,将百度指数列没有的日期行删除
content3 = content2.drop('百度指数', axis=1)
content3['baidu_index'] = content2['百度指数'].astype(np.int)
content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source 485 non-null object
title 485 non-null object
baidu_index 485 non-null int32
dtypes: int32(1), object(2)
memory usage: 23.3+ KB
保存数据
content3.to_csv('data/content3.csv')
数据规整完成
读取数据
content3 = pd.read_csv(
'data/content3.csv',
parse_dates=['Unnamed: 0'],
).set_index('Unnamed: 0') # 将Unnamed: 0设为行索引
content3.index.name = 'date'
content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 3 columns):
source 485 non-null object
title 485 non-null object
baidu_index 485 non-null int64
dtypes: int64(1), object(2)
memory usage: 15.2+ KB
数据分析
指标计算:渠道分析(新闻源)
自定义指标
source列为搜索引擎推广渠道,我们按照理论将其分为:
* 前期:内行
* 中期:联系员
* 后期:推销员
三类
然后统计不同渠道的新闻数量
content3.head()
image.png
查询所有新闻源和他们发布的文章数
category = content3.groupby('source').size().sort_values(ascending=False)
category
category[category >= 8] # 只需要文章数大于等于8的新闻源
source
蚕豆网 72
九游网 61
太平洋电脑网 43
闽南网 32
站长之家 27
爪游控 19
Techweb 17
手机游戏网 15
新浪新闻 13
站长网 13
尚之潮 12
新浪 10
凤凰网 9
dtype: int64
手动整理的三个时期典型网站
- 前期:蚕豆网,九游网,爪游控,手机游戏网,
- 中期:站长之家,Techweb,站长网,
- 后期:太平洋电脑网,闽南网,新浪新闻,尚之潮,新浪,凤凰网
增加新列:三类时期
content3.loc[content3['source'].isin(['蚕豆网','九游网','爪游控','手机游戏网'])]
content3.loc[content3['source'].isin(['蚕豆网','九游网','爪游控','手机游戏网']), 'period'] = 1
content3.loc[content3['source'].isin(['站长之家','Techweb','站长网']), 'period'] = 2
content3.loc[content3['source'].isin(['太平洋电脑网','闽南网','新浪新闻','尚之潮','新浪','凤凰网']), 'period'] = 3
content3.head()
image.png
content3.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 485 entries, 2018-01-17 to 2018-02-18
Data columns (total 4 columns):
source 485 non-null object
title 485 non-null object
baidu_index 485 non-null int64
period 343 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 28.9+ KB
# 去除缺失值行
content4 = content3.dropna().drop('period', axis=1)
content4['period'] = content3.dropna()['period'].astype(np.int) # 列改为整型
content4.head()
image.png
content4.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 343 entries, 2018-01-17 to 2018-02-18
Data columns (total 4 columns):
source 343 non-null object
title 343 non-null object
baidu_index 343 non-null int64
period 343 non-null int32
dtypes: int32(1), int64(1), object(2)
memory usage: 22.1+ KB
指标:通过交叉表计算每种类别下的网站新闻量排名
best = pd.crosstab(content4.source, content4.period)
best
image.png
前期新闻源发帖量排名
best[1].sort_values(ascending=False)
# 去掉发帖量为0的数据
b1 = best[1][best[1] > 0].sort_values(ascending=False)
b1
source
蚕豆网 72
九游网 61
爪游控 19
手机游戏网 15
Name: 1, dtype: int64
b1.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9be1ac8>
output_52_1.png
中期新闻源发帖量排名
b2 = best[2][best[2] > 0].sort_values(ascending=False)
b2
source
站长之家 27
Techweb 17
站长网 13
Name: 2, dtype: int64
b2.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9dd7128>
output_55_1.png
后期新闻源发帖量排名
b3 = best[3][best[3] > 0].sort_values(ascending=False)
b3
source
太平洋电脑网 43
闽南网 32
新浪新闻 13
尚之潮 12
新浪 10
凤凰网 9
Name: 3, dtype: int64
b3.plot.bar()
<matplotlib.axes._subplots.AxesSubplot at 0x9e37518>
output_58_1.png
查询每天的百度指数
baidu_index = content4.groupby(content4.index)['baidu_index'].max()
baidu_index
date
2018-01-17 17817
2018-01-18 39514
2018-01-19 82117
2018-01-20 140768
2018-01-21 298637
2018-01-22 406072
2018-01-23 677541
2018-01-24 858690
2018-01-25 839792
2018-01-26 744390
2018-01-27 653541
2018-01-28 496701
2018-01-29 390412
2018-01-30 322492
2018-01-31 256334
2018-02-01 212914
2018-02-02 180933
2018-02-03 157411
2018-02-04 140104
2018-02-05 120038
2018-02-06 125914
2018-02-07 105679
2018-02-08 88426
2018-02-09 75185
2018-02-10 66567
2018-02-12 54812
2018-02-13 49241
2018-02-18 34388
Name: baidu_index, dtype: int64
baidu_index.shape # 数据规整以后,35天指数变成28天
(28,)
按时间行索引分组聚合求每个分类下 每天的新闻数
三个时期,每个时期 每天 发布新闻的个数
content4.head()
period1 = content4[content4['period'] == 1] # 前期的所有数据
period1
period1Count = period1.groupby(period1.index).size() # 前期,每天 发布的新闻数量
period1Count
period2 = content4[content4['period'] == 2] # 中期的所有数据
period2
period2Count = period2.groupby(period2.index).size() # 中期,每天 发布的新闻数量
period2Count
period3 = content4[content4['period'] == 3] # 后期的所有数据
period3
period3Count = period3.groupby(period3.index).size() # 后期,每天 发布的新闻数量
period3Count
date
2018-01-17 2
2018-01-18 1
2018-01-19 3
2018-01-20 5
2018-01-21 8
2018-01-22 6
2018-01-23 6
2018-01-24 16
2018-01-25 12
2018-01-26 9
2018-01-27 7
2018-01-28 5
2018-01-29 4
2018-01-30 8
2018-01-31 16
2018-02-01 3
2018-02-02 1
2018-02-05 1
2018-02-06 1
2018-02-07 2
2018-02-08 1
2018-02-09 1
2018-02-10 1
dtype: int64
数据可视化
三种类别的推广渠道 随时间发展 对百度指数热度的贡献趋势
- 可视化:搜索引擎推广渠道VS百度指数,比较对照
- 取三类网站新闻数量随时间变化画三条折线图,背景叠加百度指数柱状图
- 主要看不同类别折线的峰值出现时间(先后代表三类过程)
baidu_index.index
DatetimeIndex(['2018-01-17', '2018-01-18', '2018-01-19', '2018-01-20',
'2018-01-21', '2018-01-22', '2018-01-23', '2018-01-24',
'2018-01-25', '2018-01-26', '2018-01-27', '2018-01-28',
'2018-01-29', '2018-01-30', '2018-01-31', '2018-02-01',
'2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05',
'2018-02-06', '2018-02-07', '2018-02-08', '2018-02-09',
'2018-02-10', '2018-02-12', '2018-02-13', '2018-02-18'],
dtype='datetime64[ns]', name='date', freq=None)
plt.figure(figsize=(18, 10))
plt.bar(baidu_index.index, baidu_index/30000, alpha=0.2, label='百度指数')
period1Count.plot(label='前期:内行')
period2Count.plot(label='中期:联系员')
period3Count.plot(label='后期:推销员')
# 标识三个时期的典型特征
plt.scatter(['2018-01-20', '2018-01-25', '2018-01-30'], [5, 12, 13], s=6000, alpha=0.2, color='r')
plt.xticks(baidu_index.index)
plt.legend()
plt.grid(linewidth=0.2, alpha=0.3)
plt.show()
output_66_0.png
结论:
- 呈现明显的前、中、后期发展趋势
- 数据验证偏差:
- 可能因为新闻源分类错误,
- 更大的原因:数据搜集不完整,如缺乏其他重要渠道数据(APP市场、微博、微信朋友圈等)
流量监测
指标:交叉表实现:各个分类下的网站,每天发帖量
# 每个分类下的所有新闻源
period1.head()
period2.head()
period3.head()
image.png
period1Cross = pd.crosstab(period1.index, period1.source)
period1Cross
period2Cross = pd.crosstab(period2.index, period2.source)
period2Cross
period3Cross = pd.crosstab(period3.index, period3.source)
period3Cross
image.png
image.png
下面分别分析三个时期的渠道情况
前期各网站发帖数量趋势
内行:
- 前期渠道:游戏网站(专业社区类)
- 作用:信息源,提供原始信息
- 游戏网站内部,行家们进行信息的碰撞、交互和传递,形成原始信息
period1Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-22'], [12], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/60000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_72_1.png
中期各网站发帖数量趋势
联系员:
- 中期渠道:一些通用和专业结合的社区
- 作用:粘合剂:连接内行与推销员
- 借助百度搜索的独特优势,将信息从内行传递给推销员
period2Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-24'], [5], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/140000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_74_1.png
后期各网站发帖数量趋势
推销员:
- 后期渠道:大众新闻网站、自媒体,包括新闻、视频、社交媒体等
- 作用:完成最后接力,实现引爆
- 标记引爆点,使信息病毒式传播
period3Cross.plot(figsize=(18, 10))
plt.scatter(['2018-01-31'], [14], s=6000, alpha=0.2, color='r')
plt.bar(baidu_index.index, baidu_index/40000, alpha=0.2, label='百度指数')
<BarContainer object of 28 artists>
output_76_1.png
内容设计
指标和可视化
各时期新闻标题设计:关键字查看和可视化
分词,计算词频,绘制词云
import jieba
import jieba.analyse
合并三种类别来源的title为字符串
period1Title = ' '.join(period1['title'])
period1Title
period2Title = ' '.join(period2['title'])
period2Title
period3Title = ' '.join(period3['title'])
period3Title
'旅行青蛙怎么玩?青蛙旅行攻略图文教程(附翻译) 旅行青蛙怎么玩?青蛙旅行攻略图文教程(附翻译) 旅行青蛙可以设置成中文吗?旅行青蛙中文翻译 旅行青蛙攻略中文翻译 旅行青蛙攻中文图文攻略 青蛙旅行四叶草怎么获得?青蛙旅行四叶草什么时候收割? 旅行青蛙称号效果是什么 旅行青蛙称号怎么更改 旅行青蛙怎么设置中文语言方法介绍 旅行青蛙图文翻译分享 旅行青蛙包裹在哪里 旅行青蛙包裹怎么添加物品 旅行青蛙无法连接到网络 无法连接到网络解决方法 旅行青蛙朋友出现时间 蜗牛乌龟蜜蜂出现时间 旅行青蛙怎么玩?在旅行青蛙游戏里要做什么? 旅行青蛙怎么给小青蛙改名字 在哪里改名 旅行青蛙小青蛙是什么时候回来 小青蛙回家时间 旅行青蛙小青蛙多久出门一次?要什么时候才会出门 旅行青蛙青蛙可以带回来什么 青蛙带回道具一览 正在阅读:旅行青蛙攻略详情 青蛙游戏新手玩法攻略 旅行青蛙版下载 旅行青蛙中文版在哪下 正在阅读:旅行青蛙相似游戏推荐 类似旅行青蛙游戏有哪些旅行青蛙... 正在阅读:旅行青蛙攻略 旅行青蛙游戏怎么准备背包 佛系的你在养佛系的蛙?《旅行青蛙》让女玩家抢着 “当妈” 旅行青蛙存档没了怎么办?旅行青蛙存档消失可以恢复吗? 旅行青蛙iOS汉化版下载 旅行青蛙中文版下载地址 旅行青蛙为什么火?养青蛙的游戏叫什么名字?'
分词
# 1:应用自定义词典
with open('jieba/custom.txt', 'r', encoding='utf-8') as f:
b = f.read()
b = b.split('\n')
b
jieba.load_userdict(b) # 应用自定义词典
Building prefix dict from the default dictionary ...
Loading model from cache D:\Personal\Temp\jieba.cache
Loading model cost 1.302 seconds.
Prefix dict has been built succesfully.
# 2:分词
period1F = jieba.lcut(period1Title)
period1F
period2F = jieba.lcut(period2Title)
period2F
period3F = jieba.lcut(period3Title)
period3F
['旅行青蛙',
'怎么',
'玩',
'?',
'青蛙',
'旅行',
'攻略',
'图文',
'教程',
'(',
'附',
'翻译',
')',
' ',
'旅行青蛙',
'怎么',
'玩',
'?',
'青蛙',
'旅行',
'攻略',
'图文',
'教程',
'(',
'附',
'翻译',
')',
' ',
'旅行青蛙',
'可以',
'设置',
'成',
'中文',
'吗',
'?',
'旅行青蛙',
'中文翻译',
' ',
'旅行青蛙',
'攻略',
'中文翻译',
' ',
'旅行青蛙',
'攻',
'中文',
'图文',
'攻略',
' ',
'青蛙',
'旅行',
'四叶草',
'怎么',
'获得',
'?',
'青蛙',
'旅行',
'四叶草',
'什么',
'时候',
'收割',
'?',
' ',
'旅行青蛙',
'称号',
'效果',
'是',
'什么',
' ',
'旅行青蛙',
'称号',
'怎么',
'更改',
' ',
'旅行青蛙',
'怎么',
'设置',
'中文',
'语言',
'方法',
'介绍',
' ',
'旅行青蛙',
'图文',
'翻译',
'分享',
' ',
'旅行青蛙',
'包裹',
'在',
'哪里',
' ',
'旅行青蛙',
'包裹',
'怎么',
'添加',
'物品',
' ',
'旅行青蛙',
'无法',
'连接',
'到',
'网络',
' ',
'无法',
'连接',
'到',
'网络',
'解决',
'方法',
' ',
'旅行青蛙',
'朋友',
'出现',
'时间',
' ',
'蜗牛',
'乌龟',
'蜜蜂',
'出现',
'时间',
' ',
'旅行青蛙',
'怎么',
'玩',
'?',
'在',
'旅行青蛙',
'游戏',
'里',
'要',
'做',
'什么',
'?',
' ',
'旅行青蛙',
'怎么',
'给',
'小',
'青蛙',
'改名字',
' ',
'在',
'哪里',
'改名',
' ',
'旅行青蛙',
'小',
'青蛙',
'是',
'什么',
'时候',
'回来',
' ',
'小',
'青蛙',
'回家',
'时间',
' ',
'旅行青蛙',
'小',
'青蛙',
'多久',
'出门',
'一次',
'?',
'要',
'什么',
'时候',
'才',
'会',
'出门',
' ',
'旅行青蛙',
'青蛙',
'可以',
'带',
'回来',
'什么',
' ',
'青蛙',
'带回',
'道具',
'一览',
' ',
'正在',
'阅读',
':',
'旅行青蛙',
'攻略',
'详情',
' ',
'青蛙',
'游戏',
'新手',
'玩法',
'攻略',
' ',
'旅行青蛙',
'版',
'下载',
' ',
'旅行青蛙',
'中文版',
'在',
'哪下',
' ',
'正在',
'阅读',
':',
'旅行青蛙',
'相似',
'游戏',
'推荐',
' ',
'类似',
'旅行青蛙',
'游戏',
'有',
'哪些',
'旅行青蛙',
'...',
' ',
'正在',
'阅读',
':',
'旅行青蛙',
'攻略',
' ',
'旅行青蛙',
'游戏',
'怎么',
'准备',
'背包',
' ',
'佛系',
'的',
'你',
'在',
'养佛系',
'的',
'蛙',
'?',
'《',
'旅行青蛙',
'》',
'让',
'女',
'玩家',
'抢',
'着',
' ',
'“',
'当妈',
'”',
' ',
'旅行青蛙',
'存档',
'没',
'了',
'怎么办',
'?',
'旅行青蛙',
'存档',
'消失',
'可以',
'恢复',
'吗',
'?',
' ',
'旅行青蛙',
'iOS',
'汉化版',
'下载',
' ',
'旅行青蛙',
'中文版',
'下载',
'地址',
' ',
'旅行青蛙',
'为什么',
'火',
'?',
'养',
'青蛙',
'的',
'游戏',
'叫',
'什么',
'名字',
'?',
' ',
'微信',
'朋友圈',
'晒养',
'蛙',
'游戏',
'背后',
' ',
'为什么',
'旅行青蛙',
'最近',
'这么',
'红',
' ',
'旅行青蛙',
'多久',
'回来',
'?',
'旅行青蛙',
'如何',
'让',
'青蛙',
'早点',
'回家',
'?',
' ',
'刷屏',
'的',
'旅行青蛙',
'魔性',
'在',
'哪里',
'?',
'主角',
'又',
'为何',
'是',
'只',
'蛙',
'?',
' ',
'ios',
'版',
'旅行青蛙',
'在',
'哪里',
'有',
' ',
'苹果',
'手机',
'怎么',
'在',
'商店',
'搜索',
'下载',
'旅行青蛙',
' ',
'正在',
'阅读',
':',
'旅行青蛙',
'照片',
'真实',
'场景',
'对照',
':',
'青蛙',
'旅行',
'照片',
'原型',
'图',
' ',
'旅行青蛙',
':',
'植物',
'知多少',
' ',
'正在',
'阅读',
':',
'旅行青蛙',
'照片',
'真实',
'场景',
'对照',
':',
'青蛙',
'旅行',
'照片',
'原型',
'图',
' ',
'旅行青蛙',
'蜗牛',
'蜜蜂',
'乌龟',
'爱',
'吃',
'什么',
' ',
'旅行青蛙',
'蜗牛',
'怎么',
'喂',
' ',
'旅行青蛙',
'为什么',
'是',
'佛系',
'游戏',
' ',
'性冷淡',
'风',
'简直',
'是',
'一股',
'清流',
' ',
'旅行青蛙',
'道具',
'作用',
' ',
'旅行青蛙',
'道',
'道具',
'攻略',
'(',
'附',
'作用',
'介绍',
')',
' ',
'旅行青蛙',
'游戏',
'都',
'是',
'哪些',
'人',
'在',
'玩',
' ',
'玩',
'旅行青蛙',
'人',
'多少',
'有点',
'“',
'病',
'”',
'?',
' ',
'和',
'旅行青蛙',
'类似',
'的',
'游戏',
'有',
'哪些',
' ',
'这',
'几款',
'也',
'都',
'很',
'可爱',
' ',
'旅行青蛙',
'更改',
'手机',
'时间',
'有用吗',
' ',
'怎么',
'修改',
'调',
'青蛙',
'旅行',
'时间',
'攻略',
' ',
'为什么',
'大家',
'都',
'爱玩',
'养',
'青蛙',
' ',
'旅行青蛙',
'火爆',
'背后',
'原因',
'有',
'什么',
'背景',
'呢',
' ',
'玩',
'旅行青蛙',
'的',
'人',
'注意',
' ',
'这样',
'操作',
'或致',
'手机',
'变',
'“',
'板砖',
'”',
' ',
'孤独',
'的',
'“',
'旅行青蛙',
'”',
' ',
'其实',
'并',
'不是',
'你',
'想要',
'的',
'样子',
' ',
'《',
'旅行青蛙',
'》',
'为什么',
'能',
'这么',
'火',
'?',
' ',
'山寨',
'旅行青蛙',
'AppStore',
'下载',
'第一',
' ',
'只会',
'跳',
'一',
'跳',
'还',
'收费',
' ',
'刷',
'爆',
'朋友圈',
'的',
'佛系',
'游戏',
'《',
'旅行青蛙',
'》',
'为什么',
'这么',
'火',
'?',
' ',
'渣',
'蛙',
'是',
'什么',
'意思',
' ',
'旅行青蛙',
'归来',
'时',
'为何',
'戴着',
'别人',
'的',
'围巾',
' ',
'人民日报',
'官微评',
'旅行青蛙',
':',
'蛙',
'儿子',
'不',
'正是',
'每个',
'游子',
'?',
' ',
'旅行青蛙',
'的',
'青蛙',
'会',
'死',
'吗',
'揭晓',
' ',
'撞死',
'照片',
'系',
'网友',
'恶搞',
' ',
'揭秘',
'旅行青蛙',
'的',
'真相',
' ',
'结局',
'让',
'人',
'猝不及防',
' ',
'旅行青蛙',
'为什么',
'这么',
'火',
' ',
'妹子',
'们',
'的',
'男朋友',
'也',
'开启',
'了',
'养蛙',
'模式',
' ',
'旅行青蛙',
'照片',
'明信片',
'大全',
' ',
'旅行青蛙',
'写真',
'照片',
'汇总',
'一览',
' ',
'中国',
'消防',
':',
'“',
'旅行青蛙',
'”',
'家',
'很',
'危险',
' ',
'灭火器',
'都',
'没有',
' ',
'“',
'旅行青蛙',
'”',
'刷屏',
'透露',
'二次元',
'游戏',
'市场前景',
'可',
'期',
' ',
'"',
'旅行青蛙',
'"',
'出',
'中文版',
'了',
'?',
'网友',
':',
'别闹',
'这是',
'青蛙',
'版',
'"',
'跳',
'一',
'跳',
'"',
'!',
' ',
'旅行青蛙',
'手游',
'为什么',
'这么',
'火',
' ',
'苹果',
'APP',
' ',
'Store',
'下载量',
'排名榜',
'第一',
' ',
'旅行青蛙',
'为什么',
'不',
'回家',
' ',
'不',
'回家',
'怎么',
'解决办法',
' ',
'类似',
'旅行青蛙',
'的',
'游戏',
'有',
'哪些',
' ',
'类似',
'青蛙',
'旅行',
'好玩',
'手游',
'推荐',
' ',
'旅行青蛙',
'瞬间',
'爆红',
' ',
'这',
'背后',
'的',
'逻辑',
'究竟',
'是',
'啥',
'?',
' ',
'网红',
'游戏',
'“',
'旅行青蛙',
'”',
'外挂',
'藏',
'风险',
' ',
'下载',
'山寨',
'APP',
'小心',
'被',
'扣款',
' ',
'旅行青蛙',
'东北地区',
'怎么',
'去',
' ',
'旅行青蛙',
'东北',
'去法',
'位置',
'坐标',
' ',
'旅行青蛙',
'时间',
'怎么',
'调',
' ',
'怎么',
'跳过',
'等待时间',
'穿越',
'到',
'未来',
' ',
'旅行青蛙',
'道具',
'都',
'有',
'什么',
'用',
' ',
'旅行青蛙',
'碗',
'和',
'灯',
'作用',
'介绍',
' ',
'旅行青蛙',
'会',
'死',
'是',
'真的',
'吗',
' ',
'肢解',
'车祸',
'图片',
'全是',
'博',
'眼球',
' ',
'旅行青蛙',
'被车',
'压死',
'是',
'真的',
'吗',
' ',
'网友',
'恶意',
'P',
'图',
'造谣',
'遭吐槽',
' ',
'旅行青蛙',
'火',
'了',
'它',
'究竟',
'击中',
'了',
'人们',
'内心',
'的',
'哪些',
'情愫',
'?',
' ',
'日本',
'“',
'旅行青蛙',
'”',
'登',
'中国',
'手机游戏',
'排行榜',
'首位',
' ',
'俩',
'月',
'800',
'万',
'下载量',
' ',
'旅行青蛙',
'小',
'青蛙',
'呱呱',
'写',
'的',
'日记',
'可以',
'看',
'吗',
' ',
'小',
'青蛙',
'日记',
'一览',
' ',
'旅行青蛙',
'青蛙',
'会',
'死',
'吗',
' ',
'青蛙',
'没有',
'保护',
'符会',
'怎么样',
' ',
'和',
'旅行青蛙',
'一个',
'公司',
'的',
'游戏',
'有',
'哪些',
' ',
'这',
'款',
'人气',
'不输蛙',
'儿子',
' ',
'旅行青蛙',
'走红',
'这',
'张图',
'你',
'可能',
'没见',
'过',
' ',
'防火',
'防爆',
'救生',
'看',
'它',
' ',
'旅行青蛙',
'会',
'饿死',
'吗',
' ',
'养',
'青蛙',
'一直',
'不',
'回来',
'怎么办',
'需要',
'什么',
'道具',
' ',
'“',
'旅行青蛙',
'”',
'是',
'一场',
'说走就走',
'的',
'旅行',
'吗',
'?',
' ',
'《',
'旅行青蛙',
'》',
'负责人',
':',
'很',
'惊讶',
'游戏',
'会',
'在',
'中国',
'走红',
' ',
'佛性',
'游戏',
'《',
'旅行青蛙',
'》',
'为什么',
'这么',
'火',
' ',
'旅行青蛙',
'是',
'哪个',
'国家',
'人',
'制作',
'的',
' ',
'旅行青蛙',
'是',
'什么',
' ',
'旅行青蛙',
'商店',
'13',
'种',
'道具',
'用途',
'属性',
'介绍',
' ',
'山寨',
'版',
'“',
'旅行青蛙',
'”',
'被',
'下架',
' ',
'数千',
'评论',
'斥其',
'“',
'丢人',
'”',
' ',
'山寨',
'版',
'旅行青蛙',
'遭下',
'架',
' ',
'一天',
'收',
'数千',
'评论',
'斥其',
'丢人',
' ',
'旅行青蛙',
'桌面壁纸',
'高清',
'大图',
' ',
'游戏',
'《',
'旅行青蛙',
'》',
...]
# 3:保存分词后的文本为文本文件,绘制词云用
with open('data/period1Title.txt', 'w', encoding="utf-8")as f:
f.write(' '.join(period1F))
with open('data/period2Title.txt', 'w', encoding="utf-8")as f:
f.write(' '.join(period2F))
with open('data/period3Title.txt', 'w', encoding="utf-8")as f:
f.write(' '.join(period3F))
# 4:去停用词
def stopw(period):
# 载入停用词文件
stopword = []
with open('jieba/stopword.txt', 'r', encoding='utf-8') as f:
for line in f.readlines():
l = line.strip()
if l == '\\n':
l = '\n'
if l == '\\u3000':
l = '\u3000'
stopword.append(l)
stopword
# 去停用词,第一步,求差集
x = np.array(period) # 将分好的词列表转为数组
y = np.array(stopword) # 将停用词转为数组
z = x[~np.in1d(x, y)] # x的元素是否包含于y
z
# 使用列表生成式实现
k = [i for i in z if len(i) > 1]
k
return k
# 计算词频并排序
x1 = pd.DataFrame(stopw(period1F)) # 转为df格式
period1C = pd.DataFrame(x1.groupby(0).size().sort_values(ascending=False))
x2 = pd.DataFrame(stopw(period2F)) # 转为df格式
period2C = pd.DataFrame(x2.groupby(0).size().sort_values(ascending=False))
x3 = pd.DataFrame(stopw(period3F)) # 转为df格式
period3C = pd.DataFrame(x3.groupby(0).size().sort_values(ascending=False))
period3C
0 | |
---|---|
0 | |
旅行青蛙 | 153 |
青蛙 | 40 |
游戏 | 26 |
攻略 | 13 |
旅行 | 11 |
道具 | 10 |
阅读 | 9 |
方法 | 8 |
称号 | 7 |
照片 | 7 |
时间 | 7 |
下载 | 6 |
类似 | 6 |
介绍 | 6 |
中国 | 6 |
蜗牛 | 6 |
儿子 | 6 |
回家 | 6 |
一览 | 5 |
真的 | 4 |
山寨 | 4 |
图文 | 4 |
广告 | 4 |
回来 | 4 |
佛系 | 4 |
蜜蜂 | 3 |
手机 | 3 |
多久 | 3 |
网络 | 3 |
解决 | 3 |
... | ... |
朋友 | 1 |
测试 | 1 |
没见 | 1 |
汉化版 | 1 |
水印 | 1 |
气候 | 1 |
正确 | 1 |
模式 | 1 |
植物 | 1 |
桌面壁纸 | 1 |
样子 | 1 |
板砖 | 1 |
条件 | 1 |
未来 | 1 |
有用吗 | 1 |
操作方法 | 1 |
最长 | 1 |
晒养 | 1 |
早点 | 1 |
日本 | 1 |
无关 | 1 |
旅途 | 1 |
教学 | 1 |
救生 | 1 |
改名字 | 1 |
改名 | 1 |
改变命运 | 1 |
收费 | 1 |
收割 | 1 |
1000 | 1 |
306 rows × 1 columns
# 5: 保存结果
period1C.to_csv('data/keyword1.csv')
period2C.to_csv('data/keyword2.csv')
period3C.to_csv('data/keyword3.csv')
词云绘制
比表格高频词更直观
from wordcloud import WordCloud
from PIL import Image
# 载入文本数据
with open('data/period1Title.txt', 'r', encoding='utf-8') as f:
period1Title = f.read()
period1Title
with open('data/period2Title.txt', 'r', encoding='utf-8') as f:
period2Title = f.read()
period2Title
with open('data/period3Title.txt', 'r', encoding='utf-8') as f:
period3Title = f.read()
period3Title
'旅行青蛙 怎么 玩 ? 青蛙 旅行 攻略 图文 教程 ( 附 翻译 ) 旅行青蛙 怎么 玩 ? 青蛙 旅行 攻略 图文 教程 ( 附 翻译 ) 旅行青蛙 可以 设置 成 中文 吗 ? 旅行青蛙 中文翻译 旅行青蛙 攻略 中文翻译 旅行青蛙 攻 中文 图文 攻略 青蛙 旅行 四叶草 怎么 获得 ? 青蛙 旅行 四叶草 什么 时候 收割 ? 旅行青蛙 称号 效果 是 什么 旅行青蛙 称号 怎么 更改 旅行青蛙 怎么 设置 中文 语言 方法 介绍 旅行青蛙 图文 翻译 分享 旅行青蛙 包裹 在 哪里 旅行青蛙 包裹 怎么 添加 物品 旅行青蛙 无法 连接 到 网络 无法 连接 到 网络 解决 方法 旅行青蛙 朋友 出现 时间 蜗牛 乌龟 蜜蜂 出现 时间 旅行青蛙 怎么 玩 ? 在 旅行青蛙 游戏 里 要 做 什么 ? 旅行青蛙 怎么 给 小 青蛙 改名字 在 哪里 改名 旅行青蛙 小 青蛙 是 什么 时候 回来 小 青蛙 回家 时间 旅行青蛙 小 青蛙 多久 出门 一次 ? 要 什么 时候 才 会 出门 旅行青蛙 青蛙 可以 带 回来 什么 青蛙 带回 道具 一览 正在 阅读 : 旅行青蛙 攻略 详情 青蛙 游戏 新手 玩法 攻略 旅行青蛙 版 下载 旅行青蛙 中文版 在 哪下 正在 阅读 : 旅行青蛙 相似 游戏 推荐 类似 旅行青蛙 游戏 有 哪些 旅行青蛙 ... 正在 阅读 : 旅行青蛙 攻略 旅行青蛙 游戏 怎么 准备 背包 佛系 的 你 在 养佛系 的 蛙 ? 《 旅行青蛙 》 让 女 玩家 抢 着 “ 当妈 ” '
# 读入停用词文件为列表
with open('jieba/stopword.txt', 'r', encoding='utf-8') as f:
# print(f.read())
s = f.read()
stopword = s.split('\n')
# stopword
# 词云绘制时去停用词
# 读取背景图
alice_mask = np.array(Image.open("jieba/timg.jpg"))
分词,提取高频词,绘制词云
前期标题设计
前期特点:攻略、问题相关,铺垫,技术型文章,比较硬
period1C[:20]
0 | |
---|---|
0 | |
旅行青蛙 | 214 |
青蛙 | 62 |
下载 | 35 |
攻略 | 26 |
方法 | 22 |
中文版 | 21 |
游戏 | 21 |
汉化版 | 19 |
旅行 | 19 |
蜗牛 | 18 |
介绍 | 17 |
中文 | 14 |
回家 | 12 |
食物 | 12 |
喜欢 | 12 |
一览 | 12 |
出门 | 11 |
翻译 | 11 |
乌龟 | 11 |
地址 | 10 |
wordcloud = WordCloud(
background_color='white',# 设置背景颜色
max_words=30, # 设置最大现显示词数
font_path="jieba/arial unicode ms.ttf", # 字体,不设置则汉字乱码
stopwords = stopword, # 去停用词
mask=alice_mask, # 设置背景图片
).generate(period1Title)
wordcloud
plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_95_1.png
中期标题设计
中期特点:内容相关,造势
period2C[:20]
0 | |
---|---|
0 | |
旅行青蛙 | 74 |
攻略 | 20 |
青蛙 | 18 |
游戏 | 15 |
玩法 | 9 |
一览 | 9 |
图文 | 8 |
详细 | 7 |
中文 | 6 |
汇总 | 6 |
方法 | 5 |
翻译 | 5 |
回家 | 4 |
大全 | 4 |
汉化版 | 4 |
称号 | 4 |
时间 | 4 |
旅行 | 4 |
日语 | 3 |
道具 | 3 |
wordcloud = WordCloud(
background_color='white',# 设置背景颜色
max_words=30, # 设置最大现显示词数
font_path="jieba/arial unicode ms.ttf", # 字体,不设置则汉字乱码
stopwords = stopword, # 去停用词
mask=alice_mask, # 设置背景图片
).generate(period2Title)
wordcloud
plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_98_1.png
后期标题设计
后期特点:标签相关,提供话题,如佛系、儿子、爆红等
period3C[:20]
0 | |
---|---|
0 | |
旅行青蛙 | 153 |
青蛙 | 40 |
游戏 | 26 |
攻略 | 13 |
旅行 | 11 |
道具 | 10 |
阅读 | 9 |
方法 | 8 |
称号 | 7 |
照片 | 7 |
时间 | 7 |
下载 | 6 |
类似 | 6 |
介绍 | 6 |
中国 | 6 |
蜗牛 | 6 |
儿子 | 6 |
回家 | 6 |
一览 | 5 |
真的 | 4 |
wordcloud = WordCloud(
background_color='white',# 设置背景颜色
max_words=30, # 设置最大现显示词数
font_path="jieba/arial unicode ms.ttf", # 字体,不设置则汉字乱码
stopwords = stopword, # 去停用词
mask=alice_mask, # 设置背景图片
).generate(period3Title)
wordcloud
plt.figure(figsize=(18, 10), dpi=300)
plt.imshow(wordcloud, interpolation='bilinear') # 绘制数据内的图片,双线性插值绘图
plt.axis("off") # 去掉坐标轴
(-0.5, 499.5, 493.5, -0.5)
output_101_1.png
总结建议
游戏类产品搜索引擎推广建议
- 渠道选取
- 游戏专业社区
- 互联网类社区
- 通用社区,自媒体
- 时间点选取
- 前期
- 中期
- 后期
- 标题设计
- “攻略”铺垫
- “内容”造势
- “标签”话题
时间点选取详细:
- 内行
- 前期铺垫
- 在专业网站上发布游戏评测、软文等,提供下载、攻略、汇总、大全等
- 吸引内行注意,激励其积极讨论
- 联系员
- 中期造势
- 在IT、互联网类专业社区等搜索引擎检索信息源集中投放广告、发布软文
- 使非内行开始接触游戏信息
- 推销员
- 后期话题
- 制造话题,蹭热度,创造新鲜有趣、与众不同的游戏标签,在各大通用社区(新浪、网易、朋友圈、微博热搜)等火力全开
- 利用黏性话题踢好临门最后一脚
进阶完善内容
- 新闻源分类:根据分析结果重新分类新闻源
- 内容关键字:不使用词频,使用TF-IDF算法
- 绘制词云时,将一些无用高频词,例如 旅行青蛙,去停用词
- 可能的话,抓取其他新闻源数据,微博、公众号等等
网友评论