Алгоритмы анализа строк, токенизации?

Есть такой руби проект Picky. Это поисковик, который принимает на входе только один поисковый запрос, но может разделять смысловые части. Делается это ввиде firstname:vova lastname:gagarin.

Категорий конечно может быть много, но я хочу сделать так что-бы поисковый запрос анализировался на содержание смысловых блоков без конкретных указаний. Например по ключевым словам из словаря.

И потом если есть сомнения, система бы выдавала бы ответ ввиде «вы имели ввиду фамилию или улицу?»


Искал долго, но очень много токенизаторов работает по одному слову, т.е. не разбивают строку на несколько смысловых.

Вроде как в solr можно сделать через фильтры. Но для меня вся эта тема нова, поэтому надеюсь на подсказки, куда копать.

(если есть какие-то библиотеки в помощь на руби было бы замечательно)
  • Вопрос задан
  • 4263 просмотра
Пригласить эксперта
Ответы на вопрос 2
ksurent
@ksurent
Не уверен, что правильно понял задачу, но звучит похоже на NER — Named Entity Recognition. С помощью алгоритмов NER можно выделять из текстов имена, названия географических объектов и т.п. Но это по сути простая классификация, а не семантический анализ (т.е. никакого «анализа смысла»).
Ответ написан
@lightcaster
Лучше использовать классификатор. Регулярками — только если что-то очень простое с устоявшимся паттерном (номера телефонов). По алгоритмам, лучше CRF. Наивный байес тоже подойдет. Главное, хороший корпус для тренировки.

А, да, еще можете сюда глянуть — www.freebase.com/. Гугловый проект, там народ вручную вбивает.

И да, не бросайтесь терминами «смысл». Народ, кто занимается с нлп этого не очень любит :).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы