0

我正在编写一个用于自动成分括号的学习算法。由于算法是从头开始的,因此包围(嵌入)首先应该是随机的。然后通过迭代对其进行改进。我坚持如何进行随机包围。您能否推荐一个 R 或 Python 代码或给出一些编程想法(伪代码)?我还需要有关如何检查随机括号与正确括号的正确性的想法。

这就是我试图通过学习过程最终达到的目标,从随机括号开始。

这是一个句子。“他”“追”“狗”。

用语法元素 N、V、D、N 替换每个元素。

括号(第一阶段)(D,N是成分):(N)(V)(DN)

包围(第二阶段):(N)((V)(DN))

包围(第三阶段):((N)((V)(DN)))

请帮忙。谢谢你。

4

1 回答 1

1

以下是我所能提供的信息:

一种天真的方法是生成一些树(生成所有树会很快变得非常占用空间),拥有与单词(或组件)一样多的叶子,然后选择合适的树(随机或根据适当的分区)并将其应用为包围模式。为了提高效率,请寻找一种真正的随机树生成算法(我目前找不到)。

此外,我建议阅读有关遗传算法/进化编程的信息,尤其是适应度函数(这是“检查随机结果的正确性”部分)。据我了解,您希望程序检测解析方式,然后将它们作为“学习”保存在内存中。这与记忆“最适”模式(并且只有突变作为变化因素)的遗传算法非常匹配。

一个很棒的、非常精细的(如果可行的话)但可能极其困难的方法是使用基因编程。但这可能与您想要的相差太大。

最后,检查括号 imo 正确性的最简单方法是保留一个包含语法/句法规则的表格并与它们进行比较。您还可以通过将它们保存在树中并测量从实际模式 ( (V D) N) 到正确模式 ( V (D N)) 的距离来改进它以获得更好的适应度函数。(这只是一些随机的想法,我从来没有真正这样做过......)

于 2012-06-11T07:26:02.417 回答