Берете списки, пересекаете через рекурсию или не рекурсию. Если результатов очень много и работает медленно - оптимизируете. Для JavaScript, как пример, алгоритм пересечения можете вытащить из sources отсюда https://yadz.ru/generator (код не минифицирован, найти просто).
Выше кинули ссылку на морфологический словарь - AOT. Подключаете, добавляете в алгоритм проверки вашего списка исключений с учетом морфологии.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Выше кинули ссылку на морфологический словарь - AOT. Подключаете, добавляете в алгоритм проверки вашего списка исключений с учетом морфологии.