Artificial intelligence 使用马尔可夫链(或类似的东西)生成IRC机器人

Artificial intelligence 使用马尔可夫链(或类似的东西)生成IRC机器人,artificial-intelligence,nlp,markov-chains,Artificial Intelligence,Nlp,Markov Chains,我试着用谷歌搜索,但几乎找不到我能理解的东西 我理解到一个非常基本的层面:这是一个数学模型,只依赖于以前的输入来改变状态。那么,这是一种具有加权随机机会而不是不同标准的FSM 我听说你可以用它们来生成半智能的废话,给定现有单词的句子作为各种字典使用 我想不出搜索词来找到这个,所以有人能把我联系起来,或者解释一下我是如何得出一个半智能的答案的吗?(如果你问它关于馅饼的事,它不会开始谈论它听说过的越南战争) 我计划: 让这个机器人在IRC通道中空闲一段时间 从字符串中去掉任何用户名,并存储为句子或

我试着用谷歌搜索,但几乎找不到我能理解的东西

我理解到一个非常基本的层面:这是一个数学模型,只依赖于以前的输入来改变状态。那么,这是一种具有加权随机机会而不是不同标准的FSM

我听说你可以用它们来生成半智能的废话,给定现有单词的句子作为各种字典使用

我想不出搜索词来找到这个,所以有人能把我联系起来,或者解释一下我是如何得出一个半智能的答案的吗?(如果你问它关于馅饼的事,它不会开始谈论它听说过的越南战争)

我计划:

  • 让这个机器人在IRC通道中空闲一段时间
  • 从字符串中去掉任何用户名,并存储为句子或其他形式
  • 随着时间的推移,将此作为上述内容的基础

您想要查找Ian Barber文本生成(phpir.com)。不幸的是,该网站已关闭或脱机。我有一份他的文本,我想把它发给你。

是的,马尔可夫链是一个具有概率状态转换的有限状态机。要使用简单的一阶马尔可夫链生成随机文本:

  • 从语料库(文本集合)收集二元结构(相邻词对)统计数据
  • 制作一个马尔可夫链,每个单词有一个状态。为文本结尾保留特殊状态
  • 从状态/单词x跳到y的概率是单词y紧跟在x之后的概率,根据训练语料库中的相对二元词频率估计
  • 从一个随机单词x开始(可能取决于该单词作为语料库中句子的第一个单词出现的频率)。然后选择一个要随机跳转到的状态/单词y,考虑y跟随x的概率(状态转移概率)。重复此操作,直到到达文本的末尾
  • 如果你想从中得到一些半智能的东西,那么你最好的办法就是在大量仔细收集的文本上训练它。“抽签”部分使其很有可能产生恰当的句子(或似是而非的IRC语言);“仔细收集”的部分意味着你可以控制它所说的内容。引入高阶马尔可夫链也有助于这两个方面,但需要更多的存储来存储必要的统计数据。您还可以研究统计平滑之类的问题

    然而,要让你的IRC机器人真正响应所说的话,需要比马尔可夫链多得多的时间。这可以通过对所说的内容进行(又名主题识别)来完成,然后选择一个特定于域的马尔可夫链来生成文本。天真的Bayes是一种流行的主题识别模型


    Kernighan和Pike在中探讨了马尔可夫链算法的各种实现策略。Jurafsky和Martin对这些以及自然语言的生成进行了深入的研究。

    在我看来,您正在同时尝试多种方法:

  • 在IRC中通过空闲提取单词/句子
  • 建立知识库
  • 听一些聊天,解析关键词
  • 生成一些关于关键字的句子
  • 这些基本上是非常不同的任务。马尔可夫模型通常用于机器学习。不过,我看不到你在工作中学到多少东西

    larsmans的答案显示了如何从基于单词的马尔可夫模型生成句子。您还可以训练权重,使其有利于其他IRC用户使用的词对。但尽管如此,这不会生成与关键字相关的句子,因为构建/细化马尔可夫模型与“驱动”它不同


    您可以尝试使用隐马尔可夫模型(HMM),其中可见的输出是关键字,而隐藏状态是由这些词对构成的。然后,你可以选择更适合特定关键字的句子。我非常确定我知道如何做或可以做的是1、2和3。4是我想要的马尔可夫链。非常感谢;回答得很好DAs用于生成与所问问题相关的文本,您可能需要查看。它从输入中提取关键字,然后使用不同的马尔可夫链将这些关键字向前和向后扩展到句子。