我有一个包含超市产品项目的数据库(包括名称、描述、价格、库存等)。
我想在这些超市之间进行价格比较,但为此我需要知道超市A和B是否指的是同一个产品。
例如,我发现超市A有一个名为Leche Evaporada GLORIA Azul Paquete 6un Lata 400g
的产品,而超市B有一个名为Leche Evaporada Gloria Azul Pack 6 Unid x 400 g
的产品,这些指的是同一个产品。
我指出我将需要对这些情况进行语义比较。我对这类问题是新手,所以我真的不知道什么是最好的解决方案,以免低估问题或过度处理它。
我目前正在做的事情效果不是很好:
- 我只使用产品名称。
- 从这些产品名称中删除停用词。
- 将句子转换为单词数组。
- 获取每个单词的频率。
- 如果一个单词的频率<=1,则删除它。
- 用这些单词创建一个字典(词袋),我将用它来将一个单词数组(转换的句子)映射到一个特征向量上。
- 然后我用所有特征向量“训练”一个TFIDF模型。
- 进行比较(结果不佳)。
我使用Python作为编程语言,并使用gensim来创建模型、字典(词袋)和进行比较。
编辑:其他例子:
Leche Fresca UHT GLORIA Entera Bolsa 946ml == Leche Entera UHT Gloria Bolsa 946 mlYogurt Griego Gloria con Miel y Granola Vaso 115 g == Yogurt Griego GLORIA Batido con Miel Vaso 115gLeche sin Lactosa GLORIA Mocaccino Botella 330ml == Shake Mocaccino UHT Gloria Frasco 330 ml.
回答:
我认为解决这个问题的有效方法是根据相似度分数来比较产品。例如,我会使用Jaro-Winkler距离来比较两个产品描述,如果描述匹配到定义的阈值,我会比较价格。