AIML で、同じパターンに一致する複数のファイルがある場合、1 つのファイルでの一致を優先するにはどうすればよいですか?
3 に答える
Alice のサイトには、優先度の決定方法に関する次の注意事項があります。
すべてのノードで、"_" の優先度が 1 位、アトミック ワード マッチの優先度が 2 番目、"*" マッチの優先度が最も低くなります。
パターンはアルファベット順に並べる必要はありません。"_" が単語の前に来て "*" が単語の後に来るように、部分的に並べるだけです。
マッチングは単語単位であり、カテゴリ単位ではありません。
このアルゴリズムは、入力パターン、パターン、およびパターンを単一の「パス」または「PATTERN THAT TOPIC」などの文に結合し、トークンを通常の単語のように扱います。PATTERN、THAT、および TOPIC パターンには、複数のワイルドカードを含めることができます。
マッチング アルゴリズムは、深さ優先検索の高度に制限されたバージョンであり、バックトラッキングとも呼ばれます。
「_」ワイルドカードを削除し、次の 2 つのステップだけを考慮することで、アルゴリズムを単純化できます。また、 と のない PATTERN の単純なケースを理解してみてください。
これに基づいて、「_」を使用して何かを優先させることができます。次の例を見てください。
<category>
<pattern>_ BAR</pattern>
<template>Which bar?</template>
</category>
<category>
<pattern>FOO BAR</pattern>
<template>Don't you mean FUBAR? That's an old military acronym, that roughly translates to "broken". I can't directly translate it because I don't curse.</template>
</category>
<category>
<pattern>* BAR</pattern>
<template>There are a lot of bars. There's a crow bar, the state bar, a bar for drinking, and foo bar.</template>
</category>
最も_
優先度の高いものが最初に照合されます。シンプルBAR
は 2 番目に優先され、*
最後に優先されます。