parsing - 如何对元素进行随机嵌入包围

标签 parsing nlp machine-learning

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

这就是我从随机包围开始,通过学习过程最终想要达到的目标。

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

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

括号(第一阶段)(D、N为成分): (N) (V) (DN)

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

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

请帮忙。谢谢。

最佳答案

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

一种简单的包围方式是 generate some trees (生成全部会很快变得非常消耗空间),具有与单词(或组件)一样多的叶子,然后选择一个合适的叶子(随机或根据适当的分区)并将其应用为括号图案。为了提高效率,请寻找一种真正的随机树生成算法(我目前找不到)。

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

一个很棒的、非常复杂的(如果可行的话)但可能极其困难的方法是使用 genetic programming 。但这可能与您想要的相差太大。

最后,在我看来,检查括号正确性的最简单方法是保留一个包含语法/语法规则的表格并与它们进行比较。您还可以通过将它们保留在树中并测量从实际模式 ((V D) N) 到正确模式 (V (DN))。 (这只是一些随机的想法,我从未真正这样做过......)

关于parsing - 如何对元素进行随机嵌入包围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10909271/

相关文章:

nlp - pytorch 中预训练 BERT 错误的权重初始化

math - 计算两个不同大小向量的余弦相似度

python - 在 Tensorflow 中微调深度神经网络

c# - StringSplitOptions.RemoveEmptyEntries 等效于 TextFieldParser

parsing - 如何在Go Lang中从连续字符串中提取(解析)整数

java - ANTLR - 如何使用生成的 AST 树?

machine-learning - NLP 预训练模型的数据预处理(例如 ELMo、Bert)

Java解析异常

python - 如何在Python中绘制簇?

algorithm - 如何实现一个特性推荐引擎?