合并MySQL中的类似记录(python& sqlalchemy)

时间:2013-06-11 14:21:10

标签: python mysql sqlalchemy similarity

我有一个巨大的数据库表,由音乐类型组成。 有近35000条记录,其中大多数主要表达相同的类型,例如:

+-----------+ 
| Name      |
+-----------+
| "Dubstep" |
| Dub Step  |
| Dubstep   |
| dub-step  |
| dubstep   |
+-----------+

可以全部缩小为一种独特的类型,我们只需将其称为“dubstep”。

所以我想要获得更清晰的数据集,但我想听听一些建议, 我怎么知道“dub step”和“dubstep”是否表达了同样的含义?

请注意,我使用的是Python和SQLAlchemy。 我不是一个非常熟练的SQL专家。

1 个答案:

答案 0 :(得分:1)

您可以尝试通过降低所有内容来封装热量,然后将非字母数字字符删除为空格,短划线等。这将解决一些(如果不是大多数)差异,同时创建最少量的误报。

另一个独立或与第一个完成的选择是使用Levenshtein距离http://en.wikipedia.org/wiki/Levenshtein_distance,并将距离最小的单词组合起来。

请注意:您应首先看看通过使用第一个解决方案清理了多少个案件,然后尝试逐渐过滤掉它们,直到您遇到最可能的角落案例时,您应该首先看到它们中的“大多数”。很少,可以手动辅助。

为了实际实现这一点,我会在sqlite数据库中传输所有内容,然后在python中编写(或试验)一个校对函数并应用它。示例:http://docs.python.org/2/library/sqlite3.html搜索create_collat​​ion。