用于在 Python 中匹配具有相似 ID 字符串的两个集合的分类器

Posted

技术标签:

【中文标题】用于在 Python 中匹配具有相似 ID 字符串的两个集合的分类器【英文标题】:Classifier for matching two sets with similar ID strings in Python 【发布时间】:2019-06-09 01:15:55 【问题描述】:

我有 2 组数据,它们具有共同的特征集,但它们的 ID 名称标签不同。

我想看看是否有一个最佳分类器可以帮助我根据这些特征选择哪些名称匹配是最佳选择。

Set 1 看起来像:

Name         ID1           code1          move1        year
Highland     1             nc             st           2002
Highland     4             nc             st           2001
Highland     gt3           nc             st           2002
Highland     gt2           nc             st           2003
Mark         wt1           ns             st           2000
Mark         ws1           ns             st           1945
Mark         ost6          nc             ct           2002
Niko         1             ng             ct           2000
.
.

Set 2 看起来像:

Name         ID2           code2          move2        year
Highland     gt1           nc             st           2002
Highland     gt3           nc             st           
Highland     2             nc             st           2003
Highland     gt4           nc             st           2001
Mark         t1            ns             st           2000
Mark         s1            nsi            st           
Mark         ost6          nci            ct           2002
Niko         1             ngi            ct           2000
.
.

正如您所看到的,这两个集合存在一些差异,但Name 始终相同——ID 有时几乎匹配,有时完美匹配。其他时候,codesmoves 匹配或接近,有时年份通常只是缺少一组。

我已经计算出fuzzy ratios 使用Levenshtein Distances 作为这些ID,但它们不足以让我真正匹配。

有没有办法使用 SVM 之类的东西更好地识别这些 ID?

【问题讨论】:

您是否尝试将 set1 的完整行与 set2 匹配? 我正在尝试使用 ID1ID2 的 ID 名称相似性和功能相似性进行匹配。所以我认为匹配这两个 ID 会间接地将它们的行匹配在一起。 我在想可能有一种方法可以将每一行转换为一个元组,并以某种方式将元组转换为 SVM 可以运行的分组? 我过去所做的是将权重分配给不同的匹配类型。所以,名字会变得很重。然后 id1、年份等的尾数最高分“获胜”。你操纵系数和权重,直到你适合你的 pop1==pop2。演示起来并不容易,但是当您开始使用它时,这个想法就会变得足够清晰。 Levenstein 距离,恕我直言,有点昂贵的红鲱鱼 - 你需要成为泥潭指令。 @JLPeyret 是否有一个可行的示例可以更好地理解您的意思? 【参考方案1】:

尝试使用fuzz.token_set_ratio() 而不是fuzzy.ration()。 使用 fuzz.token_set_ratio() 你会得到一个很好的匹配。

欲了解更多信息,请访问docs。

【讨论】:

以上是关于用于在 Python 中匹配具有相似 ID 字符串的两个集合的分类器的主要内容,如果未能解决你的问题,请参考以下文章

SQL:具有相似表的多个左连接

是否有一个 R 函数来匹配基于具有部分相似性的字符串的数据框列?

在python中连接具有相似节点的元素

vim 和grep 正则表达式相似和区别

用于模糊字符串比较的好 Python 模块? [关闭]

python----发轫之始正则表达式总结