Как построить корпус переводов для python NLTK?
Я работал с NTLK Python для общего анализа языка, и недавно я хотел бы создать корпус специально для переводов. Я не смог понять корпусные варианты и структуры, используемые NTLK для переводов.
Есть много материала о том, как читать или использовать ресурсы корпуса, но я не могу найти ничего подробно о создании корпуса стиля перевода. Я понимаю, просматривая ссылки на корпус, что существуют различные стилей и типов, однако я, кажется, не могу найти каких-либо конкретных примеров корпуса перевода или документации.
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
, который считывает все файлы, заканчивающиеся на'.txt'
в './ каталог данных. Он также указывает, что кодировка файлов -'utf-8'
. Другими параметрамиAlignedCorpusReader
являютсяword_tokenizer
иsent_tokenizer
,word_tokenizer
устанавливается вWhitespaceTokenizer()
иsent_tokenizer
устанавливается вRegexpTokenizer('\n', gaps=True)
.Дополнительную информацию можно найти в документации (1 и еще 2).