我正在编写一个自动成分包围的学习算法。由于算法从头开始,包围(嵌入)首先应该是随机的。然后通过迭代改进它。我一直坚持如何做随机包围。你能用R或Python建议代码还是给出一些编程思想(伪代码)?我还需要有关如何针对正确性检查随机包围的想法。
这是我试图通过学习过程最终达到的,从随机包围开始。
这是一句话。 '他'追逐'''狗'。
用语法元素替换每个元素, N,V,D,N。
包围(第一阶段)(D,N是成分): (N)(V)(D N)
包围(第二阶段): (N)((V)(D N))
包围(第三阶段): ((N)((V)(D N)))
请帮忙。谢谢。
答案 0 :(得分:1)
以下是我提供的所有信息:
包围的一种天真的方式是generate some trees(生成所有可以很快占用空间),拥有与单词(或组件)一样多的叶子,然后选择合适的一个(随机或根据适当的划分)并将其应用为包围图案。为了提高效率,请寻找一个真正的随机树生成算法(我目前找不到一个)。
此外,我建议阅读有关genetic algos /进化编程的内容,尤其是fitness fucnctions(这是“检查随机结果的正确性”部分)。据我所知,您希望程序检测解析方式,然后将其作为“学习”存储在内存中。这与遗传算法非常匹配,记忆了“最适合”的模式(只有变异作为变化因素)。
使用genetic programming是一个非常精细,非常复杂(如果可行),但可能非常困难的方法。但这可能与你想要的完全不同。
最后,检查包围imo正确性的最简单方法是保留一个包含语法/语法规则的表并与之进行比较。您还可以通过将它们保存在树中并测量与实际模式((V D) N
)到正确模式(V (D N)
)的距离来将其改进为更好的适应度函数。 (这只是一些随机的想法,我从来没有真正这样做过。)