什么是内容兴趣偏好标签呢?
简单来说就是分析用户喜欢看的文章类型,得到用户的兴趣偏好,在这样的基础上,对用户进行内容的个性化推荐和push推送,来有效促进app的活跃并拉长用户生命周期。
这件事情简单来说其实就是两步走:
一是,给文章进行分类,也就是我们俗称的给文章打标签。
二是,给用户打标签,也就是用户阅读了哪些类型的文章,相应的就会获取到自己的兴趣偏好标签。
那么在实际操作中真的如此简单吗?看似简单的两个环节,究竟是如何实现的呢?
一般情况下有三种方式获取样本:
一是人工对文章进行标注,优点是准确,缺点是效率低,对于算法要求大量样本的要求,成本非常高。
而另一种方式则是通过一些开源网站提供的关键词进行模型训练,比如可以从搜狗词库获取,优点是成本低,但缺点也很明显,由于不同的分类体系对部分分类的理解不一致,导致分类并不够准确,后期需要耗费大量的人力进行矫正。
第三种方式是和一些资讯类app进行合作,获取他们的文章以及分类作为样本,例如目前做的比较好的如今日头条、uc等都是不错的选择。我们当时其实都尝试了(一把辛酸泪)。
获取样本以后,就是算法模型的训练及其检验了。算法模型的训练原理,即通过对样本文章进行分词,抽取实体,建立特征工程,将每一个特征词作为向量,拟合出一个函数,这样,当有新的文章时,该文章通过分词,并通过模型计算出结果。但模型并不是能够有样本一次性就能准确的,模型还需要进行测试和矫正。
通过了测试的模型也并不是一劳永逸的,仍然可能在后期出现一些分类不准确的问题,这可能是样本造成的,也可能是算法模型造成的。这需要我们找出这些异常的文章及其分类,并矫正分类,再次作为训练样本投喂给模型,进行模型的矫正。一方面,我们可以对转化率比较低的分类的文章进行人工抽检,确定问题是否出在算法。另外,在这里,由于每一篇文章的标签都被赋予了一个值,我们可以为这些值设置一个阈值,当最高值低于某个阈值,这些文章及其标签将被召回,由人工进行标注和矫正,并在此投入样本库中。
文章标签的计算,由于文章具有多种标签的可能,并非一些二分类非此即彼的结果,因此我们采用的方式是,通过相似性算法,模型计算出文章的标签,并赋值,值越高则说明和这类标签越接近,并被打上相应标签。
至此,文章打标签的部分就已经完成了。
如何给用户打标签
给用户打标签的方式其实也可以包含两种,统计类的打标签及算法类的打标签。
统计类相对简单粗暴式的以用户一段时间阅读的文章类型作为用户的兴趣偏好。
而算法类则会增加更多的影响因素,包括文章阅读的数量,阅读的时间间隔,文章与当前热点事件的关系、用户属性因素等等。
前者在算法资源不足同时运营需求量大的情况下可以先行,而后者可以在前者的基础上切分一部分流量对算法模型进行验证和调整,不断优化。
但在用第一种方式进行时我们发现,用户在一段时间内阅读的文章类型并不是稳定的,大部分用户会有一个或者几个主要的兴趣偏好,这些类型阅读的文章篇数会更多,但同时,用户也会或多或少的阅读一些其他类型的文章,甚至有些用户是看到哪里算哪里,什么都会看。
基于这样的情况,我们需要对用户的兴趣偏好进行排名,即通过对用户一段时间内每种文章类型阅读的文章数进行排名,并取用户top 10的标签,清晰告诉运营用户喜欢什么类型的文章,这些类型中,用户喜欢类型的优先级是怎样的,便于运营同学进行推送选择。
因此,用户的标签也需要更加灵活,能够让运营同学基于事件发生时间及事件发生次数等权重进行灵活组合选择用户群。
由于目前push推送很大一部分是由人工进行的,从选择文章,到选择用户,到文章和用户的匹配,在正式进行推送前一般都会进行大批量的A/B test ,而资讯文章的类型非常多,仅一级标签已经达到30+种,二级标签从100到几百不等,总体的标签极有可能会有成千的标签,单靠运营同学进行推送,是绝对无法完成的。
因此,在运营资源有限又无法实现自动化的的情况下一般运营同学会对标签进行测试,并选择其中覆盖用户量大且转化率较高的标签。但同时这样的情况就会导致部分兴趣偏好比较小众的用户被排除出推送的人群。
针对这样的情况,我们取了用户top 10的二级标签及其对应的一级标签作为用户的一级和二级标签。这样,解决了用户覆盖量的问题,也可以让运营人员集中精力对主体标签及人群进行推送。