对于类似数据集的翻译,NLTK 可以使用AlignedCorpusReader 读取单词对齐句子的语料库。文件必须具有以下格式:
first source sentence
first target sentence
first alignment
second source sentence
second target sentence
second alignment
这意味着假定标记由空格分隔,句子从不同的行开始。例如,假设您的目录结构如下:
reader.py
data/en-es.txt
data/en-pt.txt
文件内容在哪里:
# en-es.txt
This is an example
Esto es un ejemplo
0-0 1-1 2-2 3-3
和
# en-pt.txt
This is an example
Esto é um exemplo
0-0 1-1 2-2 3-3
您可以使用以下脚本加载这个玩具示例:
# reader.py
from nltk.corpus.reader.aligned import AlignedCorpusReader
reader = AlignedCorpusReader('./data', '.*', '.txt', encoding='utf-8')
for sentence in reader.aligned_sents():
print(sentence.words)
print(sentence.mots)
print(sentence.alignment)
输出
['This', 'is', 'an', 'example']
['Esto', 'es', 'un', 'ejemplo']
0-0 1-1 2-2 3-3
['This', 'is', 'an', 'example']
['Esto', 'é', 'um', 'exemplo']
0-0 1-1 2-2 3-3
reader = AlignedCorpusReader('./data', '.*', '.txt', encoding='utf-8') 行创建了AlignedCorpusReader 的一个实例,它读取“./data”目录中所有以'.txt' 结尾的文件。它还指定文件的编码为'utf-8'。 AlignedCorpusReader的其他参数有word_tokenizer和sent_tokenizer,word_tokenizer设置为WhitespaceTokenizer(),sent_tokenizer设置为RegexpTokenizer('\n', gaps=True)。
可以在文档中找到更多信息(1 和 2)。