Artificial intelligence 如何从AIML中的特定映射值中获取密钥值?
我开始学习一些AIML,现在我完全迷路了 我正在研究地图,但我想不出一个算法来解决这个问题。 比如说,我有一张地图,其中存储着我朋友的头发颜色。类似马库斯的东西:棕色 现在让我们假设我想得到所有头发颜色是棕色的名字。比如: 人类:你能告诉我棕色头发的朋友的名字吗 机器人:马克斯·凯文·托马斯 编辑:做了一些研究,我发现很多用户在网站上创建了一个地图,我的意思是,person:hair,hair:person。但是如果我有不同的人有相同的颜色,地图会返回第一个吗?我怎么能得到所有的 我怎么能这么做Artificial intelligence 如何从AIML中的特定映射值中获取密钥值?,artificial-intelligence,aiml,Artificial Intelligence,Aiml,我开始学习一些AIML,现在我完全迷路了 我正在研究地图,但我想不出一个算法来解决这个问题。 比如说,我有一张地图,其中存储着我朋友的头发颜色。类似马库斯的东西:棕色 现在让我们假设我想得到所有头发颜色是棕色的名字。比如: 人类:你能告诉我棕色头发的朋友的名字吗 机器人:马克斯·凯文·托马斯 编辑:做了一些研究,我发现很多用户在网站上创建了一个地图,我的意思是,person:hair,hair:person。但是如果我有不同的人有相同的颜色,地图会返回第一个吗?我怎么能得到所有的 我怎么能这么做
提前感谢。除非您设置如下地图,否则使用地图无法实现此目的:
[
["brown", "Markus, David, Thomas"],
["black", "Stephen, Paul"],
["blonde", "Simon"]
]
[
["brown", "Markus, David, Thomas"],
["black", "Stephen, Paul"],
["blonde", "Simon"]
]
<category>
<pattern>WHO HAS * HAIR</pattern>
<template>
<map name="hair"><star/></map>
</template>
</category>
这可能是大量的手工工作,并不实际。当我使用这样的简单数据库时,我会将每个条目设置为自己的类别:
<category>
<pattern>XFRIEND 1</pattern>
<template>
<think>
<set name="friend">Markus</set>
<set name="hair">brown</set>
<set name="eyes">blue</set>
<set name="likes">pizza</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 2</pattern>
<template>
<think>
<set name="friend">Kevin</set>
<set name="hair">black</set>
<set name="eyes">brown</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 3</pattern>
<template>
<think>
<set name="friend">Thomas</set>
<set name="hair">brown</set>
<set name="eyes">green</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 4</pattern>
<template>
<think>
<set name="friend">David</set>
<set name="hair">black</set>
<set name="eyes">blue</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>WHO HAS * HAIR</pattern>
<template>
<think>
<set name="searchfor"><star/></set>
<learn>
<category>
<pattern>XCHECKMATCH</pattern>
<template>
<condition name="hair">
<li><value><get name="searchfor"/></value>
<set name="list"><get name="list"/><br/><get name="friend"/></set>
</li>
</condition>
</template>
</category>
</learn>
</think>
<srai>XSCANFRIENDSDATABASE</srai>
</template>
</category>
然后创建一个类别,该类别将扫描并检查每个条目:
<category>
<pattern>XSCANFRIENDSDATABASE</pattern>
<template>
<think>
<set name="list">Results:<br/></set>
<srai>XFRIEND 1</srai>
<srai>XCHECKMATCH</srai>
<srai>XFRIEND 2</srai>
<srai>XCHECKMATCH</srai>
<srai>XFRIEND 3</srai>
<srai>XCHECKMATCH</srai>
<srai>XFRIEND 4</srai>
<srai>XCHECKMATCH</srai>
</think>
<get name="list"/>
</template>
</category>
现在我们已经建立了数据库,让我们看看如何使用它。我想知道,谁有什么颜色的头发。我们可以使用此类别执行此操作:
<category>
<pattern>XFRIEND 1</pattern>
<template>
<think>
<set name="friend">Markus</set>
<set name="hair">brown</set>
<set name="eyes">blue</set>
<set name="likes">pizza</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 2</pattern>
<template>
<think>
<set name="friend">Kevin</set>
<set name="hair">black</set>
<set name="eyes">brown</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 3</pattern>
<template>
<think>
<set name="friend">Thomas</set>
<set name="hair">brown</set>
<set name="eyes">green</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>XFRIEND 4</pattern>
<template>
<think>
<set name="friend">David</set>
<set name="hair">black</set>
<set name="eyes">blue</set>
<set name="likes">burgers</set>
</think>
</template>
</category>
<category>
<pattern>WHO HAS * HAIR</pattern>
<template>
<think>
<set name="searchfor"><star/></set>
<learn>
<category>
<pattern>XCHECKMATCH</pattern>
<template>
<condition name="hair">
<li><value><get name="searchfor"/></value>
<set name="list"><get name="list"/><br/><get name="friend"/></set>
</li>
</condition>
</template>
</category>
</learn>
</think>
<srai>XSCANFRIENDSDATABASE</srai>
</template>
</category>
因此,在您的查询中,谁有棕色头发,谓词searchfor设置为brown,因为这就是我们正在搜索的内容
然后,我们使用该标记设置一个名为XCHECKMATCH的临时类别,该类别查看数据库中每个条目中头发的值,并将其与searchfor进行比较。如果匹配,则将其添加到列表中
设置完成后,我们扫描数据库并显示结果
人类-谁有棕色头发?
Bot-结果:
马库斯
托马斯
作为此功能的高级使用,我们还可以检查多个项目。例如,谁有黑头发,喜欢吃汉堡
<category>
<pattern>WHO HAS * HAIR AND LIKES *</pattern>
<template>
<think>
<set name="searchfor"><star/> <star index="2"/></set>
<learn>
<category>
<pattern>XCHECKMATCH</pattern>
<template>
<think><set name="found"><get name="hair"/> <get name="likes"/></set></think>
<condition name="found">
<li><value><get name="searchfor"/></value>
<set name="list"><get name="list"/><br/><get name="friend"/></set>
</li>
</condition>
</template>
</category>
</learn>
</think>
<srai>XSCANFRIENDSDATABASE</srai>
</template>
</category>
在本例中,searchfor变为黑色汉堡。我们设置了一个名为find what the database haven find的新谓词。这是由以下内容组成的,我们再次扫描数据库以查看匹配的内容:
人类-谁有黑头发,喜欢汉堡?
结果:凯文
大卫
我经常使用这种数据库方法来回答疯狂的问题,比如火车比蜗牛快吗?。在这个示例中,创建类别是没有意义的,因此数据库方法更有用,更易于维护
如果这超出了您需要的级别,则需要使用以下地图和类别:
[
["brown", "Markus, David, Thomas"],
["black", "Stephen, Paul"],
["blonde", "Simon"]
]
[
["brown", "Markus, David, Thomas"],
["black", "Stephen, Paul"],
["blonde", "Simon"]
]
<category>
<pattern>WHO HAS * HAIR</pattern>
<template>
<map name="hair"><star/></map>
</template>
</category>
然而,这远远没有使用数据库样式结构的灵活性
人类-谁有棕色头发
博特-马库斯,大卫,托马斯
不过,如果您打算这样做,不妨这样做:
<category>
<pattern>WHO HAS BROWN HAIR</pattern>
<template>
Markus, David, Thomas.
</template>
</category>
希望这是有道理的。如果您需要我澄清,我很乐意澄清。嘿!我想我已经理解了你的答案,这正是我想要的。然而,我不能在我的研究中使用它,因为它对于我们的水平来说仍然太复杂了,但我真的很欣赏它。除此之外,我想让你知道,我在大学里研究过你的项目,它们令人难以置信。能得到像你这样的人的回答真是一种荣幸。非常感谢你!谢谢你的客气话。我修改了我的答案,加入了一个简单得多但不够灵活的方法。。如果在数据库中找不到数据,如何添加条件例如:谁有红头发?如果找不到结果,列表的值将是results:因此您可以检查:没有人有头发。