V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
vicalloy
V2EX  ›  程序员

stackoverflow的Related Tags功能怎么实现,有人做过没

  •  
  •   vicalloy ·
    vicalloy · 2011-04-25 20:03:31 +08:00 · 4798 次点击
    这是一个创建于 4980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    stackoverflow和delicus都有提供Related Tags的功能。
    给出几个Tag,然后将关联的Tag给出。
    不知大家有做过没
    能想到的方案:
    1. 建立一张Tag关联表,保存Tag的关联关系以及关联条目的数目。在用户打标签的时候更新标签的关联表,并更新关联数目。
    比如用户打标签 a,b,c
    ab 1
    ac 1
    bc 1
    abc 1
    好处:
    应当效率不错,可以按照关联Tag条目数进行排序。
    问题:
    实现起来麻烦点。
    必须限制每个条目的tag数,不然记录数会膨胀的非常快。9*8*7...*1
    估计stackoverflow应当用的是这个方案。在stackoverflow里限制tag数最多为5。一方面可能是控制tag质量,另一方面应当是技术原因。

    2. 提取当前页面上条目的所有tag
    比如ios的tag页面
    有条目:
    iphone4:iphone4,ios,mobile
    ipod:ipod,ios,mp3
    提取出的关联tag:
    ios,mobile,mp3
    好处:
    实现简单,如果存在关联tag,肯定可以查出来。
    问题:
    效率低
    显示的关联Tag随机性比较大。
    5 条回复    1970-01-01 08:00:00 +08:00
    muxi
        1
    muxi  
       2011-04-25 20:54:59 +08:00
    呵呵,这个显然不是这么算的,像stackoverflow 这样的站点面临的可能是数以百万记的主题,各种问题也五花八门,涉及的领域也不受控制,这样的关键词组合可能高达几十万甚至上百万,不可能事先将关键词设定好,然后手动设置关系

    建议你了解一下text clustering
    vicalloy
        2
    vicalloy  
    OP
       2011-04-25 21:09:59 +08:00
    这个问题在python列表问过。也了解过text clustering,不过感觉不象。
    如果用text clustering,计算count会是个问题,而且感觉有些将问题复杂化。
    SO在控制每个问题的Tag数后,Tag的总数量也没很夸张,刚去算了下,目前不到3W个Tag。
    Related数应当比3w*3w少很多,估计Related不超过1亿。
    vicalloy
        4
    vicalloy  
    OP
       2011-04-25 21:23:29 +08:00
    @icyflash 这个文档已经看过了,里面没有涉及到Related Tags的东西。回复里有人问,不过也没看到有人反馈。
    目前看到实现了Related Tags的网站也就SO和delicus。
    其中SO限制了每个问题的Tag数目。
    delicus的Related Tags只是个人范围内的Related Tags,并不是针对全站。
    xuwenhao
        5
    xuwenhao  
       2011-04-25 21:36:57 +08:00
    Frequent Pattern Mining
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   908 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.