Похожесть двух строк
Здравствуйте.
Есть паттерны: 1. Есть ли в наличии ([\s\S]+)? 2. Есть ли ([\s\S]+) в наличии? Есть строка: Если ли в наличии лопата? В строке допущена опечатка, вместо "есть" написано "если". Нужно как-то определить, что полученная строка удовлетворяет шаблону 1 с небольшими корректировками. Хотел воспользоваться расстоянием Левенштейна, однако не выходит, т.к. строка сравнивается с паттерном. Можно как-нибудь решить эту проблему без машинного обучения? |
Цитата:
var re=/Ес\S\S ли в наличии ([\s\S]+)\?/; var str='Есть ли в наличии булки?'; alert(str+' - '+re.test(str)); str='Если ли в наличии цветы?'; alert(str+' - '+re.test(str)); |
ksa, чтобы применить это на практике, нужно точно знать какие символы пользователь "перепутал". В противном случае от статичного текста придется полностью отказаться в угоду выражений, что позволит ввести любое предложение, главное, чтобы введенные символы стояли на своих местах.
Нужно будет проверить кол-во ложных срабатываний этого подхода. |
Цитата:
Я лишь ответил на твой... :) |
condator, случай реальный.
|
Трэд ниасилил, только название, но посоветую
https://ru.wikipedia.org/wiki/Расстояние_Левенштейна https://www.npmjs.com/package/fast-levenshtein |
ДЖАВАСКРИПТИЗЕР, пост ради поста?
Цитата:
|
нет, просто я немного ленив
Почему не выходит леванштейн. Вот у тебя есть запрос: "есть ли в наличии глюкало?" 1) Матчем выдираешь слово глюкало 2) Бежишь по списку товаров (ты ведь знаешь названия товаров которые у тебя есть) и считаешь леванштейны 3) дальше все и так понятно В машинное обучение можно смотреть если уже есть опыт иначе это грозит потерей уймы времени с нулевым результатом в итоге |
Цитата:
Цитата:
Цитата:
|
Можно попробовать логировать запросы. Через некоторе время соберется статистика по наиболее частым и типичным опечаткам. Дальше можно составить набор правил по которым попытаться исправить ошибки. И матчить уже исправленную строку.
Например у нас есть куча таких запросов: Как снять двушку? 1) Для начала нормализуем строку удалив все двойные пробелы 2) Слово "двушку" смело меняем на "девушку" ибо ни кто в здравом уме двушки в 11 вечера не снимает 3) Пытаемся подобрать паттерн Пример шуточный. Наиболее частые ошибки можно пытаться исправлять, на остальные забить метиз с метрической резьбой. |
Часовой пояс GMT +3, время: 01:24. |