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

我的需求是源数据存储在HDFS中,其中有一个字段包含用户的技能。现在源文件中为每个用户分配了各种技能,例如 – 管理、JAVA、HADOOP、PIG、SQL、性能调优、C、商业咨询、销售等。

现在我的问题是,我需要构建一个机器学习算法来检测这些所谓的技能中是否存在拼写错误。例如,如果“销售”被错误拼写为“sals”,或者“HADOOP”被错误拼写为“hadup”,我希望能够标准化这些内容。

我该如何着手做这件事?我对机器学习不了解,但我愿意学习并编写代码。我在PYTHON方面工作得很好。

有什么建议我可以参考吗?如果大家能提供一些想法,那真是太好了!


回答:

这种问题通常包括两个部分:找出可能出错的项目,然后修复这些错误。

如果你假设大多数项目拼写正确,那么找出可能的错误就相当容易。修复错误则更难自动化,而且在合理的时间内完全正确地修复它们几乎是不可能的。但如果你能很好地找出错误,手动修复它们可能就不是什么大事了。

为了找出错误,我建议你列出每个技能及其在整个数据集中被引用的次数。当你完成后,你会得到一个列表,如下所示:

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

等等。每个技能都列出,并附有拥有该技能的用户数量。

现在,按频率排序并选择一个阈值。假设你选择检查频率为3或更少的任何内容。想法是,相对于其他项目使用次数非常少的项目可能是拼写错误。

一旦你确定了需要更仔细检查的术语,你可以决定是自动更改还是手动操作。当我不得不做这件事时,我得到了可能的拼写错误列表,并手动创建了一个包含拼写错误和更正的文件。例如:

SALS,SALESHADUP,HADOOPPREFORMANCE,PERFORMANCE

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

然后我加载了那个文件,并遍历我的用户记录,根据需要进行替换。

找出可能需要替换的候选者是节省时间的关键。之后,修复它们几乎是事后的想法。

除非你真的想花几个月的时间进行研究项目。那么你可以尝试使用编辑距离算法、音韵算法和其他可能确定“edicit”和“etiquette”应该是同一个词的东西。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注