产品比价工具:难以匹配相同的项目
Products Price Comparison Tool: Difficulty in matching identical items
我正在努力创建一个 e-comm 产品价格比较工具(在 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
来自同一实体,但它们的余弦值表明它们是两个不同的项目。
我一直在努力自己解决这个问题,我想我可以在 Whosebug 中请求一些 suggestion/advice。我使用余弦相似度来匹配项目相似度的方向是否正确?如果不能,请引导我正确的方向。
我的基本想法是对相同的商品进行价格比较,即对各种相似商品进行语义分析。
感谢您的宝贵时间。
你可以训练 word2vec on the product titles. Resulting code would look something like this when using the Python word2vec wrapper and slightly different but similar when using Gensim's model.word2vec:
indexes, metrics = model.cosine(normalized_phrase)
model.generate_response(indexes, metrics)
生成的响应将是按降余弦相似度排序的标题向量。
我正在努力创建一个 e-comm 产品价格比较工具(在 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
来自同一实体,但它们的余弦值表明它们是两个不同的项目。
我一直在努力自己解决这个问题,我想我可以在 Whosebug 中请求一些 suggestion/advice。我使用余弦相似度来匹配项目相似度的方向是否正确?如果不能,请引导我正确的方向。
我的基本想法是对相同的商品进行价格比较,即对各种相似商品进行语义分析。
感谢您的宝贵时间。
你可以训练 word2vec on the product titles. Resulting code would look something like this when using the Python word2vec wrapper and slightly different but similar when using Gensim's model.word2vec:
indexes, metrics = model.cosine(normalized_phrase)
model.generate_response(indexes, metrics)
生成的响应将是按降余弦相似度排序的标题向量。