pattern

<pattern>タグは、ユーザの入力に対してマッチングの対象となる言語パターンを記述します。<pattern>タグに記載された言語パターンは、言語設定に応じて正規化され、表記ゆれを吸収したマッチングが行われます。level属性によって<pattern>タグ毎に正規化の度合いを調整することが可能です。また、1つの<category>ブロックに複数<pattern>タグを並べて記述できます。

ポイント
<pattern>タグに記述している単語(形態素)でマッチングを行います。
level属性の指定が無い場合は、<pattern>タグの内容はhypernymレベルに準拠します。
その為、以下の例では「ネコ(読み仮名)」、「キャット(類義語)」のようなものでもマッチします。

属性

名称 必須 デフォルト 説明
partial
独自拡張
boolean false pattern文を部分一致を行うか指定します。
level
独自拡張
exact
surface
normalization
synonym
hypernym
regex
hypernym 正規化文の展開レベルを記述します。
label
独自拡張
string 意図解釈判定結果によるマッチングを行います。labelの値には、タスクごとに設定されたコマンドのID

partial

partial="true"の場合、グラフ作成時点でパターンを拡幅します。すでにワイルドカード(* or _) がある側は、拡幅しません。partial属性の定義なしの場合は、partial="false"と同じです。パターンマッチングの優先度は”*”よりもpartial="true"の方が高くなります。
また、<?>は<star>を利用しての文字列抽出はできません。
<star>を利用する場合は*を明示したパターンを明記してください。

Example

level

正規化文の展開レベルを記述します。
指定しない場合のデフォルトは、hypernymとなります。

説明(具体的なマッチング方法は次の表をご覧ください。)
exact 表層のみ展開
surface 表層、読み&品詞まで展開
normalization 表層、読み&品詞、助詞の除外、述部正規化まで展開
synonym 表層、読み&品詞、助詞の除外、述部正規化、類義語まで展開
hypernym 表層、読み&品詞、助詞の除外、述部正規化、類義語、上位概念まで展開
regex 正規表現マッチ。他のパターンマッチより優先される。正規表現抽出した文字列は、ワイルドカードマッチと同様に利用可能。
※正規表現はjava.util.regexに準拠。
展開レベル 説明
表層 pattern文に記載された内容通りのマッチングを行います。
読み&品詞 pattern文に記載された内容を形態素解析した結果の読み&品詞でマッチングを行います。
助詞の除外 文中の助詞を無視してマッチングを行います。
述部正規化 助動詞などを役割ごとに分類してマッチングを行います。
類義語 pattern文に記載された内容の内、名詞の類義語を考慮してマッチングを行います。
上位概念 pattern文に記載された内容の内、名詞の上位概念を考慮してマッチングを行います。
正規表現 pattern文に記載された正規表現ルールでマッチングを行います

level=”exact”

level="exact"<pattern>タグの指定内容通りにしかマッチしません。

Example

level=”surface”

level="surface"は単語の読み仮名でもマッチします。

Example

level=”normalization”

level="normalization"は助詞省略でもマッチします。述部の言い回しが異なっていても同様の意味合いならばマッチします。

Example

level=”synonym”

level="synonym"は単語の類義語でもマッチします。この例では「今日」を「今」と置き換えて発話してもマッチします。

Example

level=”hypernym”

level="hypernym"は単語の上位概念でもマッチします。この例では「天気」の上位概念が「天候」であり、それに含まれるであろう「台風」や「吹雪」でマッチします。

ポイント
level属性を記述しない場合は、この設定が適用されます。
Example

level=”regex”

level="regex"は正規表現ルールに則ったユーザ発話文にマッチします。

label

意図解釈エンジンを使用する際に記述します。
labelの値には、タスクごとに設定されたコマンドのIDを設定します。
label属性だけの空要素でもマッチングできますが、pattern文も明記するとand条件になります。

下記の例は天気タスクをマッチング条件とした例と、それに加えてユーザ発話に「天気」が含まれる条件の例です。

Example – 1

マッチング条件:タスク(天気検索)

xAIML

実行結果

Example – 2

マッチング条件:タスク(天気検索)+ユーザ発話(天気を教えて)

xAIML

実行結果

子要素

名称 必須 説明
bot あらかじめ登録してあるボットプロパティの内容でマッチングを行います。
eval <learn><learnf>の外から引用した値をリテラル化します。
<learn><learnf>内の<pattern>でのみ使用できます。
get 取得したPredicateの値でマッチングを行います。
map あらかじめ登録した辞書(MAPファイル)の内容でマッチングを行います。
set あらかじめ登録した辞書(SETファイル)の内容でマッチングを行います。

bot

あらかじめ登録してあるボットプロパティの内容でマッチングを行います。

詳細はこちらをご覧ください。

eval

<learn><learnf>の外から引用した値をリテラル化します。
<learn><learnf>内の<pattern>でのみ使用できます。

詳細はこちらをご覧ください。

get

取得したPredicateの値でマッチングを行います。

詳細はこちらをご覧ください。

map

あらかじめ登録した辞書(MAPファイル)の内容でマッチングを行います。

詳細はこちらをご覧ください。

set

あらかじめ登録した辞書(SETファイル)の内容でマッチングを行います。

詳細はこちらをご覧ください。