"Умный" поиск совпадений в таблице (нетривиальный)?

  • Автор темы Автор темы Moonwalker
  • Дата начала Дата начала

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 997
Реакции
1 697
Баллы
113
В общем, ситуация следующая.
Есть массив данных в виде таблицы, в которой по определенным колонкам нужно найти все строки, в которых встречаются определенные "стоп-слова" (или словосочетания). Т.е., это обычный contains (текст в ячейке не равен слову, он может его содержать).
Проблема в том, что нужно учесть "варианты написания" )))
Т.е., в списке стоп-слов есть такие варианты: Alexandr, Monty Python, Smith & Wesson...
Нужно найти строки/ячейки, в которых будут такие варианты:
- Alexandr, Aleksandr, Alexander, Александр
- Monty Python, MontyPython, Monty Pyton, Монтипайтон
- Smith & Wesson, Smith and Wesson, Smith&Wesson, Смит энд Вессон, Смит и Вессон

Да, русскоязычный вариант тоже, желательно, чтобы определялся. Впрочем, как и в обратную сторону (указываем Александр, находит Alexandr).
Также должны учитываться все варианты написания по пробелам, регистрам букв и т.д.

Понятно, что можно было бы поискать и задействовать какой-нибудь сторонний ресурс и пытаться проверять через него, но массив может быть относительно большой, плюс данные надо будет обрабатывать более-менее постоянно. Хочется замкнуть весь процесс в рамках своей машины. Скорость работы некритична, все равно все будет пробегаться в цикле по таблице (по каждому стопслову).
Может, есть какие-то библиотеки, которые можно было бы использовать? Или еще какие варианты? )))

ps. Надеюсь, понятно объяснил, что нужно )) Не помню точный термин, как такой поиск называется, поэтому возникла проблема с поиском. Такое ощущение, что где-то на форуме подобная тема как-то всплывала, но не могу найти ))

pps. И да, я понимаю, что 100% точность маловероятна, я за ней и не стремлюсь. Ошибки и "ложные срабатывания" тоже возможны. Результат работы потом все равно будет дополнительно обрабатываться руками. Просто нужно изначальный объем сузить, скажем так ))
 
  • Оценить
Реакции: Moonwalker
За направление спасибо, буду копать дальше )) Там, вижу, да, варианты различных написаний/опечаток/транслитераций, тоже полезно. Но с "додумыванием", что конкретно могло иметься ввиду, скорее всего, какая-нить микронейросеть лучше справится, наверное ))
ps. Плюс это в большей степени пока про сравнение двух конкретных слов/сочетаний. Искать возможные варианты совпадения в тексте не несколько предложений, а то и абзацев, пока видится чуть менее реальным. Но будем экспериментировать, задача для себя и не такая срочная ))
 
Последнее редактирование:
Я бы записывал в список, потом регуляркой выдергивал ненужные строки по маске и заносил чистый список в таблицу.
 
Я бы записывал в список, потом регуляркой выдергивал ненужные строки по маске и заносил чистый список в таблицу.
Что записывал в список? У меня, условно, 200-300 "стоп-слов/фраз". У каждой могут быть варианты "написания". Если бы я знал все варианты заранее, да, так было бы наиболее очевидно. Но кто ж знает, как могут написать ))) Поэтому сравнение должно быть без вариантов (я только примеры привел, там у каждой строки могут быть десяток-другой вариантов написания, особенно, допустим, когда какие-нибудь французские слова с буквами с диакретикой ))
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)