人生苦短,我用Python && C#。

本题目来自 PMCAFF 毒舌 App
线下移动报名咨询【原文:请点击自己

1.社区型产品怎么提高用户的粘度 & 频次?

2.怎么样的始末社区更合乎做社交?

3.哪些让用户更快地找到想看的影片?

统计 1

1.社区型产品怎么升级用户的粘度、频次?

先说点题外话,那么些题材问的有些宽泛,难以应对。留存、日活全占了。

医术上有句话叫【抛开剂量谈毒性,都是耍流氓】,套用到产品上也依旧创设,【抛开须求谈用户,都是耍流氓】。

今非昔比门类的社区,就代表了不一致的要求。

诸如草榴,他们的出品经营必要提高用户粘度吗?不必要,那然则刚需。再比如说小车之家,他们的用户粘度再高,能高过
Github 吗?

教育学上还有句话叫【对症发药】。

【进步用户的粘度】是哪一种用户?众所周知,社区型产品有 3
种用户:创制者、传播者、沉默者。

制造者创造内容,传播者传播内容,沉默者阅读内容。三者相互转换,相辅相成。

成立者愈来愈多,则吸引更多的传播者,带来越来越多的沉默者,成为一个良性循环。

沉默者更加多,则创建者会越少,流失越来越多的传播者,成为一个恶性循环。

关系图

【进步用户的粘度】是哪个种类粘度?

打开 App
是一种粘度,浏览小说是一种粘度,分享小说是一种粘度,发布小说也是一种粘度。

普适性提高社区成品的用户粘度策略当然有,不外乎那么几点,而且人们都会,张口就来:提高内容质地啦、激励连串啦、等级种类啦、增加用户的参加感归属感荣誉感啦、给用户物质奖励啦……

但那无异于于劳而无功,没有说到点子上。 写下数字 1 很粗略,但要写到
80,写到 100 则要花费点精力。

所以我不答应此题材,而是指向毒舌 App 给出答题思路。

1. 出品的客观

社区型产品,最关键的是用户和情节。那么毒舌用户比例与内容比例是或不是站得住?

题外话中也关乎用户比重,在此地详细的举例表达:

譬如通过数量发现,沉默者和创立者的比重是 0.01%
或者更细点,科幻类的沉默者和创造者的比例是 
0.01%,而爱情类的沉默者和创造者的百分比是
0.5%,那是否要升高科幻类创制者的比重?把种种细分领域的创设者比例进步上去了,总的比例自然也就上来了。

譬如说通过数据发现, 90% 的小说评论数量都在 3
条以下或者浏览和评价的百分比只有 0.05%,那是还是不是要升迁传播者的比重?

再譬如通过数量发现,用户的粘性都很好,创立者和传播者比例分布也很匀称,就是用户这么些池塘太小了,增长速度过慢,那是或不是要提高沉默者的比重?(换句话说就是骤增)

而产品的定势又影响着新增用户质料比例,而质地比例又越发影响着内容比例。

譬如今日头条运营初期,选择邀请码机制,邀请的都是各领域的学者,这产出的篇章自然是理想高质料。开放注册后,涌入大批用户,遇见出色小说的百分比大幅度下降,初步有相似的文章甚至是污染源文章出现。融了资打了波广告后,用户增加的更快,但可观作品比例稀释的也很快,同时一般小说、垃圾文章疾速拉长。

再例如 PMCAFF
和芸芸众生都是成品CEO,都是社区,都是永恒产品经营,但用户质地和内容质地完全是天壤之别。随便写点什么内容都能上大千世界都是产品经营的首页,但
PMCAFF
可不那样,它依旧有点节操的,会筛选,比如说自己认为自己那篇作品就会上首页。(滑稽.
jpg,自行脑补)

导致用户比重和内容比例的差异,就是成品一定。

毒舌准备定位如何人群?是曲高和寡依旧喜闻乐见?

到底一个喜爱看《百年朝凤》《林芝围的日与夜》的用户和一个兴奋看《逐梦演艺圈》《大闹天竺》的用户可没什么共同话题。

你说用个性化定制去化解那件事?抱歉,我不觉得现在的 Deep Learning
能解决。

近来的个性化推荐系统还栖息在很初级的阶段,都是依据关键词、多维度标签来推荐。

诸如自己看了一篇《美利坚联邦合众国民权运动史》,那么接下去会推荐什么呢?大约是:《美利哥世界二战史》《美利坚同盟国朝鲜战火》《美利坚合众国爱情片》《马丁(Martin)路德金纪念日球鞋
PE,捍卫梦想》。

保卫梦想?马丁(Martin)路德金的棺材板都快压不住了啊,我对美利坚合作国野史、美利哥爱情片、球鞋可没有丝毫趣味,而是对社会地位的朝秦暮楚有趣味。若是系统推荐《风雨商路:中国经纪人五千年精读》给自身,那自己肯定会点开阅读,可惜系统不会。

想讨好两边的结果是两边都不谄媚。

2. 升级粘度

在产品圈里流传着一个【神话故事】:传说每个产品都有一个魔法数字,当你能找到自己产品的魔法数字时,产品的留存就能大大提升。

推特 新用户在 30 天内关切了 30 个好友,留存将会大幅提升。

Dropbox 新用户选拔 1 次文件夹功用,留存将会大幅进步。

Linkedln 新用户在 7 天内添加 5 个关系人,留存将会加强 3-5 倍。

那就是说毒舌的啊?毒舌的魔法数字是怎么?

这活脱脱必要多量的多寡。

先是要求了然做的最好的社区型产品次留存、毒舌新用户次留存。

接下来找出和毒舌新用户次日留存强相关的作用,并给予优化。

比喻(咳咳,现在本身就是毒舌的成品了):

当下做的最好的社区型产品是搜狐,他们的次留存能达到
60%。大家毒舌如今的次留存是 30%。

方今大家质疑「新用户看 X 篇电影评论」「新用户对 X
部影视标记为已看」「新用户收取 X 条 Push 音讯数」「新用户关切 X
人」和新用户次留存强相关。然后就是噼里啪啦一顿操作,好,大家现在有数量了,有结论了。

结论:新用户看 5 篇影视评论后,次日留存能达标 60%。

数量:新用户看 0 篇影视评论的后天存在为 20%         

          新用户看 1 篇影视评论的今日存在为 25%         

          新用户看 2 篇影视评论的明天存在为 30%         

          新用户看 3 篇影视评论的前日留存为 35%         

          新用户看 4 篇影视评论的今日留存为 50%         

          新用户看 5 篇电影评论的后天留存为 60%         

          新用户看 6 篇影视评论的今日留存为 65%

然后如何做也许就绝不多说了,当然是下降阅读门槛,升高新用户的阅读小说数量。(再具体的优化方案我也给不出去,毕竟我是工具产品,不是社区产品,而且把玩毒舌的日子不是太长,随便说只会让同行贻笑大方)

同理,升高老用户的粘度也是那样。

猜猜「老用户看 X 篇影视评论」「老用户看 X 段短视频」「老用户宣布 X
次评论」「老用户评论被赞了 X 次」和老用户次留存强相关。

结论:老用户公布了 3 次评论后,次留存能达到 60%。

那优化方案当然就是提升老用户的评价数了。

理所当然也适用于创设者。

「创制者有 X 个粉丝」「创立者写了 X 篇文章」「成立者写了 X
个字」「创立者小说被转化了 X 次」「创设者著作被赞了 X
次」和创设者写作时间距离强相关。

结论:制造者的篇章被赞了 40 次后,写作间隔为 7 天。

那优化方案当然是给创制者小说花式点赞了。

那是首先种艺术,以数量为导向,大胆要是,验证估计。

其次种办法,目的拆解,举行私分。题外话中也是用了此格局。

【社区型产品怎么升级用户的粘度、频次?】

社区,什么社区?社区的一定是哪些?大旨须求是什么样?用哪一种办法解决的?有没有更好的解决措施?

用户,什么用户?新用户如故老用户?活跃用户照旧沉默用户?

粘度,什么粘度?打开 App 的粘度吗?看电影的粘度?看视频的粘度?

用金字塔原理,一步步的剪切下去,不要有遗漏,将长存的方案和可考虑的方案全都枚举出来,再展开先期级判断,哪个受益更高就先做哪些,最大化的升级粘度。

3. 终极,我也说点普适性的提议

跌落创建者的开创开销,比如文本编辑器是或不是易用?协助 马克(Mark)down
吗?富文本编辑器襄助成效多吧?有引用效率吗?文本能添加背景象吧?能加有种类表吗?

再高档一点,编辑器能自动选择材料吗?比如我在写《King》的影视评论,编辑器能自动抓取当前《King》的装有资源吗?(电影截图、海报、剧照、预先报告片),甚至是录像生成
Gif。

下跌沉默者的阅读开支,平均一篇影视评论打开的日子为几秒?打开时间领先几秒,一大半的沉默者会收回阅读?当电影评论内的视频为
10M 时,缓冲时间为几秒?当电影评论内的录像为 20M 时,缓冲时间为几秒?UI
界面是或不是简单阅读?字体是不是简单阅读?(别笑,字体真的很首要)

在情节层面做深挖(当然,毒舌已经在做那件事了),一个做电影评论的社区,转型做电影评论+
电影资讯分享,好像也稍微违和,而所对应的用户群体则扩充了几倍,那再加上追剧提示吗?(推断下载是极度了的,版权限制)

多调研竞品,多拔取别的的社区型产品。这一点很重点,能让大家少走很多弯路。

1.引言

日前初学Python,写爬虫上瘾。爬了豆瓣练手,又爬了公司的论坛生成词云分析年度重大词。近日研究着2017又仅剩两月了,我的年度重点词是甚?
就此自然想到爬取下自己的微信朋友圈,来个词频分析,生成属于自己的年份紧要词词云。

对象圈的爬取是更加有难度的,因为微信根本未曾暴光API入口去爬取数据。
但它山之石,可以攻玉。
由此各个搜索发现,已经有第三方工具得以落成朋友圈的导出。其中微信公众号【出书啦】就提供了那般一种服务,扶助对象圈导出,并排版生成微信书。

而对情人圈的爬取就是依照【出书啦】爬取朋友圈后转变网页后的二次爬取。
些微爬虫经验的,只要获得导出朋友圈的URL,后边的爬虫就相差为道了。但针对分享和小结的神气,依然和大家连连道来。

=文中涉及个人隐衷内容做了更加处理=

2.怎么样的始末社区更适合做社交?

1. 门槛低

一个音乐社区必然要比一个影视社区更符合做社交。因为一首歌的小时是 4
分钟,而一部影视的时间也许是 140 秒钟(说的就是您,一步之遥)。

一个跑步社区一定要比一个滑雪社区更切合做社交。因为跑步入门门槛低,而滑雪入门门槛高。

2. 频次高

一个做菜社区自然要比一个婚纱社区更适合做社交。因为做菜每日有,而婚纱可不可能天天穿。

一个美妆社区一定要比一个电商社区更适合做社交,因为美妆无止境,而电商能每一天种草吗?每一日种草拔的完呢?

私家想法,不对请拍砖。

2.赢得朋友圈数据输入

统计,下面已经介绍过了情人圈的多寡爬取是依照【出书啦】微信公众号生成的在线微信书数据的二次爬取。

具体步骤很简短:

  1. 关爱【出书啦】微信公众号
  2. 点击【创作书籍】–>【微信书】–>【早先创设】–>【添加随便分配的出书啦作者为好友即可】
  3. 稍等片刻,微信书制作完结,会吸纳小编发送的新闻提示,如下图所示。

统计 2

点击上图的链接,大家就可以见见根据月份再也排版的情侣圈数据,如下图所示:
统计 3

至此,我们获得对象圈的数额输入——【出书啦】排版生成的微信书链接。

写过爬虫的,后边就足以一向略过了。
当然,没写过爬虫也不想起先的,也可以把【出书啦】生成的微信书链接留言或私信给自身,我帮你收获年度重点词。

3.怎么样让用户更快地找到想看的影视?

要么用目标拆解法,梳理用户场景。

1. 用户明确电影名称

啥也不说了,自己找寻去吗。

2. 用户不醒目电影名称,明确自己想要看的分类

比如我明日就想看科幻类的影视,想看看毒舌科幻电影视评论分 8.0
以上的有何样我没看过的,我要看。不过很明显,毒舌没有那么些效能。

优化方案 1:增添多维度筛选功用(能而且筛选评分、国家、类型、升降序等)

优化方案 2:扩张标签。

Pronhub
有个成效,当搜索关键词达到一定量级时,就会自动生成该重大词的竹签。

直白套用到毒舌上恐怕会水土不服,因为 2
者的利用情况完全不一样(具体的就背着了,大白天的,不可以乱开车),不过可以借鉴下,比如人工手动添加越来越多的标签。

例如自己明日就想看励志的影片,打开毒舌一看,好嘛,没有那几个标签。你说难堪不狼狈?

标签的领到可以人工凭判断提取,也能够计算影视评论、评论中各词组出现的密度举行提取。

3. 用户不掌握电影名称,也不通晓自己想看的归类

此地又分开 2 种。

第一种:通过电影截图或 Gif
觉得该电影很有趣,想看,但不了然叫什么名字。

缓解方案:高级点的,AI
识图。中级点的,创制电影出处互助区,让用户自发解决。低级点的,官方人士解决。

其次种:我前几日就是想看电影,但我就是不清楚自己想看怎么电影

随缘吧,我能怎么做,我也很干净啊。

个性化推荐系统?前边已经说过了,不可信。

拿什么个性化,我历史来看的视频吧?那只是自身的历史口味,不意味自己明日也想看,假诺自身明日也想看一样的气味,直接搜索不就好了。而且个性化推荐系统充裕急需资源,大批量的人力物力时间投下去了,最后的结果却是白璧微瑕。

就让用户多看看电影评论,多看看短录像吧,也许望着望着就清楚自己想看怎么电影了。

3.条件准备

正文所写爬虫基于python2.7 + scrapy + jieba + wordcloud,使用VS Code IDE。

  1. Scrapy为Python中比较盛行的爬虫框架。
  2. Jieba是相比好用的国语分词模块。
  3. Wordcloud 用于生成词云。

4.生成爬虫项目

率先步:命令行执行scrapy startproject weixin_moment,生成Scrapy爬虫项目。
第二步:进入创立的weixin_moment目录,执行scrapy genspider 'moment' 'chushu.la'始建朋友圈爬虫。
实行以上两步后的文件夹结构如下:

统计 4

5.分析数据源

数量的确切抓取,需求对数据源进行精确分析。这一步大家就要来分析【出书啦】生成的微信书链接的数目加载形式。老规矩,F12开发者工具用起来。

统计 5

从上图大家得以看看那是一个get请求,重返的json类型格式数据。

点击Preview页签可以观望如下图所示的数目:

统计 6

从图中得以看来重临的目录导航数据包,其数量是按月度举办加载的。当点击导航按钮,其加载对应月份的对象圈数据。

统计 7

大家点击【2014-3】再观望网络请求,发现如下请求:

统计 8

从以上数量大家可以明细来看,其采用的是用json传参的post的方式伸手数据包。点击Preview页签,看到重回的分页JSON数据包。

统计 9

展开某个节点,大家可以发现朋友圈数据藏在data/paras节点下。

统计 10

迄今为止,大家落成多少的来自解析。

6.蜘蛛来也

成功了数据源分析,我们只需构造数据请求,并开展不易的数额解析,即可得到大家想要的多少!

6.1.呼吁导航数据包

修改moment.py定义start_requests方法:

bookid = '12345678'  #请填写【出书啦】返回链接中的数字部分
def start_requests(self):
        """
        使用get方式请求导航数据包
        """
        url = 'http://chushu.la/api/book/chushula-{0}?isAjax=1'.format(self.bookid)  #获取目录的url
        yield scrapy.Request(url, callback=self.parse)

重载parse措施,解析获取到的领航数据包:

def parse(self, response):
        """
        处理获取到的导航数据包
        """
        json_body = json.loads(response.body)  #加载json数据包
        catalogs = json_body['book']['catalogs']  #获取json中的目录数据包

6.2. 发送导航请求,抓取朋友圈数据

基于上面跟踪到发生的http导航请求,要想抓取到朋友圈数据,我们要求依照发出的哀求参数构造参数。
统计 11
从上图可见,首要包涵八个参数:

  1. type:”year_month”为默许值
  2. year: 年份
  3. month: 月份
  4. index: 第几页
  5. value : 由时间拼接的字符串

接轨修改大家的parse办法,遍历大家率先步抓取到的导航数据包构造请求参数:

def parse(self, response):
        """
        处理获取到的导航数据包
        """
        json_body = json.loads(response.body)  #加载json数据包
        catalogs = json_body['book']['catalogs']  #获取json中的目录数据包
        url = 'http://chushu.la/api/book/wx/chushula-{0}/pages?isAjax=1'.format(self.bookid) #分页数据url
        start_page = int(catalogs[0]['month'])  #获取起始月份作为index传值
        for catalog in catalogs:
            year = catalog['year']
            month = catalog['month']
            formdata = {
                "type": 'year_month',
                "year": year,
                "month": month,
                "index": str(start_page),
                "value": 'v_{0}{1}'.format(year, month)
            }
            start_page += 1

因为从大家跟踪到的http请求来看是依照json传参的post请求:
从而我们要这么发起呼吁:

yield scrapy.Request(
                url,
                method='POST',
                body=json.dumps(formdata),
                headers={'Content-Type': 'application/json'},
                callback=self.parse_moment)

一如既往大家要求定义一个回调函数用来拍卖回来的情人圈数据。定义parse_moment方法,按照重回的json数据包进行多少提取:

def parse_moment(self, response):
        """
        朋友圈数据处理
        """
        json_body = json.loads(response.body)
        pages = json_body['pages']
        pattern = re.compile(u"[\u4e00-\u9fa5]+")  #匹配中文
        item = WeixinMomentItem()
        for page in pages:
            if (page['type'] == "weixin_moment_page"):# 仅抓取朋友圈分页数据
                paras = page['data']['paras']
                if paras:
                    moment = ''
                    for content in paras[0]['rows']:
                        result = re.findall(pattern,
                                            content['data'])  #使用正则匹配所有中文朋友圈
                        moment += ''.join(result)
                    item['moment'] = moment
                    item['date'] = page['data']['dateText']#获取时间
                    yield item

上述用到了概念的WeixinMomentItem。修改items.py,做如下修改:

class WeixinMomentItem(scrapy.Item):
    """
    朋友圈Item
    """
    # define the fields for your item here like:
    # name = scrapy.Field()
    date = scrapy.Field()  #日期
    moment = scrapy.Field()  #朋友圈文字

迄今为止咱们成功爬虫的书写。是或不是干着急跑一下。

6.3. 蜘蛛爬起来

命令行执行scrapy crawl moment -o moment.json,稍等片刻,热乎的朋友圈数据就变化到moment.json文件中了。

统计 12

7. 分词处理

jieba汉语分词提供了便于的接口用于分词和词频计算。我们从来调用jieba.cut办法即可取得分词结果。在此往日大家须要加载大家爬取的对象圈数据,即保存到moment.json文件中的数据,并拼接所有朋友圈文本传参至jieba.cut即可。
新添加一个analyse.py文件,定义analyse_words方法:

# -*- coding: utf-8 -*-

"""分析导出的朋友圈数据"""

import json
import os

import jieba
from wordcloud import WordCloud


def analyse_words():
    """
    分析抓取到的朋友圈数据,使用jieba进行分词,使用wordcloud生成词云
    """
    curr_path = os.path.dirname(__file__)  # 当前文件文件夹所在目录
    parent_path = os.path.dirname(curr_path)  # 上层目录
    file_path = os.path.join(parent_path, 'moment.json')
    font_path = os.path.join(parent_path, "simhei.ttf")
    if not os.path.isfile(file_path):
        return
    with open(file_path) as moment_file:
        data = json.load(moment_file)  # 使用json加载文件
        moments = [item.get('moment', '') for item in data]  # 获取朋友圈文字数组
        contents = ' '.join(moments)  # 拼接为长文本
        cut_texts = ' '.join(jieba.cut(contents))  # 使用结巴分词进行中文分词

8. 生成首要词词云

词云须要根据上一步的分词结果生成词云。代码也很简短:

cloud = WordCloud(font_path=font_path)
        wordcloud = cloud.generate(cut_texts)  #生成词云
        wordcloud.to_file('keys.png')  #保存图片
        image = wordcloud.to_image()  # 转化为图片
        image.show()  # 展示图片

末尾在文书末尾调用analyse_words(),命令行执行python analyse.py即可生成主要词!

统计 13

你可能嫌弃以上生成的词云比较丑,没提到,你可以选取wordart做出各样酷炫的功能。

9. 最后

因为【出书啦】未健全反爬机制,所以爬虫写下来也远非怎么难度,所以感兴趣的不妨尽早下手试一试。本文出于学习分享,无恶意窃取数据之意,也请读者不要用来他途!