PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dragon_Knight
Отправлено: 31 Марта, 2017 - 19:59:23
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Май 2012  
Откуда: г.Мытищи, МО


Помог: 0 раз(а)




Всем привет.

Ситуация такая: В БД есть эталонные строки. Есть голосовой API, который возвращает строку, которую произнёс пользователь. Как найти самую похожую строку в базе?
Например строки "включи свет на улице", "включи уличный свет", "включи уличное освещение" есть равносильные и ведут на одну эталонную фразу. Когда как "включи свет на улице" и "включи свет на крыльце" есть разные строки.
Т.е. как я понимаю, нужен поиск с учётом изменения порядка слов и заменой их на синонимы, но ничего вразумительного найти не смог.

Подскажите, или натолкните пожалуйста в верную сторону мои мысли.
 
 Top
Строитель
Отправлено: 31 Марта, 2017 - 21:40:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 922
Дата рег-ции: Февр. 2014  


Помог: 30 раз(а)




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

Чтобы не сохранять набор предложений, можно организовать поиск по словосочетаниям не полных слов. Примерно так:
Спойлер (Отобразить)


Подобный принцип можно использовать и в БД, например с оператором LIKE.
 
 Top
Dragon_Knight
Отправлено: 31 Марта, 2017 - 21:54:30
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Май 2012  
Откуда: г.Мытищи, МО


Помог: 0 раз(а)




Строитель, интересный вариант, но придётся под каждую фразу описывать свою регулярку, причём продумывать как может пользователь извернуться и сказать её Улыбка
 
 Top
Строитель
Отправлено: 31 Марта, 2017 - 22:16:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 922
Дата рег-ции: Февр. 2014  


Помог: 30 раз(а)




Dragon_Knight пишет:
Строитель, интересный вариант, но придётся под каждую фразу описывать свою регулярку, причём продумывать как может пользователь извернуться и сказать её Улыбка
Почему? ) Например, в примере выше используется одна регулярка для как минимум трёх фраз.
 
 Top
Dragon_Knight
Отправлено: 31 Марта, 2017 - 22:19:20
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Май 2012  
Откуда: г.Мытищи, МО


Помог: 0 раз(а)




Строитель, ну не для одной команды-же пишется система, а для тысяч.
А пример выше имеет три фразы, но команда-то одна.
 
 Top
Строитель
Отправлено: 31 Марта, 2017 - 22:23:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 922
Дата рег-ции: Февр. 2014  


Помог: 30 раз(а)




Dragon_Knight пишет:
Строитель, ну не для одной команды-же пишется система, а для тысяч.
А пример выше имеет три фразы, но команда-то одна.
Три фразы я написал для примера. Вы можете написать их сколь угодно, но с учётом особенностей именно этого шаблона - а именно, все фразы должны начинаться со слова "включи". Но это вроде бы итак логично? )
 
 Top
Dragon_Knight
Отправлено: 31 Марта, 2017 - 22:28:47
Post Id



Гость


Покинул форум
Сообщений всего: 101
Дата рег-ции: Май 2012  
Откуда: г.Мытищи, МО


Помог: 0 раз(а)




Включи свет в комнате
Включи электричество в гараже
Сколько градусов на улице
Какая влажность в парнике
Открой переднюю калитку
Закрой дом
Какое состояние очистных сооружений
.... и так до бесконечности.. и для каждой нужно писать свою регулярку.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB