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

Artificial intelligence 在AIML中,我可以优先考虑模式匹配吗,artificial-intelligence,aiml,Artificial Intelligence,Aiml,在AIML中,如果有多个文件匹配同一模式,如何在一个文件中赋予匹配优先级?Alice站点对如何确定优先级有以下说明: 在每个节点上,“\u1”具有第一优先级、原子字匹配第二优先级和“*”匹配最低优先级 模式不需要按字母顺序排列,只需按部分顺序排列,以便在任何单词之前加上“u”,在任何单词之后加上“*” 匹配是逐字进行的,而不是按类别进行的 该算法将输入模式、模式和模式组合成一个“路径”或句子,如:“模式” 该主题“并处理令牌和 就像平常的话。模式和主题模式可能包含 多个通配符 匹配算法是高度受限

在AIML中,如果有多个文件匹配同一模式,如何在一个文件中赋予匹配优先级?

Alice站点对如何确定优先级有以下说明:

  • 在每个节点上,“\u1”具有第一优先级、原子字匹配第二优先级和“*”匹配最低优先级

  • 模式不需要按字母顺序排列,只需按部分顺序排列,以便在任何单词之前加上“u”,在任何单词之后加上“*”

  • 匹配是逐字进行的,而不是按类别进行的

  • 该算法将输入模式、模式和模式组合成一个“路径”或句子,如:“模式” 该主题“并处理令牌和 就像平常的话。模式和主题模式可能包含 多个通配符

  • 匹配算法是高度受限的深度优先搜索,也称为回溯

  • 您可以通过删除“u”通配符并只考虑后两个步骤来简化算法。还要试着理解 没有和的模式的简单情况

  • 基于此,你可以用“u”来表示某种主持。以以下为例:

    <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> 
    
    
    _酒吧
    哪个酒吧?
    富吧
    你不是说福巴吗?这是一个古老的军事缩略语,大致翻译为“破碎”。我不能直接翻译,因为我不会诅咒。
    *酒吧
    有很多酒吧。有一家酒吧,一家州立酒吧,一家酒馆和一家美食酒吧。
    

    \uu
    优先匹配。简单的
    是第二优先级,而
    *
    是最后一优先级。

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

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

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

  • “$”:表示单词现在具有比“\ux”更高的匹配优先级
  • “#”:0个或更多单词
  • “_”:一个或多个单词
  • 单词:精确的单词匹配
  • “^”:0个或更多单词
  • “*”:一个或多个单词
  • 有关详细信息,请参见第5.A章。零个或多个单词通配符用于通配符和优先级描述。

    AIML 1.0通配符*和u的定义使它们与一个或多个单词匹配。AIML 2.0引入了两个新的通配符“^和#”,定义为匹配零个或多个单词。简而言之,我们将其称为“零+通配符”。 ^和#都定义为匹配0个或多个单词。它们之间的区别与*和x之间的区别相同。#匹配运算符在匹配中具有最高优先级,其次是#,然后是精确的单词匹配,最后是^,最后*具有最低的匹配优先级。 当定义一个零+通配符时,必须考虑通配符匹配具有零长度时的值(以及以及值)。在AIML2.0中,我们将此问题留给botmaster。每个bot都可以有一个名为nullstar的全局属性,botmaster可以将该属性设置为“未知”或任何其他值。

    有没有办法匹配一组单词中的任何一个?例如,你可以[跳|喊|跑],还是我必须为它们定义三个不同的规则?是的,使用标记。在您的示例中,将一个名为“moves.txt”(或其他)的文件放入bot的“sets”目录。你的模式是“你会动吗?”。在这里重用关键字“set”是不直观的,因为“set”现在在不同的上下文中意味着不同的东西。但他们就是这么做的。