马尔可夫链聊天机器人如何工作?

2023-12-28

我正在考虑使用马尔可夫链之类的东西创建一个聊天机器人,但我不完全确定如何让它工作。据我了解,您可以根据给定单词和后面的单词的数据创建一个表格。在训练机器人时是否可以附加任何类型的概率或计数器?这是个好主意吗?

问题的第二部分是关键字。假设我已经可以从用户输入中识别关键字,如何生成使用该关键字的句子?我并不总是想以关键字开始句子,那么如何播种马尔可夫链呢?


几年前,我用 Python 为 IRC 制作了一个马尔可夫链聊天机器人,可以透露一些我是如何做到的。生成的文本不一定有意义,但读起来确实很有趣。让我们分步骤分解它。假设你有一个固定的输入,一个文本文件,(你可以使用聊天文本或歌词的输入,或者只是发挥你的想象力)

循环文本并制作一个字典,意思是键-值容器。并将所有单词对作为键,将后面的单词作为值。 例如:如果你有一个文本“a b c a b k”,则以“a b”作为键,“c”作为值,然后“b c”和“a”作为值......该值应该是一个列表或任何包含 0 的集合..许多“项目”,因为给定的一对单词可以有多个值。在上面的示例中,您将出现两次“a b”,然后是“c”,最后是“k”。所以最后你将得到一个如下所示的字典/哈希:{'a b': ['c','k'], 'b c': ['a'], 'c a': ['b']}

现在您已经拥有了构建时髦文本所需的结构。您可以选择从随机密钥或固定位置开始!因此,给定我们拥有的结构,我们可以首先保存“a b”,然后从值 c 或 k 中随机取出后续单词,因此循环中的第一个保存是“a b k”(如果“k”是选择的随机值)然后你继续向右移动一步,在我们的例子中是“b k”,并为该对保存一个随机值(如果你有,在我们的例子中没有),这样你就可以跳出循环(或者你可以决定其他东西,比如从头再来)。循环完成后,您将打印保存的文本字符串。

输入越大,您的键(单词对)的值就越多,然后就会有一个“更智能的机器人”,这样您就可以通过添加更多文本(也许是聊天输入?)来“训练”您的机器人。如果你有一本书作为输入,你可以构造一些漂亮的随机句子。请注意,您不必仅采用一对后面的一个单词作为值,您可以采用 2 个或 10 个单词。不同之处在于,如果您使用“更长”的构建块,您的文本会显得更准确。以一对作为键,后面的单词作为值开始。

所以你会发现你基本上可以有两个步骤,首先创建一个结构,你随机选择一个键开始,然后获取该键并打印该键的随机值,然后继续,直到没有值或其他条件为止。如果您愿意,您可以从键值结构的聊天输入中“播种”一对单词来开始。如何开始你的连锁店取决于你的想象力。

用真实的单词举例:

"hi my name is Al and i live in a box that i like very much and i can live in there as long as i want"

"hi my" -> ["name"]

"my name" -> ["is"]

"name is" -> ["Al"]

"is Al" -> ["and"]

........

"and i" -> ["live", "can"]

........

"i can" -> ["live"]

......

现在构造一个循环:

选择一个随机键,说“嗨,我的”并随机选择一个值,这里只有一个,所以它是“名称”(保存“嗨,我的名字”).
现在向右移动一步,将“我的名字”作为下一个键,然后选择一个随机值...“是”(保存“嗨,我的名字是”).
现在移动并取“名字是”...“Al”(保存“嗨,我的名字是 AL”).
现在采取“是阿尔”...“和”(保存“嗨,我的名字是阿尔和”).

...

当你来到“and i”时,你会随机选择一个值,比如说“can”,然后“i can”这个词就会出现,等等......当你达到停止条件或者你没有值时,打印构造的值在我们的例子中是字符串:

“嗨,我叫阿尔,我想住多久都可以”

如果您有更多值,您可以跳转到任何键。值越多,您拥有的组合就越多,文本就越随机、越有趣。

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

马尔可夫链聊天机器人如何工作? 的相关文章

  • 对停用词进行标记,生成的标记 ['ha', 'le', 'u', 'wa'] 不在 stop_words 中

    我正在使用 Python 制作一个聊天机器人 代码 import nltk import numpy as np import random import string f open home hostbooks ML stewy spee
  • 数独求解算法 C++

    我花了几天时间尝试制作一个数独解决程序 但我被这些方法所困扰 我在这里找到了这个算法 但我不太理解它 从第一个空单元格开始 并在其中输入 1 检查整个板子 看看是否有冲突 如果板上存在冲突 请将当前单元格中的数字加 1 因此将 1 更改为
  • 如何将 facebook 测试页面订阅到 facebook apps webhook

    我正在创建聊天机器人并想在 Facebook 上建立联系 我想在我的页面中测试我的信使聊天机器人 但我必须首先进行应用程序审查和业务验证 但我不想这样做 因为我刚刚开发了我的聊天机器人 或者你可以说这是暂存环境 I found that w
  • 自动同义词检测方法

    我目前正在研究一种基于神经网络的短文档分类方法 由于我正在使用的语料库通常在十个单词左右 因此标准统计文档分类方法的用途有限 因此 我正在尝试对训练中提供的匹配实施某种形式的自动同义词检测 更具体地说 我的问题是关于解决以下情况 假设我有
  • 简单的随机英语句子生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个简单的随机英语句子生成器 我需要用我自己的单词填充它 但它需要能够制作至少遵循英语规则的较长句
  • 学习游戏开发,有什么书推荐吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 这对蒙蒂·霍尔来说是好还是坏的“模拟”?怎么会? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过试图解释蒙蒂霍尔问题 http en wikipedia org wiki Monty Hall problem昨天在课堂上给一位朋友说 我
  • 我们可以动态添加文本字段吗

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

    我有一张带有水平线和垂直线的图像 事实上 这张图片是BBC网站转换成水平线和垂直线的 我的问题是我希望能够找到图像中的所有矩形 我想编写一个计算机程序来查找所有矩形 有谁知道如何做到这一点或提出有关如何开始的想法 作为一个人 这个任务对于我
  • 如何确定单词的概率?

    我有两份文件 Doc1 的格式如下 TOPIC 0 5892 0 site 0 0371690427699 Internet 0 0261371350984 online 0 0229124236253 web 0 021894093686
  • 以编程方式比较图像 - lib 或类 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 朴素洗牌的现实问题

    我正在写一些文章 旨在通过使用与扑克相关的主题来教授入门编程概念 目前 我正在研究洗牌的主题 As 杰夫 阿特伍德 Jeff Atwood 在 CodingHorror com 上指出 http www codinghorror com b
  • 在 Perl 中如何计算给定正态分布的点的概率?

    Perl 中是否有一个包可以让您计算每个给定点的概率分布高度 例如 这可以在 R 中以这种方式完成 gt dnorm 0 mean 4 sd 10 gt 0 03682701 即x 0点服从正态分布 mean 4 sd 10的概率为0 03
  • 聊天机器人未在 Microsoft Teams 中发回消息

    对于一个天蓝色的聊天机器人 我希望它在回答后问我一个简单的问题 这样我就可以提供反馈作为回报 我正在使用HeroCard class dialog private async Task ShowWeatherResult IDialogCo
  • 比较文本文档含义的最佳方法?

    我正在尝试找到使用人工智能和机器学习方法来比较两个文本文档的最佳方法 我使用了 TF IDF Cosine 相似度和其他相似度度量 但这会在单词 或 n gram 级别上比较文档 我正在寻找一种方法来比较meaning的文件 最好的方法是什
  • 如何将 Python 中的 MS Botframework 部署到 Azure

    我一直在玩 Botframework 并尝试从 git 上传示例代码https github com Microsoft botbuilder python tree master samples EchoBot with State ht
  • 论文中的概率密度函数,使用 C++ 实现,未按预期工作

    所以我正在实现一个启发式算法 并且我遇到了这个函数 我有一个 1 到 n 的数组 C 上的 0 到 n 1 w e 我想选择一些要复制到另一个数组的元素 给定参数 y 0 根据作者的说法 l 是一个随机数 0 所以我编写了函数的第一部分 对
  • 聊天机器人中的打字指示器

    Nodejs 中机器人框架的输入指示器 Hi 我正在使用 microsoft bot 框架 v4 node js 我需要在聊天机器人中实现输入 在发送原始响应之前 机器人应该像 一样响应 我在这里看到了代码使用 DirectLine 和网络
  • 用于神经网络模型预测的数据的缺失值

    我目前有大量数据将用于训练预测神经网络 美国主要机场的千兆字节天气数据 我几乎每天都有数据 但有些机场的数据中存在缺失值 例如 机场在 1995 年之前可能不存在 因此在此之前我没有该特定位置的数据 此外 有些还缺少整年 可能跨度为 199
  • F# 和模糊逻辑

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

随机推荐

  • 如何打印包含值的列

    假设我有一个包含以下内容的数据文件 1 2 3 4 5 67 88 12 32 22 9 99 34 59 86 17 0 78 0 77 11 0 0 0 43 我想要一个在每一列中搜索数字 0 的代码 如果找到数字 0 代码将在单独的文
  • 如何使 XmlnsDefinition 在本地程序集上工作?

    我开始使用 XmlnsDefinition 属性将一些 CLR 命名空间绑定到单个 xmlns 中 以便在 XAML 中使用 不幸的是 这似乎只在使用外部程序集时才有效 如果我在与我从 XmlnsDefinition 引用的命名空间中的类型
  • 似乎无法使用 Expo 的 Font.loadAsync 加载自定义字体

    我正在将 React Native 与 Expo 结合使用 除了自定义字体的问题之外 一切都很顺利 我有我的字体Lobster Regular ttf在 assets fonts 中 我一直在尝试加载它 如官方文档中所示 component
  • Android 风格微调器

    我正在努力让我的 Android 应用程序变得更时尚 并取得了一些进展 但旋转下拉菜单给我带来了麻烦 我有一个屏幕截图来向您展示问题 我想要的是背景中的白色框是透明的 就像在后屏幕上与下拉菜单之外的屏幕其余部分一样的灰色覆盖层中 如果我没记
  • kubernetes cronjob 并更新秘密

    下面是我的 python 脚本 用于更新密钥 以便我可以使用 kubectl 部署到 kubernetes 所以它工作得很好 但我想创建一个 kubernetes cron 作业 它将运行 docker 容器来更新 kubernetes 集
  • 无法在 Javadoc 注释中链接到 JDK10

    从 Java 9 升级到 10 后 使用 Javadoc 工具生成文档时 例如 对于导入文件 指向 JDK 的链接不再起作用java util Optional link Optional 呈现为Optional而不是作为Optional
  • 带有layout_width=matchparent 的TableLayout 不匹配父级

    我有一个包含两列和两行的 tableLayout 两行和最后一列的宽度都有 match parent 但布局没有填充父宽度 它的表现就像有 wrap content 一样 这是代码
  • Keras + TensorFlow:“模块‘tensorflow’没有属性‘merge_all_summaries’”

    非常类似于Keras tensorflow 给出错误 no attribute control flow ops https stackoverflow com questions 40046619 keras tensorflow giv
  • 如何扩展文本区域以垂直和水平适应文本?

    我怎样才能使用 html css 和 jquery 来做这样的事情 我发现这个问题根据内容长度调整文本区域大小 https stackoverflow com questions 995168 textarea to resize base
  • getMapAsync 错误 - Google 地图 api android

    因此 我尝试从 Json 文件在地图上显示标记 但它们没有出现 我已将其范围缩小到该行 map mapFragment getMapAsync this 它给了我错误 不兼容的类型 必需 com google android gms map
  • 在 Mac OS X 上使用 PCL(点云库)生成项目

    我按照其建议安装了所有依赖项和预编译的 PCL 库site http pointclouds org downloads macosx html 安装完所有内容后 我想生成一个项目如下this http pointclouds org do
  • GAE开发服务器重启后保留全文搜索索引吗?

    是否有办法强制 GAE 开发服务器在重新启动后保留全文搜索索引 我发现每当开发服务器重新启动时索引都会丢失 当我启动开发服务器时 我已经在使用静态数据存储路径 datastore path选项 此功能是在几个版本之前添加的 我认为是在 1
  • 我的项目在 IntelliJ IDEA 中的文件夹层次结构有什么问题吗?

    今天 当我打开我的项目时 我的文件夹层次结构出现了一些问题 您可以看到下面的内容 这里没有包 一般来说 公共文件夹层次结构应该是这样的 EDIT 我尝试重新打开该项目并重新打开我的 IntelliJ IDEA 两者都不起作用 Delete
  • 将坐标转换为城市名称?

    如何使用 MapKit 从坐标获取地址 我有这个代码 当长按地图时它会获取坐标 func didLongPressMap sender UILongPressGestureRecognizer if sender state UIGestu
  • 尝试同时编译多个 CUDA 文件时出现链接错误 LNK2005

    我有一个 CUDA 程序 可以正常工作 但目前全部写在一个文件中 我想将这个大文件分成几个较小的文件 以便更容易维护和导航 新的结构是 foo cuh foo cu bar cuh bar cu main cu The cuh头文件包含结构
  • 我想在 Yup 中转换值,但 Formik 没有返回正确的值

    我在表单 电子邮件 中有一个值 我想将其转换为小写 我在 Yup 中有一个转换正在工作 但 Formik 没有显示小写值 如何才能使当我以大写形式输入电子邮件时 它会自动转换为小写形式 这是我的代码 import React from re
  • 无法终止 SPID“事务回滚正在进行中”

    我的数据库中有一条处于永久回滚模式的未提交语句 当我尝试终止与此语句关联的 SPID 时 出现以下错误 事务回滚正在进行中 预计回滚完成 0 预计剩余时间 0 秒 此未提交的语句导致用户无法查看数据库的表 视图和过程树 如何停止这个 SPI
  • 在运行时加载 MP3 文件

    我正在尝试使用在运行时加载 mp3 文件WWW http docs unity3d com ScriptReference WWW htmlUnity中提供的类 我没有收到任何错误 但在处理歌曲后我无法播放音乐 我到处都找过了 但找不到任何
  • 在构造函数中设置变量数组的最小大小

    因此 我的编程教授希望我编写一个 Kingdom 类 其变量名至少有 12 个字符长 通常情况下 如果最小 12 个字符的不变量被破坏 人们只需使用 String 名称变量和错误消息来实现此类 就像 Java 中的这样 import jav
  • 马尔可夫链聊天机器人如何工作?

    我正在考虑使用马尔可夫链之类的东西创建一个聊天机器人 但我不完全确定如何让它工作 据我了解 您可以根据给定单词和后面的单词的数据创建一个表格 在训练机器人时是否可以附加任何类型的概率或计数器 这是个好主意吗 问题的第二部分是关键字 假设我已