Здравствуйте.
У меня есть программа, которая имеет список (небольшой, ну допустим 1000 строк). Я хочу сделать строку поиска внизу, чтобы при набирании текста список фильтровался по этому запросу. Запрос на обычном человеческом языке просто как набор слов.
Как мне проверить, подходит ли каждая строка или нет?
Самый простой вариант - разбить запрос на слова и искать их в элементах.
Для усовершенствования можно подключить к примеру pymorphy2 (нормально ищет первую форму слова, чтобы не мучатся спряжениями) и все слова из списка тоже привести к такой-же форме.
Но как искать синонимы и неточные слова? Может есть какие готовые решения?
Неточные слова можно попытаться искать с помощью расстояния хемминга или аналога, не знаю, правда, будет ли польза.
Можно конечно подключить какой-нибудь сфинкс или, не знаю, еще каккую-то поисковую машину, но хотелось бы обойтись менее громоздкими решениями без баз и всего такого.
Язык желательно .net, но если будет что-то другое - не критично.
тыцтыц
> Но как искать синонимы и неточные слова
синонимы - по словарю синонимов
неточные слова как правило лучше отбросить - если у вас нет возможности построить такую систему машинного обучения, как у поисковиков, и обучить её разумно подсказывать - отбросьте.
alex_ak1: таскать, иначе хана
Вот вам чуток бреда из марковского бредогенератора, натасканного на корпусе классических текстов:
видав могулка не замер воду нимаю соврагиня та окладеянным засту совенего загопорта вопрежу
кровенно волчавшись а пишь ведела когда голодавном на войственцам желатчскую фронуть так неского тел вас секу какое знаю мальшая франдоразу
Русский держит словарь в голове и отличит настоящее слова от синтезированного, а алгоритм, как и иностранец, наслушавшийся русской речи - нет.
longclaps: Жепь ебрило какое-то :)))
Понятно, думаю пока "неправильным словами" можно или не заморачиватся или же посчитать с помощью хемминга или левенштейна - если слово отличается на 1 букву (к примеру) то совпадение есть.