近似字符串匹配 - 机器学习

时间:2013-12-03 03:37:19

标签: string algorithm machine-learning string-matching

我要求我的源数据在HDFS中,并且有一个字段包含用户的技能。现在源文件具有归属于用户的所有技能,例如 - 管理,JAVA,HADOOP,PIG,SQL,PERFORMANCE TUNING,C,商业咨询,销售等等......

现在我的疑问是我需要构建一个机器学习算法来检测所谓的技能是否存在拼写错误。例如,如果代替销售,该列有sals或像hadoop是拼错的hadup。所以我想要标准化这些东西。

我怎么能这样做?我不懂机器学习,但我愿意学习和编码。我很高兴在PYTHON工作。

任何建议我怎么能这样做?如果你们可以投入创意,真的会很棒!

2 个答案:

答案 0 :(得分:2)

这个问题通常有两个部分:找出可能出错的项目,然后解决这些问题。

如果您认为大多数项目拼写正确,那么找到可能的错误非常容易。修复错误要自动化要困难得多,并且在任何合理的时间内完成100%都是不可能的。但是你可能会发现,如果你能很好地找到错误,那么手动修复它们并不是什么大问题。

为了找到错误,我建议您列出每项技能,并计算整个数据集中每项技能的引用次数。当你完成后,你将有一个列表:

MANAGEMENT, 22
JAVA, 298
HADOOP, 12
HADUP, 1
SALES, 200
SALS, 1

等。列出每项技能以及拥有该技能的用户数量。

现在,按频率对这些进行排序并选择一个阈值。假设您选择更频繁地检查频率为3或更低的任何事物。这个想法是,相对于其他项目使用次数非常少的项目可能是拼写错误。

一旦确定了要更仔细检查的术语,就可以确定是否要自动执行更改,或者是否要手动执行此更改。当我必须这样做时,我得到了可能的拼写错误列表,并手动创建了一个拼写错误和更正的文件。例如:

SALS,SALES
HADUP,HADOOP
PREFORMANCE,PERFORMANCE

有几百个,但手动创建文件比编写一个程序以找出正确的拼写应该是快得多。

然后我加载了该文件并浏览了我的用户记录,根据需要进行了替换。

节省大量时间是找到可能的候选人。在此之后,修复它们几乎是事后的想法。

也就是说,除非你真的想在研究项目上花费数月时间。那么你可以用编辑距离算法,语音算法和其他东西来解决自己,这些东西可能想出“edicit”和“礼仪”应该是同一个词。

答案 1 :(得分:0)

在机器学习范例中对此非常有效的东西是String Matching kernels。由于这些是实际的内核函数,如果你想将学习形式化为SVM,它们就非常方便。