java实现马尔科夫链_java – 马尔可夫链文本生成

我们刚刚在我的数据结构类中分配了一个新项目 – 使用马尔可夫链生成文本.

概观

给定输入文本文件,我们创建长度为n个字符的初始种子.我们将它添加到输出字符串中,并根据频率分析选择下一个字符.

This is the cat and there are two dogs.

Initial seed: "Th"

Possible next letters -- i, e, e

Therefore, probability of choosing i is 1/3, e is 2/3.

Now, say we choose i. We add "i" to the output string. Then our seed becomes

hi and the process continues.

我的解决方案

我有3个类,Node,ConcreteTrie和Driver

当然,ConcreteTrie类不是传统意义上的Trie.下面是它的工作原理:

鉴于k = 2的句子:

This is the cat and there are two dogs.

我生成节点Th,嗨,是……,…,gs,s.

这些节点中的每个节点都有子节点,这些子节点跟随它们.例如,Node Th将有孩子i和e.我在每个节点中维护计数,以便稍后我可以生成选择下一个字母的概率.

我的问题:

首先,完成这个项目最有效的方法是什么?我的解决方案似乎非常快,但我真的想把我的教授打掉. (在我的上一个项目编辑距离问题的一个变体,我做了A *,遗传算法,BFS和模拟退火 – 我知道问题是NP-Hard)

第二,这项任务的重点是什么?它似乎与我们课堂上所涉及的很多内容无关.我们应该学习什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值