用户画像(三)|通过用户对不同文章的不同行为(浏览、点赞、评论、分享)提取用户标签 - 简书

标签: | 发表时间:2018-04-18 14:32 | 作者:
出处:https://www.jianshu.com

最近我们对我们平台的用户进行了一个用户标签提取,这中间的主要流程如下图3-1所示:

图3-1

一、梳理做用户画像需要的数据
用户画像是基于业务数据而进行的,如果前期没有考虑好这一点,那么在真正实操时会发现做分析需要的数据存在不同的业务表里面,甚至有些数据根本没有保存。所以,在做用户画像之前最需要做的事就是梳理清楚到底需要哪些数据,如果业务上没有保存,那么就增加保存,如果数据非常分散,最好是集中保存下,否则后面随着数据越来越大,从多个业务表里面汇总数据也是一个非常麻烦的事。
如上图,如果我们要获取的是用户点赞、评论、分享、浏览的数据,那么可以使用AOP把用户做这些请求的数据记录到一个日志里面。例如:

字段名 字段说明 示例
user_id 用户id 1
operation_type 行为类型 1-点赞、2-评论、3-分享、4-浏览
operation_content_id 内容idt 1
operation_time 操作时间 2018.4.17

接下来就是对内容id进行去重,可以直接使用Set去重,去重之后可以去内容表里面通过内容id获取到内容的URL地址,因为我们的内容是不保存在本地的,所以需要通过内容的URL去第三方平台拿信息。

二、通过URL获取内容的标题和正文
对于一篇文章来说,标题和正文是最有价值的,对于提取标签这个事来说,也是需要标题和正文的。提取的方式有很多,比如可以单独写针对不同平台的爬虫进行提取信息,但是这样的成本很大。为了保证提取的内容确实是正文,也不能简单的使用 driver.find_element_by_xpath('//body').text的方式,因为这样取出来的数据有很多干扰信息,会把整个页面的所有信息都获取出来当作正文,包括推荐的内容,包括广告...页面上呈现的所有内容。代码如下:

      # 爬取文章内容
driver = chrome_dirver()
driver.set_page_load_timeout(20)
# 假设文章的URL存放在article.json文件中
with open('article.json') as f:
    article = f.read()
    article = json.loads(article)
    for k, v in article.iteritems():
        try:
            article_id = k
            article_url = v
            driver.get(v)
            article_title = driver.title
            article_info = driver.find_element_by_xpath('//body').text
            # 这里已经获取到文章标题和正文   
        except Exception as e:
            print e
            continue
    driver.close()
    driver.quit()

GitHub上有牛人写了一个基于行块分布函数的通用网页正文抽取算法的Python版本。我们通过测试发现准确性是还可以的,GitHub地址 https://github.com/chrislinan/cx-extractor-python

三、通过百度的自然语言算法AipNlp计算出所有文章的标签及对应权重
获取到文章的标题和正文之后,就是需要提取这篇文章的标签以及标签的权重。当然我们可以自己使用开源的分词算法,但是如果没有“词语-有效标签”的库,就是把文章的分词做好之后也很难提取有效的标签。我们这边考虑的是使用百度的自然语言算法AipNlp来帮助我们做这个事。为什么使用百度云,而不使用腾讯云或者阿里云?因为腾讯的“词语-有效标签”库偏社交,阿里的“词语-有效标签”偏电商,百度就是库是最全的。
使用百度云中的自然语言处理SDK很简单,可以直接查看他的 SDK文档,有Python、Java、PHP、Node各种语言的。
例如使用Java的,先增加maven依赖:

      <dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>${version}</version>
</dependency>

再就是使用,最简单的样例如下:

      public class Sample {
    //设置APPID/AK/SK
    public static final String APP_ID = "你的 App ID";
    public static final String API_KEY = "你的 Api Key";
    public static final String SECRET_KEY = "你的 Secret Key";

    public static void main(String[] args) {
        // 初始化一个AipNlp
        AipNlp client = new AipNlp(APP_ID, API_KEY, SECRET_KEY);

        // 调用接口
        String title = "一面APP是一款非常有意思的社交APP";
        String content = "一面是一款基于文字、视频、图片的形式,网罗各类资讯、音乐、运动、旅行、周边生活信息、打折促销等内容的社交平台。在一面上,你可以创建各种类型的主题,和家人、恋人、朋友、同事、同学、邻居、同伴等一起订阅专属信息。真正做到关心你关心的人关心的一切,让内容共享温暖我们的社交关系。";

        JSONObject res = client.keyword(title, content);
    }
}

Body请求示例:

      {
    "title":"一面APP是一款非常有意思的社交APP",
    "content": "一面是一款基于文字、视频、图片的形式,网罗各类资讯、音乐、运动、旅行、周边生活信息、打折促销等内容的社交平台。在一面上,你可以创建各种类型的主题,和家人、恋人、朋友、同事、同学、邻居、同伴等一起订阅专属信息。真正做到关心你关心的人关心的一切,让内容共享温暖我们的社交关系。"
}

返回示例:

      {
    "log_id": 4457308639853058292,
    "items": [
        {
            "score": 0.997762,
            "tag": "社交"
        },
        {
            "score": 0.861775,
            "tag": "资讯"
        },
        {
            "score": 0.845657,
            "tag": "订阅"
        }
    ]
}

四、通过用户、行为类型、文章的关系,计算出每个用户的标签及权重
例如:点赞权重为0.8、评论权重为0.9、分享权重为1.0、浏览权重为0.3。那就是根据这个用户对哪些文章以何种行为进行了关联,把该文章的标签关联到这个用户上即可,具体的算法我在 用户画像(一)|计划制定讲过,大致如下:

3.6、总结
综合上述分析,用户画像的数据模型,可以概括为下面的公式:
用户标识 + 时间 + 行为类型 + 接触点(网址+内容)
某用户因为在什么时间、某个地点、对某个对象,做了什么事。所以会打上XX标签。
用户标签的权重可能随时间的增加而衰减,因此定义时间为衰减因子r,行为类型、网址决定了权重,内容决定了标签,进一步转换为公式:
标签权重=衰减因子×行为权重×位置权重
当然,很多时候标签本身也是有权重的。
如:用户A,昨天在发现频道浏览“2018年必看惊悚恐怖片之一:XXX电影”的主题内容。
我们为这个内容打的标签为:恐怖 0.6,电影 0.8
时间:因为是昨天的行为,假设衰减因子为:r=0.95
行为类型:浏览行为记为权重1
地点:在发现频道为 0.6(相比在我的-我创建的主题中的0.9)
则用户偏好标签是:电影,权重是0.95*0.6 * 1=0.57,即,用户A:恐怖 0.57、电影 0.57。最后再乘以标签自己的权重。

上述模型权重值的选取只是举例参考,具体的权重值需要根据业务需求二次建模,这里强调的是如何从整体思考,去构建用户画像模型,进而能够逐步细化模型。

相关 [用户 画像 用户] 推荐:

细说 用户画像

- - 神刀安全网
对于互联网从业者,经常会提到一个词——用户画像. 作为一名刚主要做用户画像DMP的数据PM,工作中总是会被需求方问到——. 我要查看XXX的用户画像 或是 能否能够XXXX类用户的画像. 抑或是有别的产品会问到:你们是怎么做用户画像的. 然而在沟通的过程中,我发现,不同的人对用户画像的理解差异还是非常大的.

创建定性用户画像

- - 腾讯CDC
  在产品研发过程中,确定明确的目标用户至关重要. 不同类型的用户往往有不同甚至相冲突的需求,我们不可能做出一个满足所有用户的产品.   为了让团队成员在研发过程中能够抛开个人喜好,将焦点关注在目标用户的动机和行为上,Alan Cooper提出了Persona这一概念. “赢在用户”这本书将其翻译为“人物角色”,在腾讯我们习惯了使用“用户画像”这个术语.

族群歧视与用户画像

- - IT瘾-tuicool
题图是这两天的新闻人物美籍越南人 Dr. 美国朋友觉得奇怪,为什么要说他是越南人. 另一位 Asian,估计是位澳大利亚籍香港人,发了一条推特说——Dr. Dao 当时反抗的暴力其实是合法的强制执法. 第三位 Asian,相信是位中国籍大陆知友,读了这条推特很愤慨,挥键写就高赞爆款推送《比打人更可怕的是国人的落井下石》.

大数据下的用户画像

- - 人月神话的BLOG
简单点来说用户画像,即是 根据用户的静态基本属性和动态行为数据来构建一个可标签化的用户模型. 静态属性:个人基本信息(地域,年龄,性别,婚姻),家庭信息,工作信息等. 动态行为:购买行为,点击行为,浏览,评论,营销活动参与行为,退换货行为,支付行为等. 为何要进行用户画像,核心还是后续的针对性营销,当我们组织一次针对性营销的时候,首先要确定的就是营销的用户群体,那么就要从用户标签中精确定位这个群体.

用户画像从入门到挖坑

- - leejun2005的个人页面
用户画像承载了两个业务目标:一是如何准确的了解现有用户;二是如何在茫茫人海中通过广告营销获取类似画像特征的新用户. 比如在了解用户的基础上明确产品定位,“投其所好”;获取一个新用户/新订单;售前的精准营销、售中的个性化推荐匹配,以及售后的增值服务等. 1.2 用户流量的三大终极问题:认知用户. 现存客户 (Existing Customer) - 我的现存客户是怎么样,喜欢什么,什么消费习惯,哪些客户最值钱等等.

数据驱动与用户画像

- -
最近不少客户提出,希望与神策数据共同建设“用户画像”以驱动产品智能,但什么才是用户画像呢. 我们通过这篇文章,介绍我们理解的两种用户画像(User Persona 和 User Profile),以及如何构建用户画像(User Profile)的标签体系并驱动产品智能. 第一种用户画像(User Persona)是产品设计、运营人员从用户群体中抽象出来的典型用户:.

你真的懂用户画像吗?

- -
在移动互联网时代,精细化运营成为企业重要的竞争力,此时,“用户画像”的概念也应运而生. 用户画像是指,在大数据时代,我们通过对海量数字信息进行清洗、聚类、分析,从而将数据抽象成标签,利用这些标签将用户形象具体化,从而为用户提供有针对性的服务. 在下文中,我们将以个推用户画像产品为例,为你详解“用户画像”的技术特点和使用价值.

浅谈用户画像的系统化

- -
|0x00 如何理解用户画像. 最近跟朋友聊天,谈起了35岁危机,我的观点是:35岁没什么大不了的,我多学点金融知识,以后转行做金融去;朋友的观点是,转行可不是说说就行,不是说你了解一个行业,就可以去工作的,你要深入理解背后的商业逻辑. 随后,举了一个例子:“什么是用户画像,用户画像如何应用. 这个问题,对于做数据研发的我来说,简直不要太简单.

基于用户画像大数据的电商防刷架构

- - 快课网
最近1~2年电商行业飞速发展,各种创业公司犹如雨后春笋大量涌现,商家通过各种活动形式的补贴来获取用户、培养用户的消费习惯. 但任何一件事情都具有两面性,高额的补贴、优惠同时了也催生了“羊毛党”. “羊毛党”的行为距离欺诈只有一步之遥,他们的存在严重破环了活动的目的,侵占了活动的资源,使得正常的用户享受不到活动的直接好处.

基于大数据的用户画像构建(理论篇)

- - 人人都是产品经理
简而言之,用户画像是根据用户社会属性、生活习惯和消费行为等信息而抽象出的一个标签化的用户模型. 构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识. 举例来说,如果你经常购买一些玩偶玩具,那么电商网站即可根据玩具购买的情况替你打上标签“有孩子”,甚至还可以判断出你孩子大概的年龄,贴上“有5-10岁的孩子”这样更为具体的标签,而这些所有给你贴的标签统在一次,就成了你的用户画像,因此,也可以说用户画像就是判断一个人是什么样的人.