2016-10-26 7 views
0

В принципе, я хочу использовать алгоритм kNN для создания чего-то вроде механизма рекомендаций для поиска поваренной книги. Идея состоит в том, что если пользователь вводит что-то вроде «курица», «куриная грудка», «куриное мясо», «без костей» и т. Д., Их рекомендация будет «куриной». Я реализовал более или менее рабочую версию kNN, но проблема заключается в измерении расстояния. Мой первый выбор был расстоянием Левенштейна, но проблема в том, что на входе есть несколько слов. В настоящий момент я вычисляю расстояние Левенштейна на основе словесного слова и беру среднее, но это все еще не идеальное решение. Я надеялся, что кто-то может предложить что-то лучше. Я понимаю, что набор данных очень необычен, поэтому многое зависит от того, что находится в моем наборе данных. Если вы считаете, что kNN здесь нет необходимости, и я должен просто сравнивать строки, тогда вы можете быть правы, но мне все еще нужен другой способ их сравнения. Надежда состоит в том, что алгоритм сможет правильно отличить «куриное мясо» от «мяса индейки» и допускать небольшие ошибки во вводе (орфография). Очевидно, что это не так важно. Другим, возможно, важным моментом является то, что пользовательский ввод должен быть каким-то образом классифицирован, иначе его нельзя использовать. Поэтому, если пользователь набирает то, что не может быть категоризировано, ожидается, что он снова попробует (надеюсь, что алгоритм найдет предложение в конце концов, и это не будет слишком раздражать).Строковая дистанционная функция для реализации kNN для механизма рекомендации по использованию поваренной книги

ответ

0

Кажется, что вам нужны семантические расстояния, а не типографические расстояния. Это сложно, но посмотрите на https://en.wikipedia.org/wiki/Word2vec

+0

Возможно, слишком много, но выглядит интригующим! Спасибо! –