AIML Parser PHP

时间:2016-12-26 17:01:14

标签: parsing aiml

我正在尝试开发人造机器人我发现AIML是可用于实现这一目标的东西我发现这些关于AIML解析的点由Program-O完成

1。)输入中的所有字母都转换为大写字母 2.)所有标点符号都被删除并替换为空格 3.)删除额外的空白聊天,包括标签,

从那里,程序O在数据库中执行搜索,查找输入的所有可能匹配,包括通配符。然后对返回的结果进行“评分”以获得相关性,并选择“最佳匹配”。程序O然后从选定的结果处理AIML,并将完成的产品返回给用户。

我只是想知道如何定义分数并找到最接近用户输入的相关答案

任何帮助或想法将不胜感激

1 个答案:

答案 0 :(得分:1)

@ user3589042(相当繁琐的名字,你不觉得吗?)

我是Dave Morton,是程序O的首席开发人员。很抱歉,在您提出问题时我错过了这个。它今天才引起我的注意。

程序O对从数据库中提取的潜在匹配的评分方式如下:

  1. aiml_userdefined表的回复吗?是= 300 /无= 0
  2. 是这个机器人的类别,还是它的父类(如果有的话)?此= 250 /父= 0
  3. 模式是否有一个或多个下划线(_)通配符?是= 100 /无= 0
  4. 当前类别是否有<topic>标记?是(见下文)/否= 0

    一个。 <topic>是否包含一个或多个下划线(_)通配符?是= 80 /无= 0

    <topic>是否与当前主题直接匹配?是= 50 /无= 0

    ℃。 <topic>是否包含星号(*)通配符?是= 10 /无= 0

  5. 当前类别是否包含<that>标记?是(见下文)/否= 0

    一个。 <that>是否包含一个或多个下划线(_)通配符?是= 45 /无= 0

    <that>是否与当前主题直接匹配?是= 15 /无= 0

    ℃。 <that>是否包含星号(*)通配符?是= 2 / NO = 0

  6. <pattern>是否与用户输入直接匹配?是= 10 /无= 0

  7. <pattern>是否包含一个或多个星号(*)通配符?是= 1 /否= 0

  8. <pattern>是否与配置中的默认AIML模式匹配?是= 5 /无= 0

  9. 然后,脚本将上面列出的所有通过的测试相加,并为类别<pattern>中的每个单词添加一个点,该单词也匹配用户输入中的单词。得分最高的AIML类别被认为是“最佳匹配”。如果出现平局,脚本将根据配置设置选择“第一个”最高得分类别,“最后一个”或随机选择一个。然后将此选定类别返回到其他函数以解析XML。

    我希望这能回答你的问题。