如何纠正错误或缩短的书写单词



我必须解决与大量用户生成的技能相关的问题
用户可以在他们的个人资料中添加任何技能,我想合并相同的技能:
我有以下几对(以及其他(:
React、React Js、React.Js、reactjs
MS Office、Microsoft OfficeMS Word、Microsoft Word

我尝试了Levenstein算法和不同的拼写检查器,但在这种情况下它们不起作用。

有人知道这样的问题的解决方案吗?

我认为这个问题有两种解决方案:

  • 建立一个详尽的列表,列出你认为平等的所有可能的技能
  • 在两个给定的技能之间定义一个合适的"距离",并定义一个你认为能产生良好(足够(结果的阈值

假设您使用第一个选项,那么伪代码非常简单:

  1. 对于用户输入的任何技能列表,在每个技能S上循环
  2. 如果S属于"可接受"技能,则保留S
  3. 如果S不属于"接受的"技能集合,则检查接受的技能S2是否将S作为其变体之一。如果是,则返回S2

假设您使用第二个选项:

  1. 对于用户输入的任何技能列表,在每个技能S上循环
  2. 将S设置为大写
  3. 用任何不是[A-Z]的标记拆分S,将其命名为Sp
  4. 按字母顺序对Sp排序
  5. 按空格重新加入Sp中的令牌,将其命名为Sc
  6. 使用Levenstein距离将Sc与技能列表中的其他项目进行比较

例如

React,React Js,React.Js,reactjs

React-->React-->[React]-->[React]-->React
React Js-->React Js-->[React Js]-->Js React//距离3

最新更新