如何为 python NLTK 构建翻译语料库?
How to build a translation corpus for python NLTK?
我一直在使用 Python 的 NTLK 进行通用语言解析,最近我想创建一个专门用于翻译的语料库。我一直无法理解 NTLK 用于翻译的语料库选项和结构。
有很多 material on how to read or use corpus resources,但我找不到任何关于创建翻译风格语料库的详细信息。通过浏览语料库参考,我了解到有多种样式和类型,但是我似乎找不到任何特定于翻译的语料库示例或文档。
对于像数据集这样的翻译,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)
。
我一直在使用 Python 的 NTLK 进行通用语言解析,最近我想创建一个专门用于翻译的语料库。我一直无法理解 NTLK 用于翻译的语料库选项和结构。
有很多 material on how to read or use corpus resources,但我找不到任何关于创建翻译风格语料库的详细信息。通过浏览语料库参考,我了解到有多种样式和类型,但是我似乎找不到任何特定于翻译的语料库示例或文档。
对于像数据集这样的翻译,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)
。