Prolog 中的聊天机器人

2024-04-12

我一直在尝试在序言中创建一个聊天机器人(作为作业),到目前为止,我已经在 .pl 文件中创建了一个数据库,并且列出了很多可能的对话。 我知道序言是这样工作的,例如如果我们有

Chatbot(good) 

然后我们输入

?-Chatbot(good). 

它会回应

yes or ture.

现在我不知道如何使用我的数据库,以便该程序可以完全像聊天机器人一样工作,而无需使用适当的语法编写:

Hello (typed by the user)

Hi there, (typed by the program automatically)

我的数据库是这样的:

answer( question, [
[Yes, I am here]]).

question ([are you there?]) 

原型chatbot http://en.wikipedia.org/wiki/Chatterbot我知道的是ELIZA http://en.wikipedia.org/wiki/ELIZA魏森鲍姆 1966 年。

在 Prolog 中实现它相当简单,如下所示Prolog 的艺术由斯特林和夏皮罗撰写。

谷歌搜索“ELIZA Prolog”,第一个链接给你一个相当复杂的执行 http://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/eliza.pl,您可以根据您的数据库调整/重用该引擎。但这样你就会失去所有的乐趣。我建议你阅读这本书并花时间来实现你自己的。

edit

以防万一您还没看过,SWISH 提供干净、准系统的 ELIZA https://swish.swi-prolog.org/example/eliza.pl执行之间它的例子 https://swish.swi-prolog.org/example/examples.swinb.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prolog 中的聊天机器人 的相关文章

  • 结束对话 C# 机器人

    我正在用 C 构建一个聊天机器人 我希望在一些消息之后对话停止 但我不知道该怎么做 我已经设置了消息限制 并且我希望在达到此限制后不能再发送消息 有我的代码 private int NombreDeMessages protected ov
  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • Prolog 程序从列表中删除每个第 n 个元素

    您能帮我解决以下问题吗 编写三元谓词delete nth从列表中删除每个第 n 个元素 样本运行 delete nth a b c d e f 2 L L a c e false delete nth a b c d e f 1 L L f
  • 在 Prolog 中编辑 Eliza 聊天机器人

    我一直在努力尝试在 Prolog 中编辑 Eliza 聊天机器人 每次我尝试编辑某些内容时 都会出现新的错误 它是否受到任何形式的编辑保护 我使用 SWI prolog 编辑器进行编辑 问题是我试图在没有完全理解代码的情况下最小化代码 我正
  • 我们可以动态添加文本字段吗

    我在我的聊天机器人中创建了一个自适应卡 使用 json 它接受用户的输入 我想添加一个按钮 使用户每次单击插入字段时都可以添加新的文本字段 即 用户可以单击插入按钮输入教育详细信息 学校 学院等 这可以在自适应卡中实现吗 我也想知道 自适应
  • 如何使用 Prolog 查找二叉树的深度

    我正在学习 Prolog 并试图找到一个深度二叉树使用 Prolog 我代表一棵树是这样的 nil is a tree tree 1 nil nil this is a leaf tree 1 tree 1 nil nil nil this
  • 获取 Prolog 中的解决方案列表

    我正在学习 Prolog 并且正在阅读一本名为 人工智能 Prolog 编程 的书 作为练习 我想学习如何扩展本书中的示例之一 有人可以帮忙吗 假设您有以下事实 parent pam bob pam is a parent of bob p
  • AllegroGraph 检查现有三元组

    我正在使用 AllegroGraph 4 我有一个三元组存储 并且只有在新的三元组尚不存在时我才会尝试添加它们 这是我的 Prolog 查询 select news alfas news a news tst has annotation
  • Prolog - 删除非唯一元素

    我有一个谓词来检查元素是否是列表的成员 并且看起来如下 member X X member X T member X T 当我打电话时 member 1 2 3 1 4 我明白了 是的 现在我必须使用它来编写谓词 该谓词将从列表列表中删除所
  • 如何在 Prolog 中求反

    我是 PROLOG 新手 正处于练习的开始阶段这一页 https sites google com site prologsite prolog course a first glimpse 给定规则parent X Y 和male X 我
  • 如何在 Prolog 中为变量(如字符串)分配多个值?

    今天早些时候 我寻求帮助以在序言中构建数据库以及如何通过参数搜索 有人提出了这个 您还可以向每个处理器添加术语列表 例如 processor pentium g4400 brand intel family pentium series g
  • 聊天机器人未在 Microsoft Teams 中发回消息

    对于一个天蓝色的聊天机器人 我希望它在回答后问我一个简单的问题 这样我就可以提供反馈作为回报 我正在使用HeroCard class dialog private async Task ShowWeatherResult IDialogCo
  • Dialogflow @sys.email 实体无法识别电子邮件

    在我的意图中 我希望用户提供他 她的电子邮件地址 我尝试使用 sys email实体从训练短语中识别电子邮件 但它不识别电子邮件地址 可能是什么问题 当我在网上搜索时 我看到一些谷歌群组中有人提出类似的问题 但找不到答案 EDIT 这是意图
  • 井字游戏的极小极大

    我正在尝试用简单的极小极大算法来解决井字游戏 简单 但应该涵盖很多语言 到目前为止我所拥有的 该板表示为 9 个 未绑定 变量的数组 这些变量可以设置为x or o 获胜条件基本上是 win Player X1 X2 X3 X1 Playe
  • 为什么在具体化中将 clpfd 变量分配给实际值?

    我正在开发一个 SWI Prolog 程序 该程序使用 CLP FD 约束来找到特定问题的解决方案 为此 我碰巧需要两个列表的 未定位 重叠 那是 List La长度为A List Lb长度为 B A gt B 未定位的重叠列表是La Lb
  • 非成员规则在 Prolog 中无法按预期工作

    我正在尝试在 Prolog 中创建一个迷宫程序 其目的是找到一条从迷宫起点到迷宫中心点 m 的路线 迷宫由使用四种颜色之一连接的正方形组成 蓝色 绿色 紫色或橙色 从起点到中心的路线遵循四种颜色的重复图案 我创建了以下代码 link2 A
  • Prolog 实现 and/2、or/2、nand/2、nor/2、xor/2 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在序言中实现以下谓词并将它们用于真值表 and 2 or 2 nand 2 nor 2 xor 2 也许有人可以告诉我如何实现和
  • 在列表列表中查找形状

    节目说明 该计划的目的 我的程序旨在计算 20X15 大小的平面中形状的位置 我有一个形状列表 其中包含形状类型 其 ID 半径或高度以及其在平面上的预期 X Y 位置 我有一个不同的二元运算列表 仅包含形状类型 其 id 及其与另一个形状
  • 转换句子会产生无限循环 - 但如何转换呢?

    我不明白这是哪里出了问题 请注意 我对 Prolog 很陌生 我确信我错过了一些东西 只是不知道那可能是什么 有人可以帮我吗 谢谢 这是我的代码 printSentence printSentence W write W write nl
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序

随机推荐

  • Minecraft 插件 ScheduleSyncDelayedTask 错误

    我遇到了一个问题 并且在制作 Minecraft 插件和编写一般代码方面还很陌生 我正在尝试制作一个插件 在执行第二个命令之前等待大约 15 秒 但是当我尝试执行 plugin new Runnable 时 我现在的代码出现错误 我做了一些
  • Windows Phone 的捏合和缩放行为

    是否可以在 Windows Phone 8 中创建捏合和缩放到图像控件的行为 我正在尝试在我的应用程序中将捏合和缩放以及旋转应用到图像 在一个论坛中 我发现手势侦听器已被弃用 并且他们不提倡使用手势来实现 那么有人可以为我建议一种替代方法吗
  • 重新安装应用程序后 UILocalNotification 触发

    我的应用程序有一个使用 UILocalNotification 的闹钟功能 并且效果很好 但是 如果用户卸载该应用程序 然后重新安装它 他将立即收到所有 中间 通知 我曾尝试致电 UIApplication sharedApplicatio
  • SwiftUI ProgressView 在列表内时不显示

    在下面的简单示例中 您会发现第一次点击时Toggle Loading the ProgressView按应有的方式显示 但第二次 第三次点击 却没有显示 看来是周围的List造成的 有什么想法以及如何使其发挥作用吗 struct Conte
  • 使用 Java 使用 BouncyCastle 生成 X509Certificate

    这就是我现在生成数字证书的方法 现在我可以生成一个带有私钥密码保护的数字证书 public static void main String args throws Exception Security addProvider new Bou
  • WPF 自定义路由事件 - 如何取消订阅?

    如何从一个自定义路由事件中注销 我有以下代码 非常标准的自定义路由事件 Dispatch the Video Detection Movements public delegate void MovementRoutedEventHandl
  • 使用 r 正则表达式删除第一个数字后的字符串

    如何删除字符串第一个数字之后包含的所有内容 x lt c Hubert 208 apt 1 Mass Av 300 block 3 After 这个问题 https stackoverflow com questions 37666077
  • Cygwin 的 bash 出错后变得极其缓慢

    我意识到还有一些关于为什么 Cygwin 明显很慢的问题 但这个案例似乎很独特 我遇到了一些问题 报告了很多错误 然后重新启动后 从 bash 启动的任何进程都非常慢 老实说 我不知道是什么原因造成的 我检查了taskmgr中的进程优先级
  • C# 广播是UDP消息,监听多个回复

    我正在尝试编写一些执行 UDP 广播的代码 然后侦听来自远程服务器的答复 说明它们存在 它用于识别子网上运行服务器应用程序的计算机 因此基本上会发出 谁在那儿 并听取所有答复 我在 Java 中有这个 工作完美 它将 DatagramPac
  • 导入 CSS 最终出现错误

    最近我进入了这个网站 http thecodeplayer com 并发现了几个非常酷的设计 但在其中一些设计中 在 CSS 部分中有一段用于导入的代码片段 如下所示 import url http fonts googleapis com
  • 发送密钥后 Selenium WebElement 值为空

    我正在运行一些简单的表单测试 其中值是添加的字段 将每个值添加到字段后 input SendKeys value 我想检查该字段中的值是否正确 这听起来可能很不寻常 但该字段可能附加了 ajax 搜索 如果搜索没有返回匹配项 则该字段将为空
  • 如何在使用旧版本 gcc 的系统上动态链接到 libc.so.6、libstdc++.so.6 的本地副本

    我的代码是用 c 2011 编写的 并用 g 4 8 编译的 但是 我的系统管理员不会从 gcc g 4 1 升级计算集群 我收到以下错误 lib64 libc so 6 version GLIBC 2 14 not found requi
  • 如何检测文件名中的常见字符串组

    我正在尝试找出一种检测文件组的方法 例如 如果给定目录有以下文件 生日001 jpg 生日002 jpg 生日003 jpg Picknic1 jpg Picknic2 jpg 下午 jpg 我想将列表压缩为类似的内容 生日 3张 野餐 2
  • 在 Matlab 中按下某个键停止无限 while 循环

    我有一个无限的 while 循环 我想在按下键盘按键时停止它 伪代码 While 1 do stuff listening for key if key is pressed break end end 功能waitforbuttonpre
  • 使用JQUERY/JSON自动填充选择下拉框

    好吧 我花了很多时间查看示例 但找不到一个对我的情况有足够帮助的示例 我有一个 JSON 文件 对此示例进行了简化 Company Position Manager Name 11 joe 12 bill 166 John Position
  • 在没有“new List”的情况下初始化列表属性会导致 NullReferenceException

    using System using System Collections Generic class Parent public Child Child get set class Child public List
  • 您可以用 PHP 将送货地址传递给 Stripe Checkout 吗?

    我在用着Stripe 结帐 API https stripe com docs checkout integration builder指导网站用户付款 有没有办法将送货地址传递到托管结帐页面 以便从推荐人而不是 Stripe 本身收集该地
  • 如何使用 jquery 检测 IE11 [重复]

    这个问题在这里已经有答案了 我有代码 browser 来检测浏览器 并根据结果确定一些布局样式 但现在有了 ie 11 browser 将提供 mozilla v 11 有什么修复建议吗 尝试这个 var isIE11 navigator
  • 正则表达式太贪婪了

    我正在尝试编写一个正则表达式 但它太贪心了 输入字符串可以采用以下格式之一 STUFF 12 1234 or STUFF 1234 我想要做的是创建一个正则表达式来抓取最后一个之后的字符 所以在上面的例子中 这将是数字 1234 最后一个之
  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回