Сценарий знаний QuickHelp (QKnows 0.4, БЕТА)
Среда обработки естественного языка (NLP).

Введение

Сценарий знаний QuickHelp (QKnows) — это система обработки естественного языка (NLP), изначально созданная для использования на панели инструментов TalkingWebsite QuickHelp. Он был разработан с учетом простоты, прозрачности и простоты внедрения. QKnows написан на сущностях знаний (сокращенно Knowets). Knowets — это заскриптованные наборы данных, которые используются для обучения чат-ботов, созданных на панели инструментов Talking Website QuickHelps (узнайте больше о Talking Website здесь: https://github.com/SYLMultimedia/quickhelp_TW).

Философия

Ввиду высокоразвитых и продвинутых систем НЛП, которые уже используются, QKnows — это смелая попытка создать еще «более простую» альтернативу для «нетехнических разработчиков». Конечная цель — в конечном итоге получить язык для конкретного приложения, который позволит практически любому обучать чат-бота в системе QuickHelp. Qknows также рассматривается как возможность отхода от подхода «черный ящик», представленного более продвинутым бэкендом НЛП.

Что нового?

Четвертый выпуск Qknows (0.4, бета) представляет собой небольшое улучшение по сравнению с версией 0.3. Например, Qknows теперь позволяет выполнять несколько различных запросов на Knowet. Кроме того, сценарий гиперссылок теперь устарел, поскольку гиперссылки теперь активны по умолчанию. Кроме того, различные ответы и запросы теперь доступны для не-премиум-пользователей.

Необходимое условие

Для написания Qknows требуется, чтобы учетная запись была открыта на QuickHep's TalkingWebsite. Новую учетную запись можно открыть со следующим URL-адресом: https://widget.quickhelp.com.ng/dashboard/signup.php.

После открытия учетной записи ссылка «Обучение чат-ботов» открывает текстовое поле, в котором записывается, публикуется и обновляется Qknows.

Знания

Знания — это однострочные объекты данных, обычно состоящие из запросов, ответов, потоков, кнопок, ссылок, жестов, изображений, настроений и действий. Они образуют строительный блок для Qknows.

Алгоритм QKnows позволяет «понять» запросы пользователей, сопоставляя запросы с наиболее подходящими Knowets. Сопоставление не обязательно должно быть дословным или следовать какому-то определенному порядку.

Когда Knowet не существует или предварительно настроенная чувствительность слишком низкая, чат-бот возвращает негативный рассказ, например: «Извините, я вас не понимаю».

Функцию чувствительности Chabot можно настроить на панели инструментов для премиум-пользователей.

Структура/синтаксис Qknows

Сценарий знаний QuickHelp (Qknows) написан с использованием объектов знаний (Knowets). Скрипт можно написать вручную, загрузить или просто сгенерировать с помощью панели инструментов. Кроме того, средство чтения веб-сайтов QuickHelp (QWR) считывает файлы Qknows, которые можно легко передавать и использовать повторно.

1. Как писать ноуты

а. Каждый объект знаний (Knowet) заканчивается на «%».

б. Знания не чувствительны к регистру.

в. Каждое Знание идентифицируется и именуется по его Запросу. Например, How are you@Great!% просто называется «как дела?» Knowet.

д. Каждое знание начинается с намерения или запроса (RQ), за которым следует ответ (RS), разделенный знаком «@», например.

2. Поток

Поток — это способ связать один Knowet с другим, чтобы добиться более плавного и беспрепятственного общения. После ответа (RS) введение ЕЩЕ ОДНОГО одиночного «@» генерирует то, что называется «потоком». например

Knowet: Помогите мне@Почему?@Спасибо%.

Поток в этом примере — «Спасибо».

Когда поток установлен, Qknows автоматически запускает (запускает) другой запрос из сценария. В приведенном выше примере бот отвечает «почему» и переходит к другому объекту знаний (Knowet) в поисках соответствующего ответа на слово «Спасибо», если существует Knowet «спасибо».

Пример

Знаток 1: Помогите мне@Вам нужна помощь?@Мне нужна помощь%

3. История

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

Пример
Знаток 1: Помоги мне@Тебе нужна помощь? @Мне нужна помощь%
Знающий2: создан для этой цели@Я создан именно для этой цели.%
Знающий3: Мне нужен help@Какая помощь вам нужна?@создана для этой цели%

Результаты
RQ: Помогите мне
RS: Вам нужна помощь?
RS: Какая помощь вам нужна?
RS: Я был создан именно для этой цели.

4. Несколько ответов

Знания также могут быть написаны для получения нескольких последовательных ответов. Несколько ответов обрабатываются с помощью # между ответами (RS), например, Как дела @Хорошо#Спасибо!%

При желании вы также можете ввести поток после нескольких ответов. например

Как дела@Хорошо#Спасибо@ваш возраст%.

Обратите внимание, что для работы потока должен существовать Knowet «вашего возраста».

5. Разные ответы

Сценарий QKnows позволяет вам иметь разные ответы на простой запрос. Это достигается введением знака «|» между элементами знания.

Различные ответы делают ваших чат-ботов менее повторяющимися, т.е. умнее. При повторном задании одного и того же вопроса чат-бот просто предлагает другой ответ в зависимости от намерения или запроса.

NB: по умолчанию чат-бот обнаруживает повторение и не отвечает. Это можно отключить на панели инструментов, если вы используете план Premium.

Пример

Где ты? @I в Лагосе | Меня нет рядом. %

Этот пример предлагает два варианта ответов, т. е. «Я в Лагосе» или «Меня нет поблизости», которые представлены случайным образом.

Примечание: теперь эта функция доступна для пользователей без подписки Premium.

6. Синонимы/различные запросы

Точно так же Qknows могут включать несколько запросов на Knowet в форме синонимов, аналогичных положений или совместных намерений. Это позволяет устанавливать различные запросы, которые могут вызывать только один ответ.

Пример
Knowet: Кто ты? | Назовите себя @I — QuickE#a Chatbot%

Пояснения: Запросы «Кто вы» или «Идентифицируйте себя» при срабатывании дадут тот же ответ «Я QuickE, чат-бот».

7. Обнаружение настроений

QKnows позволяет определять настроение запросов. Когда он обнаруживает высокую или низкую тональность, он ищет соответствующий Knowet, выдает соответствующий ответ, а также выдает ответ с высокой или низкой тональностью через поток. Следовательно, ноуэты с высоким и низким уровнем тональности должны быть определены заранее.

Пример

Знаток1: Какой ты идиот@Вао#Идиот — сильно сказано!%
Знаток2: low_knows@теперь ты меня очень огорчаешь.% (предустановлено на панели инструментов)

Результаты

РК: Какой ты идиот!
РС: Вао, идиот — это сильно сказано!
РС: Теперь ты меня очень огорчаешь.

Объяснение: Qknows определяет тональность запроса как низкую и автоматически добавляет поток «low_knows». Это также происходит, когда он обнаруживает счастливый или воодушевленный запрос, например «Ты умный!».

8. Настроения

Настроения — это способы предложить, как ваш чат-бот должен реагировать на Knowet. По умолчанию QKnows состоит из 3 шаблонов настроения: Низкое, Нормальное и Высокое. Премиум-пользователи смогут настроить больше вариантов.

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

Пример

Как дела@Хорошо#Спасибо@@@настроение:высокое %

В этом примере Knowet ожидается, что запрос «Как дела?» будет возвращать «Хорошо», «Спасибо» в последовательных ответах с выделенным текстом, предполагающим отличное настроение. Аналогичным образом обрабатываются изображения, ссылки и жесты (дополнительные примеры см. в справочнике Knowet).

9. Сложные запросы

Сложные запросы — это запросы, состоящие из сложных предложений, т. е. составных предложений, содержащих два или более понятий, но соединенных вместе знаками препинания. например: «Я дома. Ты готовил?

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

NB: эта функция доступна только для премиум-пользователей.

10. Контексты

Qknows обрабатывает контекст, идентифицируя ключевые объекты в запросах. Например, такой запрос, как «У тебя есть конфеты?» автоматически запускает контекст «конфеты». Дальнейшие запросы типа «где ты это купил?» будет преобразовано в «когда вы купили конфеты» перед запуском соответствующего Knowet. Обратите внимание, что это все еще продолжается и еще не доведено до совершенства.

Пример 1
Учитывая следующие сведения и запросы соответственно:

Ноуэт : Помоги мне принести мою сумку@Хорошо#Где она?%
Ноуэт : Сумка в ванной@Хорошо#Тогда я пойду за ней прямо сейчас!%

РК: Помогите мне принести мою сумку!
РС: Хорошо, где она?
РК: Она в ванной! (преобразовано в «Сумка в ванной»)
RS: Хорошо, тогда я иду прямо сейчас!

Объяснение: второй RQ будет преобразован в «сумка в ванной», и это сработает «сумка в ванной», Knowet.

Пример 2
Предоставление следующих знаний и запросов:

Knowet : Ты любишь танцевать?@Да Люблю%
Knowet : Ты плаваешь?@Да Люблю%

РК: Ты любишь танцевать?
РС: Да, люблю
РК: А как насчет плавания?
РС: Да, люблю

Объяснение: QKnows идентифицирует сущность, «плавающую», и контекстный триггер «что о». Таким образом, запрос будет преобразован в «Любите ли вы плавание», и это вызовет знание «Любите ли вы плавание», если оно существует.

Обратите внимание, что Knowet «Любите ли вы плавать» не существует, но ближайший Knowet срабатывает «Вы плаваете?».

11. Повторные запросы (например, «Скажи это еще раз»)

QKnows позволяет вашим пользователям чат-бота сделать вежливую просьбу о повторении предыдущих ответов. Например.

Knowet: Ты умный @Да, я стараюсь%

РК: Ты умный?
РС: Да, я пытаюсь.
РК: Что ты сказал?
РС: Я сказал: да, я пытаюсь.

Объяснение: QKnows обнаруживает намерение «что вы сказали» и распознает его как запрос на повторение.

12. Согласия, ответы да/нет

Qknows также может запускать предварительный поток, когда обнаруживает ответ «да» или «нет». Для этого к исходному запросу добавляется префикс "да" или "нет" (или синонимы), а выдача выполняется как поток.

Пример

Знаток1: Что означает ЗНАТЬ? @ЗНАЕТ означает сущность знания@, просто зная это%
Знаток2: Просто зная это@ Ты просто знаешь это?!%
Знаток3: Да Просто зная это @ Ой! Я думал, ты следишь за мной!%

Результаты
RQ: Что означает ЗНАТЬ?
RS: ЗНАТЬ означает сущность знаний
RS: Вы просто знаете это?
RQ: Да
RS: О ! Я думал, ты следишь за мной!

Объяснения:
Обратите внимание, что в Knowet 1 есть поток «просто зная это». Этот поток выполнит поиск knowet2 и выдаст ответ «Вы только что узнали об этом?!». Если возвращается «да», запускается Knowet3, если он существует. Если нет, по умолчанию вернется к Knowet 2.

Предостережение: Это может создать нежелательную петлю, поэтому все знания типа «да/нет» (полярные) всегда должны сопровождаться соответствующими знаниями «да» или «нет» для соответствующих ответов.

13. Википедия по умолчанию

Qknows разработан так, чтобы иногда по умолчанию обращаться к Википедии для неизвестных запросов. Это служит для обогащения неизвестных разговоров, особенно при запросах определения или описания общих или популярных объектов. Пример: Кто такой Мандела? или Где находится Лондон?

14. Справочник по знаниям

RQ@@@как дела?% Создает кнопку призыва к действию. например, Как дела@@@Узнай здесь%.

RQ@Отлично!@@как дела?% Создает кнопку призыва к действию после ответа. например, Как дела@@@Узнай здесь%.

RQ@Отлично!@@настроение:высокий % Предлагает ответ «Отлично» с приподнятым настроением.

RQ@Плохое@@ настроение: низкое % предполагает ответ «Плохой» с плохим настроением.

RQ@Заблудись@@жест:док% Предлагает ответ «Заблудись» с помощью жеста. В этом случае жест стыкуется, т. е. агент ИИ сворачивает.

RQ@Я печатаю!@@ action:type:Sugar% Предлагает ответ «Я печатаю» с действием. В этом случае действие состоит в том, чтобы ввести слово «Сахар».

RQ@Это мое лицо@@ image:’imageurl.jpg’% Предлагает ответ «Это мое лицо» с отображаемым изображением, ссылающимся на URL-адрес «imageurl.jpg».

Дальнейшее развитие

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

Тем не менее, команда разработчиков QuickHelp считает, что со временем, после дальнейших итераций разработки, циклов неудач и вклада более широкого сообщества разработчиков, Qknows в конечном итоге достигнет зрелости как мощная альтернатива существующим платформам НЛП.

Поэтому Qзнает, что предлагается как есть, пока работает над следующим:

• Динамические объекты

• Триггеры контекста с поддержкой тегов

• Стемминг и леммализация

• Части речевой маркировки

• Поверхностный разбор

• Анализ избирательных округов и зависимостей

• Смайлики и стенография

• Подведение итогов

• Многоязычная поддержка

Некоторые непосредственные занятия включают в себя:

1. Разработка Restful API
2. Взаимодействие с Tensorflow

Отзыв

Для предложений, критики, отзывов, пожертвований или взносов, пожалуйста, отправьте электронное письмо Тосину по адресу [email protected]

Команда разработчиков

Олуватосин Одубела
Ведущий программист, твиттер: @tosinloluwa

Акин Акинсейнде
Data Scientist

Олайинка Одубела,
лингвист, лингвист-технолог