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