как исправить неправильные или сокращенные написанные слова - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно решить проблему, связанную с большим количеством пользовательских навыков.
Пользователи могут добавлять любые навыки в свои профили, и я хочу объединить те, которые одинаковы:
У меня есть эти пары (среди прочих):
React, React Js, React.js, Reactionjs
MS Office, Microsoft Office MS Word, Microsoft Word

Я пробовал алгоритм Левенштейна и различные средства проверки орфографии, но в таких случаях они не работают.

Кто-нибудь знает решение такой проблемы?

1 Ответ

0 голосов
/ 31 октября 2018

Как я вижу эту проблему, есть 2 решения:

  • составьте исчерпывающий список всех возможных навыков, которые вы считаете равными
  • определить подходящее «расстояние» между двумя заданными навыками и определить порог, который, по вашему мнению, дает хорошие (достаточные) результаты

Предположим, вы идете с первым вариантом, тогда псевдокод довольно прост:

  1. для любого списка навыков, в которые входит пользователь, переберите все навыки S
  2. если S находится в наборе «принятых» навыков, то оставить S
  3. если S не относится к набору «принятых» навыков, проверьте, имеет ли принятый навык S2 S в качестве одного из его вариантов. Если это так, верните S2

Предположим, вы идете со вторым вариантом:

  1. для любого списка навыков, в который входит пользователь, переберите все навыки S
  2. установить S в верхний регистр
  3. разделите S на любой токен, который не является [A-Z], назовите этот Sp
  4. сортировка Sp по алфавиту
  5. повторно соедините токены в Sp через пробел, назовите это Sc
  6. используйте расстояние Левенштейна, чтобы сравнить Sc с другими предметами в списке умений
* * Например, одна тысяча тридцать восемь

React, React Js, React.js, Reactionjs

Реагировать -> РЕАГИРОВАТЬ -> [РЕАГИРОВАТЬ] -> [РЕАГИРОВАТЬ] -> РЕАГИРОВАТЬ
Реагировать Js -> РЕАГИРОВАТЬ JS -> [РЕАГИРОВАТЬ JS] -> [JS РЕАГИРОВАТЬ] -> JS РЕАГИРОВАТЬ // расстояние 3
React.js -> REACT.JS -> [REACT JS] -> [JS REACT] -> JS REACT // расстояние 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...