@user3589042(相当麻烦的名字,你不觉得吗?)
我是程序 O 的首席开发人员 Dave Morton。很抱歉,在您提出问题时我错过了这个。今天才引起我的注意。
Program O 对从数据库中提取的潜在匹配进行评分的方式是:
- 是表的回应
aiml_userdefined
吗?是=300/否=0
- 是这个机器人的类别,还是它的父级(如果有的话)?这=250/父=0
- 模式是否有一个或多个下划线 (_) 通配符?是=100/否=0
当前类别有<topic>
标签吗?是(见下文)/否=0
一个。是否<topic>
包含一个或多个下划线 (_) 通配符?是=80/否=0
湾。是否<topic>
直接匹配当前主题?是=50/否=0
C。是否<topic>
包含星号 (*) 通配符?是=10/否=0
当前类别是否包含<that>
标签?是(见下文)/否=0
一个。是否<that>
包含一个或多个下划线 (_) 通配符?是=45/否=0
湾。是否<that>
直接匹配当前主题?是=15/否=0
C。是否<that>
包含星号 (*) 通配符?是=2/否=0
是否与<pattern>
用户输入直接匹配?是=10/否=0
是否<pattern>
包含一个或多个星号 (*) 通配符?是=1/否=0
是否与<pattern>
配置中的默认 AIML 模式匹配?是=5/否=0
然后,该脚本将上面列出的所有通过的测试相加,并为类别中的每个单词添加一个点,该点<pattern>
也与用户输入中的一个单词相匹配。得分最高的 AIML 类别被认为是“最佳匹配”。如果出现平局,脚本将根据配置设置选择“第一个”得分最高的类别、“最后一个”或随机的一个。然后将此选定的类别返回给其他函数以解析 XML。
我希望这回答了你的问题。