Несмотря на ухищрения, такие как учет контекста или использования переменных окружения, в большинстве таких программ применяется простой принцип: входная фраза пользователя анализируется и разбирается по словам, затем в базе диалогов программы ищутся похожие предложения, после чего выдается реплика, соответствующая найденному предложению. Автор ALICE даже разработал специальный язык разметки на основе XML — AIML, с помощью которого задаются паттерны и реплики на них[3].
Чат-боты
Виртуальные собеседники нашли применение в бизнесе в виде чат-ботов — программ, помогающих клиентам магазинов и сетей в выборе услуг и товаров, и обеспечивающих удобство использования сервисов. Благодаря таким программам пользователь может быстро найти интересующий раздел сайта, купить товар или оставить сообщение. Индустрия чат-ботов насколько сильно развилась за последние годы, что даже крупнейшие корпорации создали свои (или приобрели) фреймворки для разработки собеседников: к слову, значительная часть таких программ разрабатывается сейчас на основе DialogFlow (ранее Api.ai) компании Google [4] или Microsoft Bot Framework[5].
Поверхностные и глубокие методы анализа текста
Как правило, виртуальные собеседники, равно как и чат-боты, используют поверхностные (shallow) методы обработки текстов. Главная задача алгоритма — обнаружение фактов или ключевых слов, которые используются в последующем диалоге. Если такие факты обнаружены с некоторой долей вероятности, то остальная часть текста диалога, как правило, игнорируется. Этого достаточно для бизнес-задач, особенно тогда, когда нужна статистическая обработка массива текстовых документов.
Наиболее распространенной "поверхностной" моделью текста является "мешок слов" (bag of words). В этой модели текст представляется как множество слов — без учёта позиции слов по отношению друг к другу: например, предложение "Я не сильно люблю рисовать" будет представлено как {"люблю", "не", "рисовать", "сильно", "я"}.
В тех областях, где требуется полноценный анализ текста и учёт тонких смысловых оттенков (например, в задачах определения авторства), подобное "расточительство" недопустимо. Глубокие (deep) методы обработки языка, базирующиеся на фундаментальных подходах к анализу текстов, относятся больше к области компьютерной лингвистики (computational linguistics). Как правило, тексты при таком подходе проходят конвейер из анализаторов [6]:
1) Графематический (обработка символов)
2) Лексический (выявление слов)
3) Морфологический (анализ форм слов)
4) Синтаксический (оценка взаимного расположения слов и роли)
5) Семантический (выявления смысла слов и связей друг с другом)
6) Прагматический (понимание смысла текста и пользы для читателя)
Результат такого конвейера — сложные структуры: деревья парсинга и семантические графы отношений между словами. Глубокие методы также опираются на тезаурусы языка — словари с указанием семантической роли слов, синонимов, антонимов, гиперонимов и т. д. Синтаксический парсер учитывает особенности того или иного языка. По этой причине перенести анализатор с одного языка на другой затруднительно.