【问题标题】:How to build a translation corpus for python NLTK?如何为 python NLTK 建立翻译语料库?
【发布时间】:2018-08-09 19:06:59
【问题描述】:

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

有很多material on how to read or use corpus resources,但我无法找到有关创建翻译风格语料库的任何详细信息。我通过浏览语料库参考了解到有多种样式和类型,但是我似乎找不到任何翻译特定的语料库示例或文档。

【问题讨论】:

    标签: python python-3.x nltk corpus


    【解决方案1】:

    对于类似数据集的翻译,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_tokenizersent_tokenizerword_tokenizer设置为WhitespaceTokenizer()sent_tokenizer设置为RegexpTokenizer('\n', gaps=True)

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

    【讨论】:

    • 谢谢。作为一名试图帮助某人为一种不常见的语言构建模型的程序员,这对我来说是一个学习术语和技术的良好开端。
    猜你喜欢
    • 2016-03-17
    • 2017-09-28
    • 2011-05-15
    • 1970-01-01
    • 2017-03-09
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多