平行语料数据对齐,如果是机器翻译的平行语料,目前有很多资源,而且语料大多已经预处理好了,可以直接拿来用。就算没有对齐,也有一些工具可以使用。比如Tmxmall, 然而他是针对 翻译句的对齐工具,不支持对齐同一种语言。
如果你做文本复述(或者文本改写任务) 亦或是文本风格迁移任务,就可能需要 同一种语言的平行语料了。这样的话不免会遇到对齐语料的问题。具体地说:
问题:当你有两大段,同一种语言的平行语料 A、B,太长了,需要切分句子才能输入网络。这时,如何切分才能使 语料对应上呢。如果直接按 “。”切分,句子数量一般是对不上的。
这时候不难想到,先用句子级别的符号(或直接用逗号级别的符号)切分,同时遍历切分后的A、B。
遍历的索引分别为 IndexA IndexB
同时建立空对的语句对 数组 C,当前索引为 Index
不妨把简化成:A中第IndexA个句子,和B中第IndexB第去向:
- IndexA 是要 和 IndexB 组成一个新到语句对;并添加到 C的末尾,同时 Index += 1、IndexA += 1 、IndexB += 1
- IndexA 合并到 IndexA - 1, 修改C的末尾语句对。 IndexA += 1
- IndexA 合并 IndexA + 1 和 IndexB 组成新语句对,添加到C的末尾。 Index += 1、IndexA += 2
- IndexB 和 IndexB-1合并。IndexB += 1。IndexB += 1
- IndexB 合并IndexB+1 和 IndexA 组成新的语句对。 添加到C的末尾。 Index += 1, IndexB += 2
具体选择哪种情况,要看每种情况的得分。(注意这里没有考虑所有情况,也没有对在合并时 考虑合并后的长度)
如何决定得分,要看具体任务,对于文本复述任务