好神拖厂家
免费服务热线

Free service

hotline

010-00000000
好神拖厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

网站更懂读者戳中开发者痛点的文章推荐算法

发布时间:2020-06-28 11:21:22 阅读: 来源:好神拖厂家

在很多网站中我们看到有文章推荐功能,有的网站中还使用的无觅插件或百度的脚本挂件,但是推荐出来的文章却存在两个问题:相关性不大,不能引发读者兴趣。

那末,有没有一种方法,提高相干文章的推荐吻合度呢?答案是有的。

我还见过很多博客中放出的根据标签来推荐相干文章的代码,这种方法应该是比较好的,但是问题是,很多博主对标签的选择非常不专业,标签的选取常常是 随便的,即使两篇文章都含有百度这个标签,可能一篇文章是讲百度搜索规则的变化,而另外一篇讲百度年营收,两篇文章根本没有非常明显的相关性。

1.期待谷歌更加强大的推荐挂件

在这个方面,虽然我们对百度寄与了厚望,但是实际上我更相信谷歌的技术。原理很简单:

通过不同用户的不同搜索词进入不同文章,而这些搜索词在其他用户而言又是意思相近的。

理解起来有点难,我们只能通过例子来说明:有A、B、C三个用户。有a、b、c3篇文章。A搜索w点击进入了a文章,B搜索m点击进入了b 文章,C搜索p进入c文章时,谷歌发现w、m、p这三个词组意思非常相近,所以判断a、b、c3篇文章是相干文章,因此在3篇文章下方返回了一个相干 文章列表(使用javascript来调用)。

通过历史记录来判断某些文章相干,很多用户点击进入某篇文章后,同时进入另外一篇文章,说明文章相关性强。

如果非得靠谷歌搜索的关键词,就显得太傻了,通过谷歌统计代码,从历史阅读记录来进行深入判断。当A进入a文章以后,发现下方有一个随机的推荐列 表,如果发现有自己需要的或感兴趣的文章b,就会点击进去,这些行动被记录在谷歌的大数据中,当从a进入b被无数人实践过后,乃至可以统计b出现在a页 面的哪一个位置更容易被点击,第几次进入的时候是不是不愿意再点击b文章了,而谷歌完全有能力做到这类分析,终究当B、C首次进入a文章的时候,b文章的链接 就会非常公道的出现在该出现的位置。而实际上,如果无数用户从a进入,最后到了c这篇文章,那末为何不直接把c文章链接放在a页面呢?这多少有点大数据 的意思。

2.统计和聚类:数据库爬虫

人工智能希望计算机有理解能力,但实际上目前我们只能通过统计和聚类来更加只能的判断相关性和可能性。100个人买了尿不湿的时候买了啤酒,这不能说明甚么,但是有1万亿人次都这样做了呢?

通过设计一个爬虫程序,到数据库中的文章表中去抓取,对文章标题、内容、摘要、关键词、标签等进行分词统计。最原始的方案是最长匹配词数量越多,文章相关性越强。

爬虫要做的就是匹配词组,因此最开始应当有一个词典。但是词典需要人为手工建立,略显麻烦。解决方案也很简单,用一篇典型文章作为原始案例,让爬虫 去爬,反复的爬,通过分词建立原始词典。利用这个原始词典再去爬其他的文章,遇到新词的时候就加入到词典中。这种方法能够保证新词只会在后面去爬的文章中 出现。在爬的进程中,一方面可以发现新词加入词典,另一方面又把词频统计出来,依照词组的长度降序排,找到最长词。通过对文章最长词的比较,肯定文章的相 关性。

但是这种方法必须面临两个问题,一个是效力问题,一个是干扰问题。搜索引擎中最核心的问题之一就是效力,主要是两个方面的效力,一个是爬取,另一个是检索。对应到推荐系统中,一方面是如何肯定文章的相关性(爬的效力),另一方面是如何更快的根据爬的结果返回相干文章列表(取的效力)。干扰问题则是指 部份文章的词频没法反应这个问题的核心主旨,例如一篇含有100行代码的文章,介绍性的文字可能只有20-30行,这种情况下很难避免统计结果与文章核心 主旨不符(而其他文章的统计结果又相对比较准确)。

为了提高效率,你可以鼓动你的读者来为你提供词典,比如说读者读完文章后,你要求他输入认为可以概括本文的关键词,这样可以让爬虫更加肯定自己是不是应当省去某些词,而重视某些词。

3.最有可行性:标签、搜索和阅读记录

上面说到的两种方案都是离我们比较远的,普通程序员很难在自己的网站中实现。回归现实,我们希望真正可以在网站中实现的一种方案(即便可能相关性结果略微弱一点)。

标签是最公道的一种方案。给不同的文章贴上3个以上的标签,由于标签是人工撰写的,所以最好有一个自己的标签列表,避免把 同一个意思写成了不同的标签,例如自行车单车脚踏车。把标签统一起来,意思相近的,全部统归为一个词,下次再打算贴标签的时候,就只用这个 词。3个以上的标签基本上能反映出该文章大概要讲甚么内容。在使用程序去挑选相干文章的时候,尽量的匹配所有标签,假设两篇文章有3个以上的标签,那应 该是有相同主题的内容的吧。我见过只要有一个标签相同就推荐出来,我认为这种方法不好,文章开头已举过了例子。

但标签的方法毕竟是人工来弄,思考和统归进程是很累的。

一个网站中相关性比标签还要强的,应该是站内搜索结果。我是指那些具有略微强大的搜索模块的站内搜索,仅仅用LIKE去匹 配一下数据库的情况,个人认为搜索结果参考价值比较低,特别是只用一个搜索词的情况下。但是大部分网站的搜索模块还是比较差的,因此,我的建议是,规定用 户必须使用两个以上的词进行搜索,这样可以保证搜索结果相对准确。

但是如何将搜索应用到文章推荐中呢?

搜索的出发点是关键词,因此你得找到和这篇文章相干的关键词。怎样找呢?一种是直接使用标签,把这篇文章的标签作为关键词 (上面说了,3个标签以上),利用网站的搜索模块,搜索出文章,返回到当前文章的页面,列出链接列表便可。另一种比较复杂,通过阅读记录来获得关键词。 (这里需要提一下,面对普通的网站,分词的想法被我放弃了。)阅读记录里面记录了一些关键词,包括站外搜索引擎关键词、站内搜索关键词和阅读过的文章的标 签。阅读记录里面需要通过社会网络方法,找出与当前文章相干的关键词,再通过网站的搜索模块,搜索出相干文章,把链接列表显示出来。

当A通过w搜索进入网站的时候,记录下w(如何获得搜索引擎过来的关键词的文章网上一大堆),并且标记它跟a文章相干(例如记录到a的一个 字段里,或另外建立一个表记录对应关系)。当B和A产生了一样的情况的时候,增加相干次数n。当n的值大到一个区间的时候,那末w肯定和a相干。一样的 方法,m、p也跟a相干,可见w、m、p这三个词组和a都相干。拿w、m、p到网站的搜索模块中检索,返回的结果可能就是用户最需要的。

站内搜索的道理一样,通过记录不同的用户搜索的词和点击进入的结果的一个n值,终究找到某些文章最相干的关键词,用这些词去搜索,返回的结果应该是比较相干的。

历史阅读记录主要是指用户都浏览了网站内的哪些文章,在这个用户的浏览器中用cookie记录下来,为了避免cookie被清除,还可以通过用户注 册、社交账号绑定、IP记录等把该用户的行动记录到网站数据库中。不单单要记录读了哪些文章,还要记录其浏览的顺序和页面停留的时间,高级一点还可以记录 每个页面都在哪些位置进行了点击,哪些位置花了更多的时间来研究浏览。总之,这些都可以通过javascript来实现。只有通过按顺序点击链接次数在 5次之内的访问有参考价值,而且这里假定了用户不是由于图片上有个美女而被吸引去点击的。只要符合这种情况,就可以把用户浏览过的这些文章的标签搜集起 来,进行词频统计,挑出词频最大的几个,再使用搜索模块搜索文章。下一次有新用户访问上面5次访问内的文章的时候,都可以尝试把这些搜索到的文章作为推荐 文章推荐给用户。

这就有点前文提到的大数据的意味儿了。

结语

无论是哪一种方案,你会发现,其实你的网站读者在推荐文章的程序中会起到非常大的作用。这是Web2.0带来的影响,除第二种方案需要迫使用户参 与以外,我们都可以利用程序,神不知鬼不觉的监听用户行动,从中发掘出有用的信息。而推荐系统,也可能因为人的参与而更加准确,为后面新来的读者提供更重要的信息。

减肥瘦身方法

正品希爱力双效片

怎么才能健康减肥