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

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 364
Благодарностей
957
Баллы
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% точность маловероятна, я за ней и не стремлюсь. Ошибки и "ложные срабатывания" тоже возможны. Результат работы потом все равно будет дополнительно обрабатываться руками. Просто нужно изначальный объем сузить, скажем так ))
 

Ахилес

Client
Регистрация
11.11.2020
Сообщения
862
Благодарностей
352
Баллы
63
  • Спасибо
Реакции: Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 364
Благодарностей
957
Баллы
113
За направление спасибо, буду копать дальше )) Там, вижу, да, варианты различных написаний/опечаток/транслитераций, тоже полезно. Но с "додумыванием", что конкретно могло иметься ввиду, скорее всего, какая-нить микронейросеть лучше справится, наверное ))
ps. Плюс это в большей степени пока про сравнение двух конкретных слов/сочетаний. Искать возможные варианты совпадения в тексте не несколько предложений, а то и абзацев, пока видится чуть менее реальным. Но будем экспериментировать, задача для себя и не такая срочная ))
 
Последнее редактирование:

Denchen

Client
Регистрация
23.06.2020
Сообщения
22
Благодарностей
3
Баллы
3
Я бы записывал в список, потом регуляркой выдергивал ненужные строки по маске и заносил чистый список в таблицу.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 364
Благодарностей
957
Баллы
113
Я бы записывал в список, потом регуляркой выдергивал ненужные строки по маске и заносил чистый список в таблицу.
Что записывал в список? У меня, условно, 200-300 "стоп-слов/фраз". У каждой могут быть варианты "написания". Если бы я знал все варианты заранее, да, так было бы наиболее очевидно. Но кто ж знает, как могут написать ))) Поэтому сравнение должно быть без вариантов (я только примеры привел, там у каждой строки могут быть десяток-другой вариантов написания, особенно, допустим, когда какие-нибудь французские слова с буквами с диакретикой ))
 

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