我的需求是源数据存储在HDFS中,其中有一个字段包含用户的技能。现在源文件中为每个用户分配了各种技能,例如 – 管理、JAVA、HADOOP、PIG、SQL、性能调优、C、商业咨询、销售等。
现在我的问题是,我需要构建一个机器学习算法来检测这些所谓的技能中是否存在拼写错误。例如,如果“销售”被错误拼写为“sals”,或者“HADOOP”被错误拼写为“hadup”,我希望能够标准化这些内容。
我该如何着手做这件事?我对机器学习不了解,但我愿意学习并编写代码。我在PYTHON方面工作得很好。
有什么建议我可以参考吗?如果大家能提供一些想法,那真是太好了!
回答:
这种问题通常包括两个部分:找出可能出错的项目,然后修复这些错误。
如果你假设大多数项目拼写正确,那么找出可能的错误就相当容易。修复错误则更难自动化,而且在合理的时间内完全正确地修复它们几乎是不可能的。但如果你能很好地找出错误,手动修复它们可能就不是什么大事了。
为了找出错误,我建议你列出每个技能及其在整个数据集中被引用的次数。当你完成后,你会得到一个列表,如下所示:
MANAGEMENT, 22JAVA, 298HADOOP, 12HADUP, 1SALES, 200SALS, 1
等等。每个技能都列出,并附有拥有该技能的用户数量。
现在,按频率排序并选择一个阈值。假设你选择检查频率为3或更少的任何内容。想法是,相对于其他项目使用次数非常少的项目可能是拼写错误。
一旦你确定了需要更仔细检查的术语,你可以决定是自动更改还是手动操作。当我不得不做这件事时,我得到了可能的拼写错误列表,并手动创建了一个包含拼写错误和更正的文件。例如:
SALS,SALESHADUP,HADOOPPREFORMANCE,PERFORMANCE
有几百个,但手动创建文件比编写程序来确定正确的拼写要快得多。
然后我加载了那个文件,并遍历我的用户记录,根据需要进行替换。
找出可能需要替换的候选者是节省时间的关键。之后,修复它们几乎是事后的想法。
除非你真的想花几个月的时间进行研究项目。那么你可以尝试使用编辑距离算法、音韵算法和其他可能确定“edicit”和“etiquette”应该是同一个词的东西。