python - 产品比价工具 : Difficulty in matching identical items

标签 python machine-learning nlp information-retrieval cosine-similarity

我正在努力创建一个电子商务产品价格比较工具(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 来自同一实体,但它们的余弦值显示它们是两个不同的项目。

我一直在努力自己解决这个问题,我想我可以在 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/

相关文章:

python - 将函数应用于列表递归的每个元素

python - 从 flask.ext.login 导入 LoginManager 时出现问题

r - 使用 regsubsets 进行 Predict()

python - NLTK 词干提取不通过简单的案例

python - shutil.rmtree : FileNotFoundError: [Errno 2] No such file or directory: '._xxx'

python - 无法在 macOS 上安装 pybind

machine-learning - 从产品评论中提取特征

python-3.x - 如何在 scikit-learn 中编写自定义转换器,以有条件地在不同类之间切换

java - 如何判断纯文本文件是用什么语言编写的?

language-agnostic - POS标记等中的缩写是什么意思?