Смысловая капча. Применение семантического анализатора Real AI для реализации капчи
В данной статье рассказываем о нашем новом демо-примере, который мы реализовали для демонстрации потенциала технологии Real AI по работе со смыслом текста.
Это – капча, требующая понимания смысла текста. Чтобы успешно решить капчу необходимо понять полученную фразу и из представленных изображений выбрать указанные во фразе объекты. Наиболее интересной деталью этого сценария является то, что правильный ответ заранее нигде не хранится и Real AI выполняет проверку капчи используя все те же данные, что есть у пользователя.
Далее подробнее о создании демо и его особенностях.
Вступление
В прошлой нашей статье «Real AI семантический анализатор. Онлайн-демо – овощи, фрукты и их свойства» мы рассказали о демо семантического анализатора Real AI, который на базе свойство-ориентированного подхода решал задачу сопоставления объектов и их свойств в тексте. Данное демо мы постепенно развиваем и сейчас система способна разобрать вот такую интересную фразу «Пучки петрушки и упаковка кинзы в большом коричневом ящике под полкой с коробками с арбузами».
Этот первый сценарий мы задумывали как ознакомительный, дающий представление о технологии работы со смыслом текста и, как и следовало ожидать, получили вопросы по практическому использованию этих возможностей – «Да, схема построена, объекты и свойства связаны корректно, а что с этим дальше делать?».
Разрабатываемый нами продукт по выявлению поручений из распорядительных документов в открытый доступ мы пока выложить не можем, а значит необходимо было сделать еще одно демо, решающее практическую задачу с использованием ядра Real AI.
О новом демо сценарии
Для начала мы определили ряд критериев, которым должен был соответствовать новый сценарий, – вот основные из них:
применимость для решения реальных задач;
сложность для повторения существующими методами;
желательно графическое визуальное представление;
легкость интеграции с существующим ядром Real AI.
Под данные критерии, после мозгового штурма всей командой, подошли три претендента:
Инструмент нахождения ответов пользователей на вопросы в заранее распознанном тексте большого объема.
Система, позволяющая сопоставлять документы на уровне смысла и выявлять противоречия.
Капча, требующая понимания смысла обрабатываемой информации.
Первый и второй сценарий были действительно интересные, но потребовали бы значительного отвлечения от разработки основного продукта, поэтому было принято решение реализовать третий сценарий.
Сценарий капчи – пользователю предоставляется фраза с описанием объектов и их свойств, а также матрица с визуальным представлением различных объектов. Задача – понять фразу и корректно выбрать необходимые объекты.
Главными плюсами данного сценария было то, что можно было использовать понятия предметной области, которые уже внесены в базу знаний Real AI. Кроме того доработка ядра Real AI требовалась только в части вывода результатов семантического анализа. Если для первого демо результатом была семантическая сеть, то для нового демо – перечень объектов и их свойств.
Концепт капчи виделся так:
Концепт капчи
Подготовка
Первой задачей, после согласования сценария, было определить достаточное количество объектов и свойств, чтобы исключить возможность решения капчи перебором.
Для расчета угадывания случайной последовательности возможных вариантов примем матрицу объектов размерностью 5х5.
Тогда вероятность угадывания 1 элемента будет равен (1/25)×(1!), двух элементов – (1/25)×(1/24)×(2!), трех – (1/25)×(1/24)×(1/23)×(3!). Ниже приведен логарифмический график
процентов возможного угадывания последовательности элементов на матрице 5х5 при
количестве элементов от 1 до 24.
На оси Х приведено количество элементов, а на оси Y – вероятность случайного угадывания, в процентах.
Вероятность случайного подбора капчи
На графике видно, что вероятность угадывания начинает возрастать, когда количество элементов становится больше 12, ведь вероятность угадать 1 элемент из 25 такая же, как и вероятность НЕ угадать 1 из 25.
Исходя из графика для демо мы остановились на диапазоне от 2 до 8 объектов, посчитав шансы случайного угадывания менее 0,33% что вполне приемлемо для защиты от перебора.
Вторая задача – определить объекты, с которыми будем генерировать матрицу и которые необходимо будет найти.
Для более разнообразного построения фраз из текущей базы знаний выбрали две категории – овощи, фрукты, для каждой выбрали слова разного рода (для использования анафорических ссылок).
Объекты отрисовали в векторе и получились вот такие Морковь, Свекла, Банан и Яблоко.
Векторные изображения объектов
В качестве первой характеристики выбрали 4 вариации цвета – красный, желтый, зеленый и фиолетовый. В качестве второй – три варианта размера – маленький, средний, большой. Характеристики решили менять уже на стороне сервера при генерации.
Таким образом итоговая матрица состояла бы из средних зеленых бананов, красных крупных морковей и других вариаций в различных количествах. Пользователю же предлагалась бы фраза для распознания и нахождения нужных элементов, например «3 моркови и два маленьких яблока. Фрукты красные. Овощи средние и зеленые».
Реализация
Реализованный интерфейс
Итог реализации демо приведен выше на картинке. Укрупненно, алгоритм работы капчи состоит из следующих шагов:
На стороне сервера генерируется матрица элементов и фраза с описанием двух типов объектов.
Направление фразы и матрицы объектов пользователю.
Пользователь выбирает подходящие элементы и нажимает «Проверить». Передача массива выбранных объектов на сервер.
Фраза передается Real AI Server для анализа.
Возвращение результата смыслового анализа в виде выявленных объектов и их свойств.
На стороне сервера сопоставляется количество выбранных пользователем объектов и тех, которые были извлечены из фразы Real AI.
Возврат результата сопоставления пользователю.
Взаимодействие компонент
Как мы писали в начале – наиболее интересной, на наш взгляд, в данном демо является возможность решить капчу силами самого Real AI. При нажатии «Решить с помощью Real AI» на сервер передается не только сама фраза, но и матрица элементов, в которой, после извлечения смыслового содержания из фразы, и выбираются нужные объекты.
Корректность того, как разбирается та или иная фраза, можно проверить нажав «Построить модель в Real AI». Для примера выше схема будет выглядеть следующим образом:
Семантическая модель фразы, построенная Real AI
Заключение
В данной статье мы показали возможность использования нашей технологии семантического анализа текста для реализации нового вида капчи, основанной на понимании смысла фразы.
Хочется обратить внимание, что данное демо не решает задачу распознавания изображений и данные о том, какой объект хранится в ячейке, заданы в открытом виде в теге
Для усложнения капчи можно было бы на стороне сервера хранить таблицу с матрицей элементов, пользователю передавать лишь png с дополнительным шумом, однако в демо мы хотели показать возможность решения задач понимания текста и одного из практических применений данной возможности.
К особенностям данного демо можно отнести следующее:
Ответ на капчу ни в каком виде заранее не сохраняется. Решение происходит непосредственно в момент получения фразы.
Объяснимость результатов. Можно проверить корректность понимания фраз.
Возможность дальнейшего усложнения генерируемых фраз, понимаемых человеком и Real AI, но не разбираемых альтернативными средствами.
Попробовать в работе демо смысловой капчи можно по ссылке – https://real-ai.ru/demo_cap/