<pattern>
のワイルドカードシンボル(*
or _
)に一致した部分を抽出します。<pattern>
のlevel
属性にregex
を指定した場合は、正規表現でキャプチャした部分を抽出します。
また、<pattern>
に記述した<set>
と<map>
でマッチングした文字列を抽出できます。
<star>
で出力される文字列は、自然対話プラットフォームの言語正規化処理後の値です。
1 2 3 4 5 6 |
<category> <pattern>*が好き</pattern> <template> <star/>は良いですよね! <!-- 「りんごが好き」と発話すると、「りんごは良いですよね!」が出力されます。 --> </template> </category> |
属性
名称 | 型 | 必須 | デフォルト | 説明 |
---|---|---|---|---|
index |
integer |
– | 1 |
抽出対象のインデックスを指定します。 |
name 独自拡張 |
string |
– | – | 抽出対象の上位概念を指定します。 指定できる上位概念については、こちらを参照してください。 |
index
抽出したいインデックスを記述します。
インデックスは、ワイルドカードシンボルや正規表現キャプチャ、<set>
、<map>
の種類を問わず先頭から1, 2…と数えます。
また、指定したインデックスが無効の場合は、空文字を出力します。
Example – 1
ワイルドカードシンボルを使用した例です。
1 2 3 4 5 6 7 |
<category> <pattern>*と*ではどっちが好き?</pattern> <template> <!-- 「リンゴとイチゴではどっちが好き?」と発話すると、「リンゴとイチゴなら前者が好きです。」が出力されます。 --> <star/>と<star index="2"/>なら前者が好きです。 </template> </category> |
Example – 2
正規表現キャプチャを使用した例です。
1 2 3 4 5 6 7 |
<category> <pattern level="regex">生まれ年は([0-9]+)年です</pattern> <template> <!-- 「生まれ年は1980年です」と発話すると、「1980年なんですね。」が出力されます。 --> <star/>年なんですね。 </template> </category> |
name
抽出対象の上位概念を指定します。
指定できる上位概念については、こちらを参照してください。
上位概念に一致した値のうち、指定したインデックスの値を返します。
指定したインデックスに値がない場合は、空文字を返します。
ご注意
<pattern>
の内容に完全一致した場合など、上位概念が参照されなかった場合は空文字を返します。
Example
上位概念を取得する例です。
1 2 3 4 5 6 7 8 |
<category> <pattern>*の夕食は*と*が食べたい</pattern> <template> <!-- 「明日の昼食はうどんとカレーが食べたい」と発話すると、「うどん」が出力されます。 --> <!-- 「明日の夕食はうどんとカレーが食べたい」と発話すると、完全一致するため何も出力されません。 --> <star name="hy_food"/> </template> </category> |
子要素
子要素を持ちません。