0

考虑一个搜索系统,其中用户提交查询“查询”并根据某种排名算法检索产品。假设这些产品是根据它们的质量订购的,例如 p_0、p_1、...、p_10 等等。

我想生成模仿这种排名算法的向量嵌入。最接近查询向量的乘积向量理想情况下应该是 p_0,下一个应该是 p_1,依此类推。

我试图通过提供与句子出现在同一搜索会话中的产品来为产品构建 word2vec 嵌入。然后,我计算了乘积向量的加权平均值,以找到查询向量,使查询向量更接近顶部结果。尽管最接近的结果通常是给定查询的最佳结果,但随后的结果包括一些永远不会显示为最佳结果的结果。

word2vec 是否有一个技巧可以学习排名算法或我可以尝试的任何其他技术?我已经研究了具有非度量距离的多维矢量缩放,但对于超过 100Ks 的产品,它对我来说似乎没有可扩展性。

4

1 回答 1

0

没有一个技巧——只是迭代地改进你的表示、训练集和排名方法,以更好地实现你的目标。

基于 Word2vec 的表示通常会有所帮助,但仍然相当简单且以单个单词为中心——其含义可能会根据上下文和位置而变化,而简单的加权平均令牌无法捕捉到。

您可能希望不仅仅通过一串单词标记来表示“产品”——还包括其他属性。这些可能是标量值,例如价格或各种其他类型的评级/属性,或额外的合成标签,例如其他显着分组的结果(无论是手工编辑还是学习)。

即使只是使用自然语言的产品描述——比如产品名称、描述或评论——也有其他更复杂的文本表示可以训练或使用——比如使用比普通网络更深的句子/文档嵌入word2vec。

最一般地,如果您有一堆候选结果的定量表示和一个查询,并且想要使用一些“好”结果的初始示例来引导更通用的规则来获得最佳结果,那么您正在尝试“学习到-排名”过程:

https://en.wikipedia.org/wiki/Learning_to_rank

要提出更具体的步骤,需要更具体地描述输入/输出/目标、尝试过的内容以及尝试过的失败的原因。

例如,您的查询总是只是文本产品名称吗?在这种情况下,也许简单的关键字搜索是所需的核心技术——像词向量建模这样的东西只是处理一些棘手情况的一种调整,比如扩大结果,或者在结果太少时增加排名的对比或对许多人。

或者,您能否检测出与“结果包括一些 [理想情况下] 永远不会出现在最佳结果中的结果”的情况相关的建模中的关键差距?如果某些事物(例如稀有(建模不佳)的词,或模型中尚未捕获的重要品质)似乎是此类情况的罪魁祸首,那么这将指导潜在的一组纠正性更改。

于 2022-01-31T19:26:22.427 回答