我有一个巨大的数据库表,由音乐类型组成。 大约有3.5万张唱片,其中大部分都是同一类型的唱片,例如:
+-----------+
| Name |
+-----------+
| "Dubstep" |
| Dub Step |
| Dubstep |
| dub-step |
| dubstep |
+-----------+
所有这些都可以简化为一种独特的体裁,我们可以简单地称之为“dubstep”。在
所以我想要一个更干净的数据集,但是我想听听一些建议, 我怎么知道“dub step”和“dubstep”是否表达相同的意思?在
请注意,我使用的是Python和SQLAlchemy。 我并不是一个非常精通SQL的专家。在
你可以试着规范化therm,把所有的东西都放低,然后去掉空格、破折号等非字母数字字符。这将解决一些甚至大部分的差异,同时产生最少的误报。在
另一种单独使用或与第一种方法结合使用的方法是使用Levenshtein距离http://en.wikipedia.org/wiki/Levenshtein_distance,并用最小距离对单词进行分组。在
注意:你应该先看看有多少实际上是“大部分”,通过观察有多少情况将被第一个解决方案清理,然后尝试逐步地过滤掉,直到你找到最有可能是很少的并且可以手动帮助的角落案例。在
为了实际实现这一点,我将在sqlite数据库中传输所有内容,然后用python编写(或试验)一个排序函数并应用它。示例:http://docs.python.org/2/library/sqlite3.html搜索create_排序规则。在
相关问题 更多 >
编程相关推荐