如何提取一个query的concepts?

在一些基于object搜索,或者directory方面等等搜索,需要将一个query进行分割处理;
比如:”Chinese restaurant at Bukit Timah Road“,有没有什么办法可以将这个query分成“Chinese restaurant ”和“Bukit Timah Road”呢?然后再到数据库里面查找这两个concept对应的内容;

 

 

http://super-jiju.spaces.live.com/blog/cns!806C498DDEE76B61!619.entry

 

 

首先想到的是用query Segmentation的方法,像基于EM算法,MI方法来进行分割;
但是这样情况是针对query比较规范整洁的情况下,比如“ABCDEF”这个query,如果存在concept是“ABCF”,那么基于Segmentation的方法是无论如何都不能成功的;但是这种情况确实非常常见的;

可以考虑谱聚类的方法来处理:
1.构造ABCDEF这个query的一个7*7的距离矩阵;
2.提取特征值和特征向量,然后在其特征空间里面计算similarity;
3.将similarity高的一些word组合在一起,就是concept了;

有的时候,并不需要这样麻烦,特别是在工程上面;
首先考虑一下:concept在corpus里面的表现形式;

For a query ”ABCDEF”, if ”BCD” means a concept and ”EF” denotes anther concept, then those two concepts should satisfy two conditions: (1), ”BCD” and ”EF” have high frequency in the snippets, (2), in each concept, concept words frequencies are closed each other.

所以就有一个很简单的方法来做;
1.得到这个query的relevant Documents
2. 来统计这个query不同words组合在relevant documents中的个数;(我曾经以为这个复杂度很高的,因为query中n个words的全排列个数就是N!,但其实不是这样 的,O(n*log(n)))的时间就可以搞定,关键是要一个好的数据结构;
3.需要一个方程f(x)来将个数映射到频率;
4.需要一个方程v()来来检查不同words组合而成的准concept中words之间的差异,类似于方差了
5.找f/v最大的且没有overlap的2个;

大概就是这样子,实验表明,效果非常好!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值