我正在努力创建一个电子商务产品价格比较工具(Python),它有点类似于 camelcamelcamel.com ,既是为了乐趣,也是为了利益。当我想使用搜索词从各个网站收集的列表中匹配相同的项目时,我面临着困难。我使用余弦相似度并考虑使用Levenshtein的产品匹配算法,将各个项目的标题相互匹配以找到相同的项目。
例如,我有以下商品及其价格,
{
product_0: {
title: "Apple MacBook Air MMGF2HN/A 13.3-inch Laptop (Core i5/8GB/128GB/Mac OS X/Integrated Graphics)",
price: "xxxx",
},
product_1: {
title: "Apple MacBook Air MMGF2HN/A 13.3-inch Laptop (Core i5/8GB/128GB/Mac OS X/Integrated Graphics) cover",
price: "xyzy"
},
product_2: {
title: "Apple Macbook Air MMGF2HNA Notebook (Intel Core i5- 8GB RAM- 128GB SSD- 33.78 cm(13.3)- OS X El Capitan) (Silver)"
price: "xxyy"
},
product_3: {
title: "....",
price: "...."
},
...
product_99: {
// product title and price
}
}
当我在上面的项目列表(数据)上使用余弦相似度时,值如下
cosine(product_0 * product_1) = 0.973328526785
cosine(product_0 * product_2) = 0.50251890763
但实际上 product_0
和 product_1
是两个不同的项目,但它们的余弦相似度值表明这些项目是相同的; product_0
和 product_2
来自同一实体,但它们的余弦值显示它们是两个不同的项目。
我一直在努力自己解决这个问题,我想我可以在 stackoverflow 中寻求一些建议/建议。我使用余弦相似度来匹配项目的相似度的方向正确吗?如果没有,请引导我走向正确的方向。
我的基本想法是对相同的商品进行价格比较,即对各种相似的产品进行语义分析。
感谢您的宝贵时间。
最佳答案
你可以训练word2vec在产品标题上。使用 the Python word2vec wrapper 时,生成的代码看起来像这样使用 Gensim's model.word2vec 时略有不同但相似:
indexes, metrics = model.cosine(normalized_phrase)
model.generate_response(indexes, metrics)
生成的响应将是按余弦相似度降序排序的标题向量。
关于python - 产品比价工具 : Difficulty in matching identical items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460401/