machine-learning - 使用机器学习的当前状态来解决以下提到的问题的最佳方法是什么?
问题描述
我们有两个数据集,
一组 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.
提前致谢
解决方案
我了解您的“机器学习问题”正在将两个数据帧连接到一个不完全相同的字符串列中。
为了计算字符串相似度,我将使用Levenshtein Distance。在 jellyfish 库中,您可以找到更多的字符串距离,并为您的问题选择更方便的。
做更多的 NLP,我的第一个想法是尝试Latent Dirichlet Allocation。这需要更多的工程设计,我不确定它是否会比简单的 Levenshtein Distance 提供更好的结果。
推荐阅读
- javascript - 一个关于鼠标动作的木偶问题不起作用
- google-cloud-platform - 从 Google 云端硬盘读取文件时,BigQuery 外部表创建失败并出现“自动检测”架构
- android - 使用导航架构的 Android 单元测试
- c++ - 如何在 MFC 应用程序中获取列表控件的宽度(以像素为单位)?
- javascript - 为什么 twilio 不从 url 读取 xml?
- javascript - 换行符不显示 vaadin-text-field 中的整个文本
- wordpress - woocommerce 存档页面覆盖单个商店主页
- git - git 哈希长度会随着 SHA256 转换而变化吗?
- c - C:最快的判断方法,是否按下了键盘上的任何键
- spacy - 为什么 spacy 在标记注释中需要开始和结束位置