xAIMLとは?

xAIMLとはドコモの自然対話プラットフォームで、チャットボットの対話シナリオを記述する際に使用する言語です。

xAIMLは、AIML(Artificial Intelligence Markup Language)をベースにドコモが機能拡張した記述言語であり、”x”には、ExtendedやExpressiveの意味が含まれています。

AIMLとは、自然言語ソフトウェアエージェント構築のためのXMLを応用した記述言語です。フリーソフトウェアコミュニティによって開発されました。

xAIML記述方法

xAIMLにおける対話シナリオの記述方法についてご説明します。

このページの内容と、SUNABAで提供しているTipsやxAIMLリファレンスの内容を組み合わせることで、多種多様な対話シナリオを作成することができます。

基本の対話シナリオ

「ユーザ発話」に対して「システム発話」を定義し、対話シナリオを記述する方法です。

xAIMLにおける対話シナリオの最小構成です。

xAIML

(タグ解説:<category> 対話の単位、<pattern> ユーザ発話、<template> システム発話)

動作結果

複数往復の対話シナリオ

「直前のシステム発話」と「ユーザ発話」の組み合わせに対して、「システム発話」を定義し、対話シナリオを記述する方法です。

数往復にまたがる対話や、条件分岐を含むフローチャートなどの複雑な対話シナリオを作成することができます。

xAIML

(タグ解説:<category> 対話の単位、<pattern> ユーザ発話、<that> 直前のシステム発話、<template> システム発話)

動作結果

デフォルトの対話シナリオ(UDC)

デフォルトの対話シナリオとは、どの<pattern> にもマッチしないユーザ発話が最終的にマッチする<category> です。

xAIMLにおいてはUDC(Ultimate Default Category)と呼び、UDCが存在しない場合は、「NO MATCH」が返ります。

一般的に以下のような発話や、ユーザに別の言葉での発話を促すような内容を返します。

Predicate(変数)

ボット上で使用できる変数のことをPredicateと呼びます。
Predicateは<get> <set> で使用できます。

また、Predicateにはシステムによって自動設定されるものや、特別な動作をするものがあります。
詳細は後述をご覧ください。

システムPredicate

Predicateのうち、ユーザ発話などのタイミングでシステムが自動設定するものを、システムPredicateと呼びます。
システムPredicateには、発話の時間帯や親密度などがあり、自然な対話シナリオを作成するのに役立ちます。

※システムPredicateは参照のみ可能となっており、内容は変更できません。

Predicate名 設定内容
input ユーザ発話の全文を取得できます。
that 直前のシステム発話を取得できます。
id 直前のシステム発話IDを取得できます。
count:xxx システム発話ID毎に、発話の回数を取得できます。
xxxの部分に、回数を取得したいシステム発話IDを設定します。
total_access 利用回数を取得できます。
days_from_last_access 最終利用日からの経過日数を取得できます。
days_from_first_acess 初回利用日からの経過日数を取得できます。
intimacy 親密度を取得できます。
親密度の内容と設定条件は、親密度設定条件をご覧ください。
season 季節を取得できます。
季節の内容と設定条件は、季節設定条件をご覧ください。
time_period 時間帯を取得できます。
時間帯の内容と設定条件は、時間帯設定条件をご覧ください。
dialog_status 対話ステータス(JSON文字列)を取得できます。
srai_count 再帰呼び出し回数を取得できます。
appId リクエストのappIDを取得できます。
language リクエストの言語コードを取得できます。
frontBot リクエストのフロントエンドボットIDを取得できます。
callerBot リクエスト呼び出し元ボットIDを取得できます。

親密度設定条件

設定条件
はじめて 初回利用日からの経過日数が0日。
知り合い 初回利用日からの経過日数が1〜6日かつ利用回数が10回未満
または、利用回数が5回未満。
友達 初回利用日からの経過日数が1〜6日かつ利用回数が10回以上
または、利用回数が6〜20回。
仲良し 利用回数が21〜150回。
とても仲良し 上記以外。

季節設定条件

設定条件
3月〜5月
6月〜8月
9月〜11月
12月〜2月

時間設定条件

設定条件
早朝 4時〜5時
6時〜10時
11時〜15時
夕方 16時〜18時
19時〜22時
深夜 13時〜3時

固有表現抽出

固有表現とは、人名や場所そして日付などのことを指し、自然対話プラットフォームでは<get> タグなどで、ユーザ発話から固有表現を抽出することができます。

固有表現の種類や使用方法については、こちらをご覧ください。

xAIML

実行結果

クライアント情報取得

シナリオ対話APIで送信したクライアント情報を<get> タグなどで取得することができます。

クライアント情報取得の使用方法については、こちらをご覧ください。

xAIML

実行結果

送信したクライアント情報

取得内容