赶超价格。海上采购实用指南





让我们从最简单的方法开始-让我们尝试用手钓鱼。我们打开购买的商品数据库,并开始寻找类似的产品。很有可能我们晚上都不会抓到任何东西。



让我们尝试以某种方式过滤购买商品的基础。购买的每个商品都分配有一个OKPD2代码。按经济活动划分的全俄产品分类器是包含有关产品信息的代码。



例如:







现在我们有了一根钓鱼竿,它变得更好一点了,但是由于某种原因,鱼不想挂在钩子上。



不要生气,我们使用诱饵。我们需要找到一种方法来自动识别一个OKPD2中的相似产品。为此,您需要以张量的形式表示产品描述的语义。要处理信息,您需要将其转换为数字格式。为此,我们将使用一种特殊的机制将单词转换为向量空间Word2Vec,该空间将单词转换为给定大小的数字序列,称为向量或张量。 Word2Vec是经过专门训练以理解单词的语义的模型。来自数据库的具有相同OKPD2的乘积必须转换为张量。太好了,我们现在有一个张量产品和一堆其他产品张量。



我们将按余弦距离搜索最接近的乘积,数据库中的乘积越类似于我们的乘积,则余弦距离将越小。我们选择具有最小余弦距离的产品,这将是我们想要的鱼。



让我们在实践中分析所描述的方法。让我们开始将产品描述转换为张量。首先,将产品描述标记化,即将其拆分为单独的词。为了将单词转换为语义,使用了预训练的Word2Vec(大小为100)(即,一个单词由一组100个数字表示)。



我们得到了一系列嵌入。要计算余弦距离,必须计算包含产品说明的整个文本的矢量表示。最简单的实现方法是取所有描述词的嵌入之间的平均值,而产品的语义会失真,但这对于解决此问题并不关键。







将我们的产品和具有相同OKPD的所有产品转换为嵌入后,下一步是计算它们之间的余弦距离。







如下图所示,与“大鱼”产品最接近的产品是“鲑鱼巨大”和“ Zolotaya Rybka”产品。







因此,可以假定一条大鱼的价格在金鱼和一条大鲑鱼的价格之间。根据真实数据获得以下结果:







有时这种方法可能效果不佳。例如,在产品数据库中,没有与我们相似的产品。这样捕获的鱼将太小,模块将返回一个空范围。







我们要看的最后一种方法是网钓。 Yandex将用作网络。根据产品说明形成一个请求,然后选择前20个响应进行进一步分析。采取以下答案是没有意义的,因为它们的相关性值得怀疑。前20个回复的文本将发送到价格查找器。该模型从响应中选择价格,并从中形成价格范围。许多不同的鱼进入渔网,因此价格范围非常嘈杂。为了进行过滤,让我们剔除异常值。如果获得的价格是正态分布的,则只能保留68%的价格。也就是说,让我们保留所有价格的平均值与标准偏差之间的差与均值与标准偏差之和之间的范围内的价格。这就是Yandex中产品价格范围的样子:



所有考虑的捕鱼方法各有利弊。每个渔民都根据其准确性和时间要求来选择哪个选项更好。赶上快乐!



All Articles