Jump to content

ЧатСкрипт

ChatScript представляет собой комбинацию механизма естественного языка и системы управления диалогами , изначально разработанную для создания чат-ботов , но в настоящее время также используется для различных форм обработки NL . Он написан на С++ . Движок представляет собой проект с открытым исходным кодом на SourceForge . [1] и ГитХаб . [2]

ChatScript был написан Брюсом Уилкоксом и первоначально выпущен в 2011 году, после того как Сюзетт (написанная на ChatScript) выиграла премию Лебнера 2010 года , обманув одного из четырех судей-людей. [3]

В целом ChatScript стремится к предельно лаконичному написанию, поскольку ограничивающая масштабируемость чат-ботов, созданных вручную, заключается в том, насколько быстро/быстро можно написать сценарий.

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

Основным элементом сценария является правило. Правило состоит из типа, метки (необязательно), шаблона и вывода. Существует три типа правил. Гамбиты — это то, что может сказать чат-бот, когда он контролирует разговор. Ответы — это правила, которые отвечают на замечание пользователя, связанное с тем, что только что сказал чат-бот. Ответчики — это правила, которые реагируют на произвольный ввод пользователя, который не обязательно связан с тем, что только что сказал чат-бот. Шаблоны описывают условия, при которых правило может сработать. Шаблоны варьируются от чрезвычайно упрощенных до очень сложных (аналог Regex, но предназначенных для NL). Обычно интенсивно используются наборы понятий, которые представляют собой списки слов, имеющих общее значение. ChatScript содержит около 2000 предопределенных концепций, и авторы сценариев могут легко написать свои собственные. В выводе правила смешиваются буквальные слова, которые должны быть отправлены пользователю, вместе с общим программным кодом в стиле C.

Правила объединены в коллекции, называемые темами. Темы могут иметь ключевые слова, что позволяет системе автоматически искать в теме соответствующие правила на основе введенных пользователем данных.

Пример кода

[ редактировать ]
Topic: ~food(  ~fruit  fruit food eat)

t: What is your favorite food?
    a: (~fruit) I like fruit also.
    a: (~metal) I prefer listening to heavy metal music rather than eating it.

?:  WHATMUSIC ( << what music you ~like >>) I prefer rock music.
s: ( I * ~like * _~music_types)    ^if (_0 == country) {I don't like country.} else {So do I.}

Слова, начинающиеся с ~, представляют собой наборы понятий. Например, ~fruit — это список всех известных фруктов. Простой шаблон (~фрукты) реагирует, если какой-либо фрукт упоминается сразу после того, как чат-бот спрашивает любимую еду. Немного более сложный шаблон правила, обозначенного как «ЧТО МУЗЫКА», требует наличия всех слов «что», «музыка», «ты» и любого слова или фразы, означающих «нравиться», но они могут встречаться в любом порядке. Респонденты бывают трех типов. ?: правила реагируют на вопросы пользователей. s: правила реагируют на высказывания пользователя. ты: правила реагируют и на то, и на другое.

Код ChatScript поддерживает стандартные if-else, циклы, определяемые пользователем функции и вызовы, а также назначение переменных и доступ к ним.

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

Внутри все данные представлены в виде текста и при необходимости автоматически преобразуются в числовую форму.

Переменные

[ редактировать ]

Пользовательские переменные бывают нескольких видов. Переменные, локальные для темы или функции, являются временными. Глобальные переменные могут быть объявлены как временные или постоянные. Переменная обычно объявляется просто путем ее использования, а ее тип зависит от ее префикса ($, $$, $_).

$_local  = 1			is a local transient variable being assigned a 1
$$global1.value = “hi”	is a transient global variable which is a JSON object
$global2 += 20		is a permanent global variable

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

table: ~inventors(^who ^what)
createfact(^who invent ^what)
DATA:
"Johannes Gutenberg" "printing press"
"Albert Einstein" ["Theory of Relativity" photon "Theory of General Relativity"]

В приведенной выше таблице люди связаны с тем, что они изобрели (по одному в строке), а Эйнштейн получил список того, что он сделал.

Внешняя связь

[ редактировать ]

ChatScript включает библиотеку Curl и может напрямую читать и записывать факты в формате JSON на веб-сайт.

Механизм ChatScript может работать в локальном или серверном режиме.

Пост-теги, синтаксический анализ и онтология

[ редактировать ]

копией английского WordNet ChatScript поставляется со встроенной , включая его онтологию , и создает и расширяет свою собственную онтологию посредством деклараций концепций. Он имеет pos-теггер и синтаксический анализатор на английском языке и поддерживает интеграцию с TreeTagger для пост-тегирования на ряде других языков (требуется коммерческая лицензия TreeTagger).

Базы данных

[ редактировать ]

В дополнение к внутренней базе данных фактов ChatScript поддерживает PostgreSQL , MySQL , MSSQL и MongoDB как для доступа через сценарии, так и в качестве центральной файловой системы, если это необходимо, поэтому ChatScript можно масштабировать по горизонтали. Распространенным вариантом использования является использование централизованной базы данных для размещения пользовательских файлов и нескольких серверов для масштабирования механизма ChatScript.

ChatScript также включает DukTape, совместимость с ECMAScript E5/E5.1, с некоторой обновленной семантикой по сравнению с ES2015+.

Исправление орфографии

[ редактировать ]

ChatScript имеет встроенную автоматическую проверку орфографии, которую можно дополнить в сценарии как простой заменой слов, так и контекстно-зависимыми изменениями. С помощью соответствующих простых правил вы можете заменить совершенные юридические слова другими словами или удалить их. Например, если у вас есть концепция ~electronic_goods и вы не хотите, чтобы ввод Radio Shack (название магазина) определялся как электронный товар, вы можете изменить ввод на Radio_Shack (одно слово) или разрешить слова останутся, но блокируют обнаружение концепции.

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

Поток управления

[ редактировать ]

Поток управления чат-ботом управляется сценарием управления. Это просто еще одна обычная тема правил, которая вызывает API-функции движка. Таким образом, управление полностью настраивается сценаристом (и существуют функции, позволяющие осуществлять самоанализ движка). Для специальной обработки доступны варианты потока управления предварительной обработкой и потока управления постобработки.

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 303c96ee3e1971b6d15a5990b37a0702__1697354100
URL1:https://arc.ask3.ru/arc/aa/30/02/303c96ee3e1971b6d15a5990b37a0702.html
Заголовок, (Title) документа по адресу, URL1:
ChatScript - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)