如何为python NLTK构建翻译语料库?

use*_*972 4 python corpus nltk python-3.x

我一直在使用Python的NTLK进行通用语言解析,最近我想创建一个专门用于翻译的语料库.我一直无法理解NTLK用于翻译的语料库选项和结构.

关于如何阅读或使用语料库资源有很多材料,但我无法在创建翻译风格语料库时找到任何详细信息.我从浏览语料库引用了解到有各种各样的样式和类型,但我似乎无法找到任何翻译特定的语料库示例或文档.

Dan*_*ejo 5

对于像数据集这样的翻译,NLTK可以使用AlignedCorpusReader读取单词对齐句子的语料库.文件必须具有以下格式:

first source sentence
first target sentence 
first alignment
second source sentence
second target sentence
second alignment
Run Code Online (Sandbox Code Playgroud)

这意味着假定令牌被空格分隔,并且句子在单独的行上开始.例如,假设您有一个如下所示的目录结构:

reader.py
data/en-es.txt
data/en-pt.txt
Run Code Online (Sandbox Code Playgroud)

其中文件的内容是:

# en-es.txt
This is an example
Esto es un ejemplo
0-0 1-1 2-2 3-3
Run Code Online (Sandbox Code Playgroud)

# en-pt.txt
This is an example
Esto é um exemplo
0-0 1-1 2-2 3-3
Run Code Online (Sandbox Code Playgroud)

您可以使用以下脚本加载此玩具示例:

# 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)
Run Code Online (Sandbox Code Playgroud)

产量

['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
Run Code Online (Sandbox Code Playgroud)

该行reader = AlignedCorpusReader('./data', '.*', '.txt', encoding='utf-8')创建一个实例,该实例AlignedCorpusReader读取'.txt'以"./data"目录结尾的所有文件.它还指定文件的编码是'utf-8'.在其他参数AlignedCorpusReaderARE word_tokenizersent_tokenizer,word_tokenizer设置为WhitespaceTokenizer()sent_tokenizer设置为RegexpTokenizer('\n', gaps=True).

更多信息可以在文档(12)中找到.