在AIML中,我可以优先考虑模式匹配

时间:2016-04-01 08:12:53

标签: artificial-intelligence aiml

在AIML中,如果我有多个文件匹配相同的模式,我怎样才能在一个文件中给出匹配的优先权?

3 个答案:

答案 0 :(得分:2)

您应该使用AIML的通配符来控制模式匹配的优先级。

AIML 1.0只有*和_来匹配1个或多个单词。 AIML 2.0添加^和#以匹配0个或更多单词。

以下是AIML 2.0通配符的优先级,从最高匹配优先级到最低匹配优先级。

  1. “$”:表示单词现在的匹配优先级高于“_”
  2. “#”:0个或多个字
  3. “_”:1个或多个单词
  4. 字:确切字匹配
  5. “^”:0个或更多单词
  6. “*”:1个或多个单词
  7. 有关详细信息,请参阅AIML 2.0 working draft,特别是章节 5.A.Zero或更多单词通配符,以获取通配符和优先级说明。

答案 1 :(得分:1)

Alice网站有关于如何确定优先级的以下注释:

  
      
  1. 在每个节点,“_”具有第一优先级,原子字匹配第二优先级,“*”匹配最低优先级。

  2.   
  3. 模式不需要按字母顺序排序,只需部分排序,以便“_”出现在任何单词之前,“*”出现在任何单词之后。

  4.   
  5. 匹配是逐字逐句,而不是逐个类别。

  6.   
  7. 该算法将输入模式,模式和模式组合成单个“路径”或句子,例如:“PATTERN    那个主题“并且对待令牌和   像普通的话。 PATTERN,THAT和TOPIC模式可能包含   多个通配符。

  8.   
  9. 匹配算法是深度优先搜索的高度限制版本,也称为回溯。

  10.   
  11. 您可以通过删除“_”通配符来简化算法,并仅考虑后两步。也尝试了解   没有和的PATTERNs的简单情况。

  12.   

From Alicebot.org

基于此,您可以使用'_'来提供一些总统。请看以下示例:

<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 :(得分:1)

Hope this helps you

定义AIML 1.0通配符*和_,以便它们匹配一个或多个单词。 AIML 2.0引入了两个新的通配符^和#,定义为匹配零个或多个单词。作为简写描述,我们将这些称为“零+通配符”。 ^和#都被定义为匹配0个或更多个单词。它们之间的差异与*和_之间的差异相同。 #matching运算符在匹配时具有最高优先级,后跟_,后跟精确的单词匹配,后跟^,最后*具有最低的匹配优先级。 定义零+通配符时,有必要考虑通配符匹配长度为零时(以及和)的值。在AIML 2.0中,我们将其留给了botmaster。每个机器人都可以拥有一个名为nullstar的全局属性,botmaster可以将其设置为“”,“unknown”或任何其他值。 What’s new in AIML 2.0?

相关问题