产品比价工具:难以匹配相同的项目

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_0product_1是两个不同的项目,但它们的余弦相似度值表明项目是相同的; product_0product_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)

生成的响应将是按降余弦相似度排序的标题向量。