编程技术网,编程语言,IT新闻,code,代码审查

黄波:AI技术在知乎的应用实践(3)

2019-03-13 12:47

cad 2007,腋下脱毛方法,桂林现天价鱼,股本总额,北京375,乞力马扎罗的雪txt,租办公室,itunes同步

针对上述问题,我们将话题匹配进行了拆解,类似推荐系统一样,包括召回+排序两部分。召回的逻辑是给定候选问题,我们先从标签库里找出数十个最有可能相关的候选话题,在对这候选的数十个话题进行精细的排序打分,最终得到1到5个相关话题。模型效果还算不错,准确是93%,召回是83%。

接来下具体展开讲下召回和排序的策略,召回层分三个策略,第一个是比较简单的AC多模匹配,直接把匹配的话题作为候选集合;第二个比较有意思,我们在经典的点互信息(PMI)算法上做了优化,提出了一个两趟对齐算法的PMI算法,解决了传统PMI不能很好区分 “Python”和“Java”这种经常共现的兄弟节点的问题;最后我们会利用之前构建的知识图谱,把话题的上位话题也作为候选集合召回。

>

内容分析——专业性

最后再讲讲内容的专业性分析,知乎鼓励大家去生产专业性的内容,同时也希望专业内容在知乎得到更多的流通,但难点是机器怎么知道内容是否具有专业性,或者说推荐算法怎么知道内容的专业性程度,通过文本分析模型判断内容专业性是非常必要的。专业性识别的难点主要在于定义比较模糊,针对具体的一条数据很容易判断它的专业性,却很难制定出一个具体的标准,因为不同领域内容判断其是否为专业性的标准差异很大,另一个难点是缺少高质量的训练数据。

专业模型大概分了两个阶段,第一阶段主要利用用户行为,我们分析发现针对专业性内容,用户更倾向于收藏,很直观地思路是,我们利用hits算法对用户创建的收藏夹和收藏夹的内容进行建模,计算出的每个收藏夹权重及对应收藏夹里的内容权重,在此基础上计算出内容的专业性得分。

这个方法优点是准确度非常高,缺点是覆盖相对较低,因为是基于用户行为会有一定的滞后性,没法判断新内容的专业性。在第二个阶段,我们采用了基于文本语义分析的分类模型。这里采用了传统文本分类的人工特征加浅层模型的思路,为什么不用深度学习呢?刚才也提到训练数据获取成本很大,我们大概只有几万条训练数据,而专业性的回答和文章又特别长,直接上深度学习,模型大概率会过拟合。我们的人工特征主要包括两个层面。第一个是文本风格的特征,包括词性,还有标点之类的。另一个是非常重要的语义特征,我们基于全量语料对词进行聚类,并把词的类簇当作专业性模型的一个基本特征,最终专业性的效果准确是84%,召回是60%,应用于首页推荐页也取得了收藏率和点赞率等指标显著提升的正向效果。

三、用户分析实践

在理解完内容后,我们也需要对用户进行分析,简单来说就是给用户打上各种各样的标签,同时也会对用户社交关系的进行挖掘与建模,比如用户聚类、用户亲密度等。用户分析首先会分析用户的基本属性,像性别年龄以及用户本身的一些登陆地、设备信息等基本属性。然后就是用户兴趣的建模,兴趣计算主要来源于用户对推荐系统的交互行为,我们构建了基于不同粒度语义标签的用户兴趣以灵活支持多种场景,并且时间上也分为长期兴趣和实时短期兴趣,另外也可以根据内容的专业性标签和用户的交互行为判断其对于专业性内容的偏好。这里是一个用户分析的例子,对于“程序员张三”这个用户,我们能获取他的以下画像信息:性别 “男”,兴趣标签有“AI”、“机器学习”,更喜欢看专栏文章这种内容类型的资源,对回答、视频等类型偏好度较弱,另外也更偏好阅读专业性的内容,说明“程序员张三”喜欢在知乎学习计算机和机器学习相关的专业性知识。另一个用户 “运营小丽” 则区别很大,她喜欢看综艺和电视剧相关的讨论,对专业性内容偏好较弱。

用户分析主要依赖于用户和推荐系统的交互行为数据,这里就要求我们能处理好大数据量的离线计算和快速实时计算等大数据相关工作,并且还需提供高并发低延时的在线服务,我们设计了一套完善的离线与在线计算架构,以支撑策略更新和上层业务调用需求。整体架构上分了三大块,第一部分是实时计算,包括用户实时行为存储,用户实时兴趣计算等。第二部分是离线计算,包括模型迭代后的数据批量更新,包括用户基本属性、用户长期兴趣建模、用户聚类等工作。

上一篇:编程语言:开发人员的所爱与所恨

下一篇:泛在电力物联网概念再爆发:NB