Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Нечёткий поиск строк
Форумы портала PHP.SU » PHP » Программирование на PHP » Нечёткий поиск строк

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

1. Dragon_Knight - 31 Марта, 2017 - 19:59:23 - перейти к сообщению
Всем привет.

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

Подскажите, или натолкните пожалуйста в верную сторону мои мысли.
2. Строитель - 31 Марта, 2017 - 21:40:13 - перейти к сообщению
Dragon_Knight, не знаю поможет ли вам этот демо-пример, т.к. он построен на основе регулярных выражений, но я предполагаю - суть вам будет понятна.

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


Подобный принцип можно использовать и в БД, например с оператором LIKE.
3. Dragon_Knight - 31 Марта, 2017 - 21:54:30 - перейти к сообщению
Строитель, интересный вариант, но придётся под каждую фразу описывать свою регулярку, причём продумывать как может пользователь извернуться и сказать её Улыбка
4. Строитель - 31 Марта, 2017 - 22:16:39 - перейти к сообщению
Dragon_Knight пишет:
Строитель, интересный вариант, но придётся под каждую фразу описывать свою регулярку, причём продумывать как может пользователь извернуться и сказать её Улыбка
Почему? ) Например, в примере выше используется одна регулярка для как минимум трёх фраз.
5. Dragon_Knight - 31 Марта, 2017 - 22:19:20 - перейти к сообщению
Строитель, ну не для одной команды-же пишется система, а для тысяч.
А пример выше имеет три фразы, но команда-то одна.
6. Строитель - 31 Марта, 2017 - 22:23:21 - перейти к сообщению
Dragon_Knight пишет:
Строитель, ну не для одной команды-же пишется система, а для тысяч.
А пример выше имеет три фразы, но команда-то одна.
Три фразы я написал для примера. Вы можете написать их сколь угодно, но с учётом особенностей именно этого шаблона - а именно, все фразы должны начинаться со слова "включи". Но это вроде бы итак логично? )
7. Dragon_Knight - 31 Марта, 2017 - 22:28:47 - перейти к сообщению
Включи свет в комнате
Включи электричество в гараже
Сколько градусов на улице
Какая влажность в парнике
Открой переднюю калитку
Закрой дом
Какое состояние очистных сооружений
.... и так до бесконечности.. и для каждой нужно писать свою регулярку.

 

Powered by ExBB FM 1.0 RC1