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

2012-05-30 22:00:19 +08:00
 Ariagle
场景是这样的:

爬虫程序会周期性收录一些 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 建立新关联就行了。
或者有其他的办法能高效环保地建立起关联?(难道要去动用机器学习相关技能……)
3596 次点击
所在节点    问与答
9 条回复
tioover
2012-05-30 22:11:27 +08:00
可能没有看懂……而且我是小小

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

@tioover 楼顶的问题就是在于没法根据 item 来找到 item 和 keyword 的对应关系,所以当有新 item 加入时就不知怎么去操作 keyword 表了。
tioover
2012-05-30 22:21:51 +08:00
@Ariagle 唔这样啊……或许可以把所有keyword放在内存里面然后在新item加入以后一个一个试着匹配? 不过还是分词的方法好点吧
Ariagle
2012-05-30 22:28:05 +08:00
@tioover 嗯,你这个实质上就是楼顶的方法,有新 item 时就一个个地轮 object (即 keyword ),匹配的话就写入关系表。不过效率很低就是了…
benzhe
2012-05-30 22:35:20 +08:00
tilte 分词入一个新表,并建立跟 item 的关系,同时也建立 tilte 跟 keyword 的关系,应该可以这样吧。
其实最好把原来的数据表贴出来再研究
Ariagle
2012-05-30 22:41:03 +08:00
说白了就是萌否的“条目-资源”问题 http://moefou.org/tv/1206/resources
现在只能通过 用户->条目->资源 这种方向来给用户显示内容,应该属于“拉”模式,而这种方法目前遇到了不少瓶颈。
若要改成 资源->条目->用户 这种“推”模式,就面临楼顶提到的问题了。
road2stat
2012-05-30 23:11:49 +08:00
一个简单的想法是,对 title 分词,然后利用快速 k-NN 算法计算 title 的分词结果与各 item 的 keyword 向量之间的余弦距离,得到排序结果。
这样比暴力匹配可能更精细一些,速度不会太慢,也可以得到双向的关系。不过如果数据比较稀疏,可能准确率会受到影响。
Ariagle
2012-05-30 23:21:15 +08:00
@road2stat 应该用不着这样计算相似度了吧,只要分词结果和 keyword 完全匹配,就可认定关系了。分词完后使用 sphinx 之类的搜索引擎应该就能比较快地找到结果。
road2stat
2012-05-31 02:50:58 +08:00
嗯,分词基本上是最大的问题,之后的处理比较自由。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/37889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX