如何根据标题反向匹配关键字? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Ariagle
V2EX    问与答

如何根据标题反向匹配关键字?

  •  
  •   Ariagle 2012-05-30 22:00:19 +08:00 3953 次点击
    这是一个创建于 4883 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景是这样的:

    爬虫程序会周期性收录一些 item , item 有 title 这一属性;
    另有一堆 object ,每个 object 均有若干 keyword ;
    object 通过自己的 keyword 来对 item 的 title 进行搜索,以获取到匹配自己的 item ;

    当用户访问 object 时,就进行一次搜索,以返回 item 结果。但这样没法给 item 和 object 建立双向关联,即只能通过 object 的 keyword 来搜索 items ,不能通过 item 反向找回 objects 。
    (item 和 object 是多对多关系,并不是一一对应的)

    新建立一个关系表是肯定的,问题是,如何给它们建立关联呢?

    一个想法是,周期性去轮 object 集合,逐个 object 进行处理,搜索出匹配的 items ,然后将其写进关系表。但是这样不太环保,大部分 object 是不需要更新的,只有少部分 object 需要增删 item 关联。

    那么,有没有什么办法,能直接根据 item 的 title 来反向匹配出 object 呢?这样只需在爬虫收录新 item 后,对这堆新 item 建立新关联就行了。
    或者有其他的办法能高效环保地建立起关联?(难道要去动用机器学习相关技能……)
    9 条回复    1970-01-01 08:00:00 +08:00
    tioover
        1
    tioover  
       2012-05-30 22:11:27 +08:00
    可能没有看懂……而且我是小小

    可不可以这样,keyword单独列个表,关联object和item,在item加入的时候就将关联写入keyword表?
    Ariagle
        2
    Ariagle  
    OP
       2012-05-30 22:17:58 +08:00
    刚才在推上收获了一个方法:将 keyword 当作字典,对 title 进行分词,然后就能反向去搜索 object 的 keyword 了。感谢 @zhoushuqun

    @tioover 楼顶的问题就是在于没法根据 item 来找到 item 和 keyword 的对应关系,所以当有新 item 加入时就不知怎么去操作 keyword 表了。
    tioover
        3
    tioover  
       2012-05-30 22:21:51 +08:00
    @Ariagle 唔这样啊……或许可以把所有keyword放在内存里面然后在新item加入以后一个一个试着匹配? 不过还是分词的方法好点吧
    Ariagle
        4
    Ariagle  
    OP
       2012-05-30 22:28:05 +08:00
    @tioover 嗯,你这个实质上就是楼顶的方法,有新 item 时就一个个地轮 object (即 keyword ),匹配的话就写入关系表。不过效率很低就是了…
    benzhe
        5
    benzhe  
       2012-05-30 22:35:20 +08:00
    tilte 分词入一个新表,并建立跟 item 的关系,同时也建立 tilte 跟 keyword 的关系,应该可以这样吧。
    其实最好把原来的数据表贴出来再研究
    Ariagle
        6
    Ariagle  
    OP
       2012-05-30 22:41:03 +08:00
    说白了就是萌否的“条目-资源”问题 http://moefou.rg/tv/1206/resources
    现在只能通过 用户->条目->资源 这种方向来给用户显示内容,应该属于“拉”模式,而这种方法目前遇到了不少瓶颈。
    若要改成 资源->条目->用户 这种“推”模式,就面临楼顶提到的问题了。
    road2stat
        7
    road2stat  
       2012-05-30 23:11:49 +08:00
    一个简单的想法是,对 title 分词,然后利用快速 k-NN 算法计算 title 的分词结果与各 item 的 keyword 向量之间的余弦距离,得到排序结果。
    这样比暴力匹配可能更精细一些,速度不会太慢,也可以得到双向的关系。不过如果数据比较稀疏,可能准确率会受到影响。
    Ariagle
        8
    Ariagle  
    OP
       2012-05-30 23:21:15 +08:00
    @road2stat 应该用不着这样计算相似度了吧,只要分词结果和 keyword 完全匹配,就可认定关系了。分词完后使用 sphinx 之类的搜索引擎应该就能比较快地找到结果。
    road2stat
        9
    road2stat  
       2012-05-31 02:50:58 +08:00
    嗯,分词基本上是最大的问题,之后的处理比较自由。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5563 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 08:06 PVG 16:06 LAX 01:06 JFK 04:06
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86