首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用匹配分数确定正确的特征(机器学习)

使用匹配分数确定正确的特征(机器学习)
EN

Stack Overflow用户
提问于 2014-10-06 18:05:59
回答 1查看 507关注 0票数 0

一旦特性可用,我就熟悉于确定知识库中给定的一组文档与搜索查询文档的匹配程度(基于余弦距离)。我们将根据特征在向量空间上进行映射。

我如何处理反向-我已经给了一组文档和多个查询文档的匹配分数,并必须确定特征(或判定标准来确定匹配)。这将是培训数据,该模型将用于识别与我们的知识库匹配的新搜索查询。

我们目前的方法是想出一组特征,看看哪些组合在训练集中获得最好的匹配分数。但我们最终会尝试多种组合。有更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 04:52:57

下面是一种简单而直接的方法(线性模型),应该可以工作。如果您正在处理文档和查询,那么您所使用的特性可能是那些标记(或单词)或n克或主题。让我们假设这些特性是简单的词语。

假设您有一个查询文档:

代码语言:javascript
运行
复制
apple iphone6 

并且您有一组文档及其对应于上述查询的匹配分数:(假设文档是urls的内容)

代码语言:javascript
运行
复制
www.apple.com (Apple - iPhone 6) score: 0.8
www.cnet.com/products/apple-iphone-6 (Apple iPhone 6 review), score: 0.75
www.stuff.tv/apple/apple-iphone-6/review (Apple iPhone 6 review), score: 0.7
....

每次查询模型

首先,您需要从匹配的urls中提取单词特征。假设我们得到了word和他们的L1归一化 TF/国防军分数:

代码语言:javascript
运行
复制
www.apple.com
apple 0.5
iphone 0.4
ios8 0.1

www.cnet.com/products/apple-iphone-6
apple 0.4
iphone 0.2
review 0.2
cnet 0.2

www.stuff.tv/apple/apple-iphone-6/review
apple 0.4
iphone 0.4
review 0.1
cnet 0.05
stuff 0.05

其次,您可以将特征分数和匹配分数结合起来,并在每个特征的基础上进行汇总:

代码语言:javascript
运行
复制
w(apple) = 0.5 * 0.8 + 0.4 * 0.75 + 0.1 * 0.7 = 0.77
w(iphone) = 0.4 * 0.8 + 0.2 * 0.75 + 0.4 * 0.7 = 0.75
w(ios8) = 0.1 * 0.8 = 0.08
w(review) = 0.2 * 0.75 + 0.1 * 0.7 = 0.22
w(cnet) = 0.2 * 0.75 = 0.15
w(stuff) = 0.05 * 0.7 = 0.035

您可能需要执行规范化步骤,将每个w除以文档数。现在,您可以得到以下按相关性排序的特性:

代码语言:javascript
运行
复制
w(apple)=0.77 / 3
w(iphone)=0.75 / 3
w(review)=0.22 / 3
w(cnet)=0.15 / 3
w(ios8)=0.08 / 3
w(stuff)=0.035 / 3

您甚至可以通过使用这些权重来获得线性分类器:

代码语言:javascript
运行
复制
score = w(apple) * tf-idf(apple) + w(iphone) * tf-idf(iphone) + ... + w(stuff) * tf-idf(stuff)

假设现在您有了一个新的url,其中检测到了这些特性:

代码语言:javascript
运行
复制
ios8: 0.5
cnet: 0.3
iphone:0.2

然后,您可以计算查询"apple iphone6“的匹配分数:

代码语言:javascript
运行
复制
score = w(ios8)*0.5 + w(cnet)*0.3 + w(iphone)*0.2
      = (.08*.5 + .15*0.3 + .75*.2 ) / 3

然后,可以使用匹配分数对文档与相同的查询的相关性进行排序。

任意查询模型

您执行相同的操作来为每个查询构造一个线性模型。假设您的培训数据中有k这样的查询和匹配的文档,那么您将得到k这样的模型;每个模型都是基于一个查询构建的。

代码语言:javascript
运行
复制
model(apple iphone6) = (0.77*apple + 0.75iphone + 0.22review + ...) / 3
model(android apps) = (0.77google + 0.5android + ...) / 5
model(samsung phone) = (0.5samsung + 0.2galaxy + ...) / 10

注在上面的示例模型中,3、5、10是规范化器(与每个查询匹配的文档总数)。

现在来了一个新的查询,假设它是:

代码语言:javascript
运行
复制
samsung android release

我们剩下的任务是:

  • 查找相关查询q1, q2, ..., qm
  • 使用查询模型对新文档和聚合进行评分。

首先,您需要从这个查询中提取特性,并且假设您已经缓存了所学习的每个查询的特性。基于任何最近邻方法(例如,局部性散列),您可以找到与“三星安卓版本”类似的顶级查询,它们可能应该是:

代码语言:javascript
运行
复制
similarity(samsung phone, samsung android release) = 0.2
similarity(android apps, samsung android release) = 0.2

整体兰克

因此,我们得到了我们最后的评级者如下:

代码语言:javascript
运行
复制
0.2*model(samsung phone) + 0.2*model(android apps) =
  0.2* (0.77*apple + 0.75iphone + 0.22review + ...) / 3 + 
  0.2* (0.77google + 0.5android + ...) / 5

通常,在这些信息检索应用程序中,您可以构造从功能(单词)到文档的倒排索引。因此,最终的排名应该能够非常有效地评估所有顶级文档。

参考文献

详情请参阅Omid Madani等人中的IND算法。概念丰富时学习

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26222114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档