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个,这时候,长文章的标签权重普遍大于短文章的,统计出来就有偏差。

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

  • 相关阅读:
    Codeforces 1485C Floor and Mod (枚举)
    CodeForces 1195D Submarine in the Rybinsk Sea (算贡献)
    CodeForces 1195C Basketball Exercise (线性DP)
    2021年初寒假训练第24场 B. 庆功会(搜索)
    任务分配(dp)
    开发工具的异常现象
    Telink MESH SDK 如何使用PWM
    Telink BLE MESH PWM波的小结
    [LeetCode] 1586. Binary Search Tree Iterator II
    [LeetCode] 1288. Remove Covered Intervals
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258289.html
Copyright © 2011-2022 走看看