我正在尝试开发人造机器人我发现AIML是可用于实现这一目标的东西我发现这些关于AIML解析的点由Program-O完成
1。)输入中的所有字母都转换为大写字母 2.)所有标点符号都被删除并替换为空格 3.)删除额外的空白聊天,包括标签,
从那里,程序O在数据库中执行搜索,查找输入的所有可能匹配,包括通配符。然后对返回的结果进行“评分”以获得相关性,并选择“最佳匹配”。程序O然后从选定的结果处理AIML,并将完成的产品返回给用户。
我只是想知道如何定义分数并找到最接近用户输入的相关答案
任何帮助或想法将不胜感激
答案 0 :(得分:1)
@ user3589042(相当繁琐的名字,你不觉得吗?)
我是Dave Morton,是程序O的首席开发人员。很抱歉,在您提出问题时我错过了这个。它今天才引起我的注意。
程序O对从数据库中提取的潜在匹配的评分方式如下:
aiml_userdefined
表的回复吗?是= 300 /无= 0 当前类别是否有<topic>
标记?是(见下文)/否= 0
一个。 <topic>
是否包含一个或多个下划线(_)通配符?是= 80 /无= 0
湾<topic>
是否与当前主题直接匹配?是= 50 /无= 0
℃。 <topic>
是否包含星号(*)通配符?是= 10 /无= 0
当前类别是否包含<that>
标记?是(见下文)/否= 0
一个。 <that>
是否包含一个或多个下划线(_)通配符?是= 45 /无= 0
湾<that>
是否与当前主题直接匹配?是= 15 /无= 0
℃。 <that>
是否包含星号(*)通配符?是= 2 / NO = 0
<pattern>
是否与用户输入直接匹配?是= 10 /无= 0
<pattern>
是否包含一个或多个星号(*)通配符?是= 1 /否= 0
<pattern>
是否与配置中的默认AIML模式匹配?是= 5 /无= 0
然后,脚本将上面列出的所有通过的测试相加,并为类别<pattern>
中的每个单词添加一个点,该单词也匹配用户输入中的单词。得分最高的AIML类别被认为是“最佳匹配”。如果出现平局,脚本将根据配置设置选择“第一个”最高得分类别,“最后一个”或随机选择一个。然后将此选定类别返回到其他函数以解析XML。
我希望这能回答你的问题。