首页 > 解决方案 > 使用机器学习的当前状态来解决以下提到的问题的最佳方法是什么?

问题描述

我们有两个数据集,

一组 S1 包含有关产品的一些信息,有 2 列(如下ProductName, C2:),有 500K 行。

另一组具有独特产品的主列表,称为 S2,有 2 列 ( ProductActualName, ProductCode, C3) 和 1000 行。

我们希望通过 S1.ProductName 和 S2.ProductActualName 连接/映射这两个数据集,其中这两列永远不会通过字符串匹配来匹配。因为 S1 是从多个不同的来源中提取的,所以 S1.ProductName 列中的产品名称可以有不同的措辞,其中包含足够的信息供人类从主列表中识别正确的产品并将其唯一地标记为主列表中的一个名称S2。

例如: Audi R8 20mg在 S2.ProductActualName 中找到可以写成 S1.ProductName 中的以下之一

3221 R8 Audi 20
Audi R8 Audi 20mg
AUDI R 8 20 mg
AUDI R8 20
AUDIR8 20 
 and so on ...

基本上可能的人类可读组合

当前的解决方案和问题:我们使用基于距离的算法的字符串相似度库。这样,获得的结果只有 60-70% 的准确率,然后手动检查以纠正错误。提取的行数在 500K 左右,手动检查容易出错并且变得非常乏味和耗时。因为这需要每个月完成。

一些匹配行的示例

示例输出

The first column is the name extracted from different sources. Matched product name is after matching it with the master list. Sample data attached in email.

这是示例数据集的链接:https ://docs.google.com/spreadsheets/d/1XxenDkLQYvWqus0wlEB5Uz1bs0r8iRuTGxw0S18lB38/edit?usp=sharing

提前致谢

标签: machine-learningneural-network

解决方案


我了解您的“机器学习问题”正在将两个数据帧连接到一个不完全相同的字符串列中。

为了计算字符串相似度,我将使用Levenshtein Distance。在 jellyfish 库中,您可以找到更多的字符串距离,并为您的问题选择更方便的。

做更多的 NLP,我的第一个想法是尝试Latent Dirichlet Allocation。这需要更多的工程设计,我不确定它是否会比简单的 Levenshtein Distance 提供更好的结果。


推荐阅读