这是写的第二个个人感觉较有挑战性的代码,老师布置的任务真是一次比一次难,不过也从中学习到蛮多东西的。 这次的任务是要计算语料库中,源语言规则出现的总的次数以及满足对齐一致性的次数。 这个任务的第一个难点就是我对什么是源语言规则以及什么叫满足对齐一致性这个概念不大清楚。因此首先来介绍一下这两个概念。我们用一个例子来说明: 对于这句话,其中上面的中文是源语言,下面的英文是目标语言,而中间的连线则是它们之间的对齐关系。这句话在语料库中的表示应该为: 1 <bead id="1">
2 <srcword><s> 是 不 能 忘记 的 。 </s></srcword>
3 <tgtword><s> was not to be forgotten . </s></tgtword>
4 <alignment>0-0 1-1 2-2 3-2 4-4 4-5 6-6 7-7</aligment>
5 </bead>
其中bead范围内表示的是一整个句子,<s>和</s>是句子的首尾标识符,同样也算在对齐关系里面。而<srcword>表示的是源语言,<tgtword>表示的是目标语言,<alignment>表示的是对齐关系。 我们首先来介绍什么是源语言规则,源语言规则有一些限制,首先要限制在一定的长度之内,这里我将长度限制为7,然后繁殖度规则,不过这里我没有将其考虑进去。还有一些概念我也说不大清楚,因此同样还是举例来说明。对于“是不能忘记的”这句话,其中包含的源语言规则就包括:是,是不,是不能,是不能忘记,是不能忘记的;不,不能,不能忘记,不能忘记的;能,能忘记,能忘记的;忘记,忘记的。通过这个例子就可以看到源语言规则即是将句子中所有可能组成遍历一遍,而其中单独的“的”不构成源语言规则是因为它没有对齐关系。 接下来我们介绍什么叫满足对齐一致性。我同样觉得概念好像很难解释清楚,当初请教学长的时候也是画图来表示比较直观明了。如果非要说概念的话应该是就源语言和目标语言的对齐不会超出互相对齐的范围之内。用例子来表示就是与“是 不”对齐的是“was not”,但是与“was not”对齐的是“是 不 能”,可见目标语言对齐到源语言时超出了源语言的范围,因此“是 不”这个源语言规则就不满足对齐一致性,而“是 不 能”则满足对齐一致性。而在代码编写过程中,要判断一个源语言规则是否满足对齐一致性的简单的方法就是判断对齐连线个数,即该源语言规则对齐到相应目标语言的对齐连线数目等于相应目标语言对齐到源语言规则的对齐连线时,则该源语言规则满足对齐一致性。