这两个新闻的关键词虽然类似,讲的却是完全不同的内容,相关性很弱。如果只是看关键词重合度,出现错误判断的可能性就很高;所以特征向量还需要有第二个关键词的指标,叫新闻内频率,称之为TF(Term Frequency),衡量每个关键词在新闻里面是否高频。 那么问题来了,如果两条新闻的关键词重合度高,新闻中关键词的频率也相差无几,是否说明相关性很强呢? 理论上是的,但又存在另外一种情况:如果我们新闻库里所有的新闻都是讲广州的,广州天气,广州交通,广州经济,广州体育等,他们都是讲广州相关的情况,关键词都包含广州,天河,越秀,海珠(广州各区)等,并且有着类似的频率,因此算法很容易将它们判断为强相关新闻;从地域角度讲,这种相关性确实很强,但从内容类别层面,其实没有太多相关性,如果我是一个体育迷,你给我推荐天气,交通之类的内容,就没多大意义了。 因此引入第三个关键词的指标,即关键词在在所有文档中出现的频率的相反值,称之为IDF(Inverse Document Frequency)。为什么会是相反值?因为一个关键词在某条新闻出现的频率最大,在所有文档中出现的频率越小,该关键词对这条新闻的特征标识作用越大。 这样每个关键词对新闻的作用就能被衡量出来即TFIDF=TF * IDF,这也就是著名的TF-IDF模型。 3.3 相关性算法 做完分词和关键词指标后,每一篇新闻的特征就能用关键词的集合来标识了:
其中word0,1,2……n是新闻的所有关键词,tfidf0,1,2……n则是每个关键词的tfidf值。 两个新闻的相似度就能通过重合的关键词的tfidf值来衡量了。根据之前所学的知识,几何中夹角余弦可以用来衡量两个向量的方向的差异性,因此在我们的算法中使用夹角余弦来计算新闻关键词的相似度。夹角越小,相似度越高。 有了关键词和各关键词的tfidf之后,就可以计算新闻的相似度了。假设两条新闻的特征列表如下:
可以看到两条新闻有5个重合的关键词:广州,摩拜单车,太阳,天河和市长,因此两条新闻的相关性由这5个关键词决定,计算方式如下:
得出两条新闻的相关性最终值;用同样的方法能得出一条新闻与新闻库里面所有内容的相关性。 3.4 用户特征 得到新闻特征以后,还需要得到用户特征才能对两者进行匹配和推荐,那怎么获得用户特征呢? 需要通过用户的行为来获得,用户通过阅读,点赞,评论,分享来表达自己对新闻内容的喜爱;跟热度排名类似,我们对用户的各种行为赋予一定的“喜爱分”,例如阅读1分,点赞2分,评论5分等,这样新闻特征跟用户行为结合后,就能得到用户的特征分。
而随着用户阅读的新闻数越来越多,该用户的标签也越来越多,并且越发精准。 从而当我们拿到新闻的特征后,就能与用户的关键词列表做匹配,得出新闻与用户阅读特征的匹配度,做出个性化推荐。 3.5 其他运用 除了个性化推荐,基于内容的相关性算法能精准地给出一篇新闻的相关推荐列表,对相关阅读的实现非常有意义。此外,标签系统对新闻分类的实现和提升准确性,也有重要的意义。 3.6 优缺点 基于内容的推荐算法有几个明显优点: 对用户数量没有要求,无论日活几千或是几百万,均可以采用;因此个性化推荐早期一般采用这种方式; 每个用户的特征都是由自己的行为来决定的,是独立存在的,不会有互相干扰,因此恶意刷阅读等新闻不会影响到推荐算法。 而最主要的缺点就是确定性太强了,所有推荐的内容都是由用户的阅读历史决定,所以没办法挖掘用户的潜在兴趣;也就是由于这一点,基于内容的推荐一般与其他推荐算法同时存在。 4. 基于用户的协同推荐 终于,经过团队的努力,你的产品已经有了大量活跃用户了,这时候你开始不满足于现有的算法。虽然基于内容的推荐已经很精准了,但总是少了那么一点性感。因为你所有给用户的内容都是基于他们的阅读习惯推荐的,没能给用户“不期而遇”的感觉。 于是,你就开始做基于用户的协同过滤了。 (责任编辑:本港台直播) |