文章插图
上图是头条语义标签的特征和使用场景 。他们之间层级不同,要求不同 。
文章插图
分类的目标是覆盖全面,希望每篇内容每段视频都有分类;而实体体系要求精准,相同名字或内容要能明确区分究竟指代哪一个人或物,但不用覆盖很全 。
概念体系则负责解决比较精确又属于抽象概念的语义 。这是我们最初的分类,实践中发现分类和概念在技术上能互用,后来统一用了一套技术架构 。
文章插图
目前,隐式语义特征已经可以很好的帮助推荐,而语义标签需要持续标注,新名词新概念不断出现,标注也要不断迭代 。其做好的难度和资源投入要远大于隐式语义特征,那为什么还需要语义标签?
有一些产品上的需要,比如频道需要有明确定义的分类内容和容易理解的文本标签体系 。语义标签的效果是检查一个公司NLP技术水平的试金石 。
文章插图
今日头条推荐系统的线上分类采用典型的层次化文本分类算法 。
最上面Root,下面第一层的分类是像科技、体育、财经、娱乐,体育这样的大类,再下面细分足球、篮球、乒乓球、网球、田径、游泳…,足球再细分国际足球、中国足球,中国足球又细分中甲、中超、国家队…,相比单独的分类器,利用层次化文本分类算法能更好地解决数据倾斜的问题 。
有一些例外是,如果要提高召回,可以看到我们连接了一些飞线 。这套架构通用,但根据不同的问题难度,每个元分类器可以异构,像有些分类SVM效果很好,有些要结合CNN,有些要结合RNN再处理一下 。
文章插图
上图是一个实体词识别算法的case 。基于分词结果和词性标注选取候选,期间可能需要根据知识库做一些拼接,有些实体是几个词的组合,要确定哪几个词结合在一起能映射实体的描述 。
如果结果映射多个实体还要通过词向量、topic分布甚至词频本身等去歧,最后计算一个相关性模型 。
三、用户标签
内容分析和用户标签是推荐系统的两大基石 。内容分析涉及到机器学习的内容多一些,相比而言,用户标签工程挑战更大 。
文章插图
今日头条常用的用户标签包括用户感兴趣的类别和主题、关键词、来源、基于兴趣的用户聚类以及各种垂直兴趣特征(车型,体育球队,股票等) 。还有性别、年龄、地点等信息 。
性别信息通过用户第三方社交账号登录得到 。年龄信息通常由模型预测,通过机型、阅读时间分布等预估 。
常驻地点来自用户授权访问位置信息,在位置信息的基础上通过传统聚类的方法拿到常驻点 。
常驻点结合其他信息,可以推测用户的工作地点、出差地点、旅游地点 。这些用户标签非常有助于推荐 。
文章插图
当然最简单的用户标签是浏览过的内容标签 。但这里涉及到一些数据处理策略 。
主要包括:
一、过滤噪声 。通过停留时间短的点击,过滤标题党 。
二、热点惩罚 。对用户在一些热门文章(如前段时间PG One的新闻)上的动作做降权处理 。理论上,传播范围较大的内容,置信度会下降 。
三、时间衰减 。用户兴趣会发生偏移,因此策略更偏向新的用户行为 。因此,随着用户动作的增加,老的特征权重会随时间衰减,新动作贡献的特征权重会更大 。
四、惩罚展现 。如果一篇推荐给用户的文章没有被点击,相关特征(类别,关键词,来源)权重会被惩罚 。当然同时,也要考虑全局背景,是不是相关内容推送比较多,以及相关的关闭和dislike信号等 。
文章插图
用户标签挖掘总体比较简单,主要还是刚刚提到的工程挑战 。头条用户标签第一版是批量计算框架,流程比较简单,每天抽取昨天的日活用户过去两个月的动作数据,在Hadoop集群上批量计算结果 。
推荐阅读
- 茶能提神亦能安神
- 黑名单|近期319人被共享单车“拉黑”:多数人曾将单车停在高速、高架上
- 头条上的官方教程,我学到东西了
- yum、vim、gcc/g++、gdb、make/makefile Linux开发工具
- 汽车紧固夹紧力连接与浮动连接方式
- 奶瓶买pp还是pa
- 卫星|我国成功发射高分三号03星:实现1米分辨率、1天重访
- 金花茶树怎么种?
- NAT及PAT 网络地址转换
- TCP、UDP以及HTTP的简单讲解