一尘不染

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

algorithm

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

现在,我的疑问是,我需要构建一种机器学习算法来检测所谓的技能中是否存在一些拼写错误。例如,如果不是销售,而是列中有薪水,或者像hadoop一样被误认为是hadup。所以我想标准化这些东西。

我该怎么做?我不懂机器学习,但是我愿意学习和编码。我在PYTHON工作很舒服。

任何建议我该如何去做?如果你们能提出想法,那将真的很棒!


阅读 489

收藏
2020-07-28

共1个答案

一尘不染

通常,此问题有两个部分:找出哪些项目可能出错,然后进行修复。

如果您假设大多数项目的拼写正确,那么查找可能的错误就非常容易了。修复错误要自动化得多,而且在任何合理的时间长度内100%正确地完成操作可能都是不可能的。但是您可能会发现,如果您能很好地找到错误,则手动修复它们并不重要。

为了发现错误,我建议您列出每个技能的列表,并计算每个技能在整个数据集中被引用多少次。完成后,您将获得类似以下的列表:

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

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

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

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

SALS,SALES
HADUP,HADOOP
PREFORMANCE,PERFORMANCE

有数百个,但是手动创建文件比编写程序来确定正确的拼写要快得多。

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

节省大量时间的人正在寻找可能的替代人选。在那之后,修复它们几乎是事后的想法。

也就是说,除非您真的想在研究项目上花费数月。然后,您可以玩弄编辑距离算法,语音算法和其他一些 可能 弄清楚“礼节”和“礼节”应该是同一个词的工作,
从而 摆脱困境。

2020-07-28