melo
однажды
Привет.
Есть задача, на вход поступает предложение. Есть справочник, с количеством слов более 10тыщ. Введенное предложение может быть написано с ошибками/опечатками. Необходимо из этого справочника найти слова наиболее близкие к словам из предложения. Если слово из справочника совпадает со словом из предложения, то ошибки нет. Я использую функцию levenshtein. Справочник сам лежит в файле. Читаю этот файл и все запихиваю в массив и сортирую в нем слова по длине. Потом слова из введенного предложения сравниваю с частью массива, в котором слова по длине равны, если ничего не нахожу, беру массив длина+1, если снова ничего, то массив длина-1, дальше +2, -2. Цена любой операции у меня равна 1. Вот, все вроде бы работает, но при длинном предложении есть тормоза) Хочу спросить, есть ли какие-то общие алгоритмы для таких задач? Нормально ли держать такой большой массив в памяти(хотя как по-другому я хз)?
Есть задача, на вход поступает предложение. Есть справочник, с количеством слов более 10тыщ. Введенное предложение может быть написано с ошибками/опечатками. Необходимо из этого справочника найти слова наиболее близкие к словам из предложения. Если слово из справочника совпадает со словом из предложения, то ошибки нет. Я использую функцию levenshtein. Справочник сам лежит в файле. Читаю этот файл и все запихиваю в массив и сортирую в нем слова по длине. Потом слова из введенного предложения сравниваю с частью массива, в котором слова по длине равны, если ничего не нахожу, беру массив длина+1, если снова ничего, то массив длина-1, дальше +2, -2. Цена любой операции у меня равна 1. Вот, все вроде бы работает, но при длинном предложении есть тормоза) Хочу спросить, есть ли какие-то общие алгоритмы для таких задач? Нормально ли держать такой большой массив в памяти(хотя как по-другому я хз)?