Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Внести вклад в разработку кода
Синхронизировать код
README.md
NLP
Введение
Проект NLP включает в себя модели Attn-Seq2Seq и Transformer, которые реализуют машинный перевод и диалоговые системы.
Архитектура программного обеспечения
Описание архитектуры программного обеспечения.
Инструкция по установке
- В папке с файлами: pip install -r requirements.txt.
- После установки могут появиться сообщения о несоответствии версий двух предыдущих компонентов, но их можно игнорировать.
- Стандартная модель диалоговой системы Transformer находится в dailydialog. Для обучения диалоговой системе перейдите по ссылке: https://pan.xunlei.com/s/VN8UfYM4o2Ef4r5hAHYm8KmUA1?pwd=5rht#
Код доступа: 5rht.
- Модель машинного перевода Transformer находится в папке model/translation.
- Модели машинного перевода Transformer были обучены на GPU:1, и для использования может потребоваться модификация кода. Например, для перехода с GPU на CPU можно использовать следующий код:
- torch.load('trans_encoder.mdl', map_location= lambda storage, loc: storage)
- torch.load('trans_decoder.mdl', map_location= lambda storage, loc: storage).
Для перехода с CUDA:1 на CUDA:0 можно использовать:
- torch.load('trans_encoder.mdl', map_location={'cuda:1' : 'cuda:0'})
- torch.load('trans_decoder.mdl', map_location={'cuda:1' : 'cuda:0'}).
- Ссылка на модель Seq2Seq: https://pan.xunlei.com/s/VNSf-x6_dF6bKTECothnVkGYA1?pwd=w43w#.
- Возможно, потребуется изменить названия моделей, чтобы они соответствовали коду.
Использование
- Разделите проект на две части: диалоговая система и машинный перевод.
- data — набор данных.
- model — обученная модель.
- В папке translation находятся модели Seq2Seq и Transformer.
- На примере папки Transformer: attention.py реализует механизм внимания, transformer.py — основную архитектуру Transformer, data.py отвечает за предварительную обработку данных и создание словаря, dataset и dataloader, readdata.py позволяет просматривать форму данных, train.py обучает модель, predict.py выполняет предсказание, config.py определяет некоторые параметры.
- Модель машинного перевода Transformer была обучена на GPU:1. Если вы хотите использовать её, возможно, потребуется модифицировать код.
- Например, для перехода с GPU на CPU используйте:
- torch.load('trans_encoder.mdl', map_location= lambda storage, loc: storage),
- torch.load('trans_decoder.mdl', map_location= lambda storage, loc: storage).
- Для перехода с CUDA:1 на CUDA:0 используйте:
- torch.load('trans_encoder.mdl', map_location={'cuda:1' : 'cuda:0'},
- torch.load('trans_decoder.mdl', map_location={'cuda:1' : 'cuda:0'}).
Результаты
Базовый Transformer:
- Потеря тренировочного набора: 1,040, PPL: 2,835.
- Потеря проверочного набора: 2,768, PPL: 17,635.
- BLEU1-4: [0,0773, 0,0376, 0,0104, 0,0053].
- distinct1-3: [0,02798, 0,15453, 0,36269].
Выборка расписания tg=0,9, tr=0,95:
- Потеря тренировочного набора: 0,930, PPL: 2,538.
- Потеря проверочного набора: 3,289, PPL: 29,728.
- BLEU1-4: [0,0918, 0,0479, 0,0183, 0,0117].
- distinct1-3: [0,029054, 0,18474, 0,43019].
Описание показателей
- Loss — это cross_entropy_loss, mean(-log(softmax(NLL(X)))).
- PPL — вероятность появления каждого слова в предложении, рассчитывается как exp(loss).
- BLEU — метрика оценки качества машинного перевода.
- Distinct — количество уникальных слов, разделённое на общее количество слов. Используется для тестирования всех результатов.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )