根据文章标签相似度获取推荐文章

Posted jcydd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据文章标签相似度获取推荐文章相关的知识,希望对你有一定的参考价值。

主要是使用similar_text函数判断两个字符串的相似度,排序后选出相似度排名前5为的数据

similar_text虽然对中文的相似度检测不是太准确,但是可以作为一个参考,挑选出相似文章

也可以直接对文章标题进行相似度检测获取推荐文章,通过文章标题的实现起来更简单一些

我这里给出的案例是根据标签相似度获取推荐文章的代码

技术图片

 

//相关文章获取,使用similar_text函数
        $key=‘‘;
       //将本文的标签组合成字符串,因为每个标签在数据表是一条数据
        foreach ($tagsres as $v){
            $key=$key.‘,‘.$v[‘tags_name‘];
        }
        //halt($key);
//根据文章id分组获得各个文章的标签字符串
        $alltags=Db::query("select at_id,group_concat(tags_name) from blog_tags group by at_id");
        //$alltags=Db::table(‘blog_tags‘)->field(‘concat(tags_name),at_id‘)->select();
        //halt($alltags);
//获取所有文章标签与该文章标签的相似度
        $percent=array();
        foreach ($alltags as $v){
            $percent[$v[‘at_id‘]]=similar_text($key,$v[‘group_concat(tags_name)‘]);
        }
//去掉本文
        unset($percent[$at_id]);
//对相似度从大到小排序,arsort可以保留key,rsort不行
        arsort($percent);
//选取排名前五个 
        $percent=array_slice($percent,0,5,true);
        //halt($percent);
        $arr=array();
        foreach ($percent as $k=>$v){
            $arr[]=$k;
        }
        //halt($arr);
//查询排名前5的文章
        $alsoarticle=Db::table(‘blog_article‘)->alias(‘a‘)->join(‘blog_cate b‘,‘a.cate_id=b.cate_id‘)->where([‘a.at_id‘=>$arr])->select();
        //halt($alsoarticle);    
$this->assign(‘alsoarticle‘,$alsoarticle);

 

以上是关于根据文章标签相似度获取推荐文章的主要内容,如果未能解决你的问题,请参考以下文章

推荐系统入门到项目实战:基于相似度推荐(含代码)

初探推荐系统-01

相关文章推荐阅读(标签)

基于画像离线+实时推荐系统全面总结

基于画像推荐系统设计(离线+实时)

自然语言处理(NLP)基于PaddleNLP的短文本相似度计算