使用马尔可夫链(或类似的东西)来生成IRC-bot

The*_*uck 20 nlp artificial-intelligence markov-chains

我试过google,发现我无法理解.

我理解马尔可夫链是一个非常基本的层次:它是一个数学模型,只依赖于以前的输入来改变状态......那么一种加权随机机会而不是不同标准的FSM?

我听说你可以用它们来产生半智能的废话,给出现有单词的句子用作种类的字典.

我无法想到搜索词来找到这个,所以任何人都可以链接我或解释我如何能够产生一个半智能答案的东西?(如果你问过馅饼,它就不会开始关于它听过的越南战争了)

我计划:

  • 让这个机器人在IRC通道中空闲一点
  • 从字符串中删除任何用户名并存储为句子或其他内容
  • 随着时间的推移,使用它作为上述的基础.

Fre*_*Foo 32

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

  1. 从语料库(文本集合)收集二元语(相邻单词对)统计数据.
  2. 使每个单词具有一个状态的马尔可夫链.为文本结束保留一个特殊状态.
  3. 从状态/字跳跃的概率Xÿ是的话概率ÿ紧随X,从训练语料库相对两字组频率估计.
  4. 从随机单词x开始(可能取决于该单词作为语料库中句子的第一个单词出现的频率).然后选择一个状态/单词y随机跳转,考虑y跟随x的概率(状态转移概率).重复,直到您点击文本结尾.

如果你想从中获得一些半智能的东西,那么你最好的方法是在很多精心收集的文本上进行训练."批次"部分使其产生适当的句子(或合理的IRC说话),概率很高; "精心收集"部分意味着你可以控制它所谈论的内容.引入高阶马尔可夫链也有助于这两个领域,但需要更多存储来存储必要的统计数据.您还可以查看统计平滑等内容.

然而,让您的IRC bot的居然要什么,据说它需要应对很多比马尔可夫链更多.可以通过对所述内容进行文本分类(也称为主题定位),然后选择特定于域的马尔可夫链来进行文本生成来完成.NaïveBayes是主题定位的流行模型.

编程实践中的 Kernighan和Pike 探索了马尔可夫链算法的各种实现策略.一般来说,这些和自然语言生成由Jurafsky和Martin,语音和语言处理部门深入介绍.