【发布时间】:2015-09-29 04:00:47
【问题描述】:
我想实现找到here 的马尔可夫算法,但我没能做到。正如 wiki 解释的那样,它是一个递归函数,用于替换语言中的模式。例如
- “A”->“苹果”
- “B”->“包”
- “S”->“商店”
- “T”->“该”
- “商店”->“我的兄弟”
- “从未使用过” -> .“终止规则”
这些规则必须在以下文本上实施:
“我从 T S 买了 B of As。”
规则:
- 按从上到下的顺序检查规则,看看是否有任何 模式可以在输入字符串中找到。
- 如果没有找到,算法将停止。
- 如果找到一个(或多个),则使用其中的第一个替换 输入字符串中匹配文本的最左侧出现及其 替换。
- 如果刚刚应用的规则是终止规则,则算法停止。
- 转到步骤 1。
我想过创建两个类 Rule 和 RuleContainer。
规则有 3 个属性:String from、String To 和 Boolean terminating
RuleContainer 有一个动态列表,其中包含活动规则和逻辑函数 [我要创建的那个]。
我已经考虑过 String.replace() 函数,并尝试将其实现为递归函数。
实现马尔可夫算法的最佳方法是什么?
【问题讨论】:
-
SO 不是免费的导师。请至少提供我们可以开始的最少代码。一开始,找到一种可行的方法就足够了,之后您可以搜索最好的方法;-)
标签: java algorithm recursion substitution markov