マッチングに優先度をつける方法をご紹介します。
実装方法
数多くのパターンがあった場合に意図しないパターンにマッチしてしまうことがあります。そのような場合には<topic>
を利用してマッチングに優先度をつけます。
xAIML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<category> <pattern>*</pattern> <template id="Test"> <think> <set name="topic">1</set> <condition name="topic"> <li value="1"> <set name="_var_value"><srai><get name="input"/></srai></set> <condition name="_var_value"> <li value="undefined"> <set name="topic">2</set> </li> <li><set name="topic">0</set></li> </condition> <loop/> </li> <li value="2"> <set name="_var_value"><srai><get name="input"/></srai></set> <condition name="_var_value"> <li value="undefined"> <set name="_var_value">どこにもマッチしませんでした。</set> </li> </condition> </li> </condition> <set name="topic"/> </think> <get name="_var_value"/> </template> </category> <!-- 1番目に検索 --> <topic name="1"> <category> <pattern partial="true">検索</pattern> <template>検索します!</template> </category> <category> <pattern>*</pattern> <template> undefined </template> </category> </topic> <!-- 2番目に検索 --> <topic name="2"> <category> <pattern partial="true">富士山</pattern> <template>日本一高い山ですね!</template> </category> <category> <pattern>*</pattern> <template> undefined </template> </category> </topic> |
実行結果
1 2 |
user > 富士山を検索して bot > 検索します! |