用于词法结构转换的最佳解析器算法?

时间:2016-06-23 14:06:46

标签: algorithm parsing nlp machine-translation

作为更大项目的一部分,我想实现从语言 A 到语言 B 的机器翻译器。由于没有可用的工具自动通过这组语言进行机器翻译,并且语言B的可用语料库非常小,我正在尝试执行以下操作

1。给定语言 A 中的句子,使用工具获取其语言 A PoS(词性) )标签。

2. 我用于PoS标记(Freeling)的工具不会返回解析树,所以我想从标记集构建我自己的解析树。

3。解析树完成后,按级别(从根开始)遍历它,并根据语言 B 的语法规则对其元素重新排序。 / p>

Graphical explanation

enter image description here

在做了一些研究之后,我发现了Earley解析(解析任何语言的能力引起了我的注意,因为语言 B 上的语法可能会随着时间的推移而改变,所以我不能保证它总能满足任何特定的标准)。 但是,鉴于我的最终目标是进行结构转换,我不确定是否使用自下而上的解析器并尝试重新排序元素,因为我将它们与规则匹配会给我一个更好的性能,或者如果我在错误的道路和我的解决方案完全错误

2 个答案:

答案 0 :(得分:0)

根据您正在处理的源语言,FreeLing确实提供了一个解析树(例如西班牙语,英语,加泰罗尼亚语,葡萄牙语......)

如果FreeLing不支持使用您的语言进行语法分析,则可以通过编写语法来添加它。 FreeLing包含一个CKY解析器,它将应用你的语法并为你提供解析树。

通过这种方式,您可以实现步骤2"从标签集中构建我自己的解析树"。

关于转让,我不确定最好的策略是即时重新排序。拥有整棵树并向前进行转移可能更好。

如果您的目标是基于规则的翻译,那么您可以查看开源翻译平台https://www.domain.com

答案 1 :(得分:0)

如果您正在寻找用于判断解析树的“最佳”算法,那么您应该查看Parsey McParseface。谷歌最近发布的开源解决方案。两者都可以说是最先进的,并且在README中有很好的文献综述。

使用基于规则的解析器或基于通用词典的方法的问题在于,您将看到的准确性非常低。一般来说,尝试在这里使用无监督技术是一种捷径,它会导致算法在大多数情况下失败,甚至语法略有不规则。特别是如果你的目标语言的语法可能随着时间的推移而改变,它可能会有一些普遍的模糊性,你将无法使用基于规则的系统来解释它。

对于重构解析树的通用自下而上方法,很难说这是否是正确的解决方案。它当然是构建解析树的一种非常典型的方法,但转移的质量在很大程度上取决于您正在使用的域,数据集的大小以及两种语言的语法结构。在一天结束时,机器学习的一个重大缺点就是没有人可以告诉你一种新的方法是否会有任何确定性。

您必须先试一试,根据appropriate metric评估效果,然后进行更改,看看您是否提高了效果。可悲的是,如果您所获得的语料库非常小,您不可能以自动方式获得任何类型的高质量翻译,只是信号不够,但如果您使用联合国成绩单作为训练集,您可以在与文献相比,最不能验证你的基本方法。