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

За последнее десятилетие Институт творческих технологий Университета Южной Калифорнии разработал бесчисленное количество виртуальных личностей по разным причинам:

Среди бесчисленного множества других!

Институт смог создать столько виртуальных людей, сколько у них есть, благодаря разработанной ими технологии под названием NPCEditor. Как следует из названия, программа позволяет команде редактировать NPC или неигровых персонажей. Программное обеспечение, разработанное ученым-исследователем Антоном Леуски и ведущим профессором НЛП Дэвидом Траумом, было достаточно упрощено, чтобы невероятно легко создать виртуального человека. Фактически, команда организовала целый хакатон для старшеклассников и студентов колледжей, участники которого используют этот инструмент для создания собственного виртуального помощника. Таким образом, это программное обеспечение должно быть действительно простым в использовании, верно? Давайте посмотрим, как это работает!

Хотя программа работает с другими программами, такими как JLogger и ASR, давайте сначала разберемся, как программа работает сама по себе.

[Вы можете получить доступ к программе NPCEditor через VHToolKit по адресу: https://vhtoolkit.ict.usc.edu/vhtk-download.html]

После загрузки вы можете найти и открыть файл .jar под названием npceditor.jar. Вы должны увидеть такое окно:

Это окно будет отвечать за хранение всех ваших данных или высказываний. Здесь мы создадим ссылки вопрос-ответ, которые программа будет использовать в качестве данных для ответов на другие вопросы.

Вверху вы увидите вкладку Люди. Идите вперед и нажмите на эту вкладку, чтобы войти в это окно. В левом нижнем углу вы увидите кнопку Добавить, которую мы будем использовать для добавления нового персонажа в качестве нашего виртуального помощника. Добавьте нового человека и дайте ему имя. На данный момент вам не нужно заполнять другие вкладки или кнопки. Кроме того, перейдите на вкладку Классификатор и в раскрывающемся списке Диспетчер диалогов измените его с Классификатор на Скриптовый. >. Это изменит модель так, что она будет отвечать только одним ответом на вопрос. Без выбора Scriptable всякий раз, когда вы задаете вопрос, модель может дать несколько ответов.

Теперь вернитесь на вкладку Высказывания и в нижней части обоих окон вы увидите еще одну кнопку Добавить для каждого из них. На стороне вопросов добавьте новый вопрос или утверждение, которое вы хотите, чтобы ваша персона поняла. Простое «Привет!» это хороший способ начать. Затем в окне ответов добавьте ответ на новый вопрос, который вы только что создали. Внизу всего окна вы увидите раскрывающееся меню Значение ссылки. Если выбраны и ваш вопрос, и ответ, выберите «6 — актуальный и беглый» в качестве значения ссылки для этих двух. Это отвечает за то, чтобы ваша модель знала, что этот вопрос и этот ответ являются парными, поэтому, когда вы задаете вопрос, подобный этому, ваша модель будет понимать, какие ответы работают лучше всего.

У вас должно быть несколько связанных высказываний, которые вы можете использовать в разговоре со своей персоной. Конечно, более сложные модели, такие как Пинхас Гуттер, содержат тысячи высказываний, собранных для использования, что позволяет задать более широкий спектр вопросов. Однако на данный момент наша модель сможет конкретно ответить только на перечисленные нами вопросы. На вкладке ответов также выберите все ответы и измените домен внизу с Любой на своего персонажа. Теперь, если вы перейдете на вкладку Чат и введете один из своих вопросов, ваша модель должна вывести введенный вами ответ.

Вы заметите, что в вашей консоли чата также есть вкладки сбоку, которые дают вам больше информации о связанных ответах и ​​оценках сходства ваших пар вопрос-ответ. Теперь давайте посмотрим, что будет делать наша модель, когда она не знает, что делать. Если вы введете что-то случайное, вы, скорее всего, получите либо все свои ответы, либо ни один из них, потому что у нас нет резервных ответов для этого случая, и нам нужно настроить порог. Перейдите на вкладку Настройки и в окне Категория нажмите Добавить внизу, чтобы добавить новую категорию. Давайте назовем это «Тип» и изменим идентификатор на «тип». Затем добавим три новых параметра Token. Назовите их «Скрыть» с идентификатором «скрыть», «Непрозрачный» с идентификатором «непрозрачный» и «Неизвестный» с идентификатором «неизвестный». Теперь добавьте несколько новых ответов без ссылок на вопросы, например «Можете ли вы повторить это?» для скрытого типа, «я не уверен, что понимаю» для непрозрачного типа и «я не знаю» для скрытого типа. Неизвестный тип. Это позволит различать разные уровни ответов, которые наша модель будет использовать в тех случаях, когда у нее нет хорошего ответа. Затем перейдите на вкладку Классификаторы и выберите своего человека вверху. Затем внизу нажмите Проверить данные обучения и выберите Начать обучение. Это обучит вашу модель, показывая пороговое значение для нашей модели, которое мы можем соответствующим образом настроить. Вернемся на вкладку Чат и посмотрим, как сейчас работает наша модель.

Как видите, наша модель теперь отвечает на вопросы, которые она не понимает. Итак, мы рассмотрели, как предоставить данные нашей модели, но не как обязательно протестировать нашу модель. Если мы вернемся на вкладку Настройки, там должна быть категория под названием T/D/T, что означает «Обучение, разработка и тестирование». Снимите флажок «Показать всплывающее меню», и когда вы вернетесь на вкладку Высказывания, вы увидите пункт меню внизу, который позволяет вам выбирать между обучением, развитием и тестированием. Вы можете использовать это, чтобы разделить ваши данные, чтобы вы могли протестировать свою модель. Затем, если вы перейдете к Классификаторам, вы можете выбрать «Только тестирование (без обучения)», изменить «Расположение файла отчета о тестировании» и нажать Начать тестирование. Теперь вы получите отчет о производительности вашей модели в этом месте файла. Чтобы повысить производительность вашей модели, вы можете поиграть с Порогом в Классификаторе, чтобы изменить полосу для выбора ответа, или вы можете добавить в свою модель больше данных. В любом случае, у вас должен быть работающий виртуальный помощник, которого вы можете улучшать по ходу дела.

Теперь давайте посмотрим, как работает NPCEditor.

Когда мы смотрим на архитектуру NPCEditor, мы видим, что у нас есть некоторые основные компоненты, работающие вместе, такие как база данных персонажей, редактор персонажей, тренер, менеджер диалогов и т. д., которые получают входные данные из формата связи и выдают ответ из того же формата. место. По мнению ученых ICT:

«Есть две задачи, которые NPCEditor помогает решить дизайнеру персонажей: первая — определить компонент обработки естественного языка персонажа, а вторая — выполнить компонент и отслеживать его активность. Таким образом, в NPCEditor есть две основные части: база данных персонажей, в которой хранится информация о виртуальном человеке и необходимые языковые данные, и сервер персонажей, который следит за сетью, принимает входящие сообщения, обрабатывает запросы и отправляет ответы персонажей».

По сути, каждый символ связан с набором ответов, из которых он может выбирать в зависимости от релевантности этого ответа по отношению к входным данным, а классификатор отвечает за создание текстовых классификаторов от ввода до ответа. Диспетчер диалогов, работающий как компонент, основанный на правилах, использует результаты классификации для выбора ответа. Преимущество такой программы заключается в том, насколько прямолинейна внутренняя архитектура. Поскольку модель не полагается на сквозные методы глубокого обучения, а больше основана на машинном обучении на уровне компонентов, очень легко понять, что происходит и как работает ваш виртуальный помощник, а затем улучшить его. тривиально.

На самом деле, система настолько проста для понимания, что ученые из ICT USC начали проводить хакатоны, полностью основанные на изучении того, как использовать NPCEditor для создания виртуального человека. Хакатон предназначен в основном для старшеклассников и студентов колледжей, и его проводят профессор Дэвид Траум и Антон Леуски, среди других членов команды. На следующем хакатоне, который состоится в конце марта 2021 года, будут семинары под руководством ученых, которые создали NPCEditor, и он будет полностью виртуальным!

Если вам это интересно, рассмотрите возможность регистрации, и, возможно, вы узнаете о NPCEditor и понимании естественного языка даже больше, чем описано в этой статье, соревнуясь за призы и получая ценные знания от всемирно известных профессионалов.

Я настоятельно рекомендую вам продолжить изучение программного обеспечения и надеюсь увидеть вас в моей следующей статье!

Большое спасибо профессору Дэвиду Трауму из Института креативных технологий Университета Южной Калифорнии за поддержку и помощь в написании этой статьи!