删除重复的行并拆分平行语料库

时间:2018-06-06 15:48:51

标签: python bash nlp corpus machine-translation

我有英文 - 法文(text.en,text.fr)的平行翻译语料库, 每个文本包括大约500K的行(源语和目标语句中的句子)。我想要的是: 1-使用python命令删除两个文本中的重复行;并避免两个文件中的任何对齐问题。例如:命令在text.en中删除第32行,然后当然在text.fr中删除它。 2-然后将两个文件拆分为Train / Dev / Test数据,dev为1K,测试为1K,其余为train。 我需要使用相同的命令拆分text.en和text.fr,这样我就可以保持两个文件中的对齐和对应的句子。 如果我可以随机提取测试和开发数据会更好,这将有助于获得更好的结果。 我怎样才能做到这一点?请写下命令。 我感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:-1)

如果你说线条是指语法句子,那么你需要先将句子分成: -

Eng = "..."
Frn = "..."
GEngLines = Eng.split(".");
GFrnLines = Frn.split(".");

for i in range(len(GEngLines)):
    for j in range(len(GFrnLines)):
        if GEngLines[i] == GFrnLines[j] :
            GEngLines.remove(i);
            GFrnLines.remove(j);

DevLinesNumber = 500
TestLinesNumber = 500

EngDevLines = []
EngTestLines = []
EngTrainLines = []

FrnDevLines = []
FrnTestLines = []
FrnTrainLines = []

for i in range(len(GEngLines)):
    if i < DevLinesNumber :
        EngDevLines.append(GEngLines[i])
        FrnDevLines.append(GFrnLines[i]);
    elif i >= DevLinesNumber and i < DevLinesNumber + TestLinesNumber :
        EngTestLines.append(GEngLines[i])
        FrnTestLines.append(GFrnLines[i]);
    else:
EngTrainLines.append(GEngLines[i])
FrnTrainLines.append(GFrnLines[i]);

但是不要忘记在结束两行之前添加两个标签(4个空格),因为我使用的是移动设备,我无法轻易写入。