zoukankan      html  css  js  c++  java
  • 文章内容相关性统计

     

    文章内容相关性统计

    左直拳

     

    内容相关性我能想到的是比较两篇文章提取出来的标签。

    每篇文章都可以提取出一些出现频率比较高的词语,就是标签,存放在数据库里。并且存放的时候已经按出现频率从高到低排列,频率高的标签保存在前面,低的在后面。假定标签表结构如下

    PageTag

    字段

    含义

    类型

    Id

     

    INT

    TagId

    标签ID

    INT

    PageId

    文章ID

    INT

     

    则对于同一篇文章(PageId相同)来讲,出现频率高的标签,ID一定小于频率低的标签对应的ID

    比较的思路是,如果两篇文章,相同标签的频率越高,数量越多,则说明这两篇文章的相似度就越高。这好象涉及到一个叫“权重”之类的东西。不过我不知道什么叫权重。

    找出某篇文章的相关文章的SQL语句如下:

    SELECT a.PageId,SUM(b.Row) AS Weight FROM PageTag AS a,

     

    (SELECT TagId,ROW_NUMBER() OVER(ORDER BY Id DESC) AS Row

    FROM PageTag

    WHERE PageId=某篇文章的ID) AS b

     

    WHERE a.PageId<>某篇文章的ID

    AND a.TagId=b.TagId

    GROUP BY a.PageId

    结果就可以将文章和相应的相似度列出来了。Weight越大,相似度越高。

    主要用了ROW_NUMBER()并且ORDER BY Id DESC所以频率越高的,ROW就越大,最后合计的SUMRowAS Weight就越大。同时,如果两篇文章相同的标签很多,合计数也跟着大,所以这个Weight应该可以反映权重。

    注: 这种算法在实际应用中效果不佳,除了提取出来的标签准确度不是很高外,算法本身也不太完善。比如说,一篇文章很长,提取出来的标签有10几个,而短的文章有的只有2、3个,这时候,长文章的标签权重普遍大于短文章的,统计出来就有偏差。

    抛出我的吊,来吸引您的玉。

  • 相关阅读:
    vue项目常用
    centos7之关于时间和日期以及时间同步的应用
    nginx 配置 https
    nginx 转发 minio 服务
    MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。
    SpringCloud第三弹(Feign客户端)
    IDEA代码里的黄色提示
    H3C配置tftp参数,搭配WDS,windows部署服务器。
    手动为nextclou添加插件(Collabora Online 在线OFFICE)
    nextcloud集成LDAP登录
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258289.html
Copyright © 2011-2022 走看看