Этот проект предоставляет крупномасштабный набор данных для разговоров на китайском языке и модель предварительного обучения разговору на китайском языке (модель GPT для китайского языка) на основе этого набора данных. Для получения дополнительной информации обратитесь к нашему документу.
Код этого проекта модифицирован из TransferTransfo и использует версию библиотеки Transformers HuggingFace Pytorch, которую можно использовать для предварительного обучения и тонкой настройки.
from datasets import load_dataset
dataset = load_dataset ( "lccc" , "base" ) # or "large"
Предоставляемый нами набор данных LCCC (крупномасштабная очищенная китайская беседа) в основном состоит из двух частей: LCCC-base
(Baidu Netdisk, Google Drive) и LCCC-large
(Baidu Netdisk, Google Drive). Мы разработали строгий процесс фильтрации данных. обеспечить качество данных разговоров в этом наборе данных. Этот процесс фильтрации данных включает в себя ряд ручных правил и несколько классификаторов, основанных на алгоритмах машинного обучения. К шуму, который мы отфильтровываем, относятся: нецензурные слова, специальные символы, выражения лица, грамматически неправильные предложения, нерелевантные контексту диалоги и т. д.
Статистика этого набора данных показана в таблице ниже. Среди них диалог, содержащий всего два предложения, мы называем «однооборотным диалогом», а диалог, содержащий более двух предложений, — «многооборотным диалогом». Используйте сегментацию слов Jieba при подсчете размера списка слов.
LCCC-база (Облачный диск Baidu, Google Диск) | разговор в один оборот | Несколько раундов диалога |
---|---|---|
тотальные повороты диалога | 3 354 232 | 3 466 274 |
Всего диалоговых предложений | 6708464 | 13 365 256 |
Всего символов | 68 559 367 | 163 690 569 |
Размер словарного запаса | 372 063 | 666 931 |
Среднее количество слов в разговорных предложениях | 6,79 | 8.32 |
Среднее количество предложений за раунд разговора | 2 | 3,86 |
Обратите внимание, что процесс очистки набора данных на базе LCCC более строгий, чем у большого набора данных LCCC, поэтому его размер также меньше.
LCCC-большой (Облачный диск Baidu, Google Диск) | разговор в один оборот | Несколько раундов диалога |
---|---|---|
тотальные повороты диалога | 7 273 804 | 4 733 955 |
Всего диалоговых предложений | 14 547 608 | 18 341 167 |
Всего символов | 162 301 556 | 217 776 649 |
Размер словарного запаса | 662 514 | 690 027 |
Количество оценочных слов для разговорных предложений | 7.45 | 8.14 |
Среднее количество предложений за раунд разговора | 2 | 3,87 |
Исходные данные разговоров в наборе данных на базе LCCC поступают из разговоров Weibo, а исходные данные разговоров в большом наборе данных LCCC интегрируются с другими наборами данных разговоров с открытым исходным кодом, основанными на этих разговорах Weibo:
Набор данных | тотальные повороты диалога | Пример разговора |
---|---|---|
Вейбо Корпус | 79М | Вопрос: Я пробовал хот-пот семь или восемь раз в Чэнду, Чунцин. Ответ: Ха-ха-ха! Тогда мой рот может сгнить! |
Корпус сплетен PTT | 0,4М | Вопрос: Почему жители деревни всегда издеваются над старшеклассниками Вопрос: Если вы думаете, что, выбрав хороший предмет, вы станете Биллом Гейтсом, то с таким же успехом вы можете бросить школу? |
Корпус субтитров | 2,74 млн. | Вопрос: Люди в пекинской опере несвободны. Ответ: Людей сажают в клетки. |
Корпус Сяохуанцзи | 0,45М | Вопрос: Вы когда-нибудь были влюблены? Ответ: Вы когда-нибудь были влюблены? О, не упоминайте об этом, мне грустно... |
Корпус Тьеба | 2,32 млн. | Вопрос: В первом ряду все фанаты Лу встают, верно? Ответ: В названии написано «ассист», но после просмотра этого мяча это действительно ирония. |
Корпус Цинъюнь | 0,1М | В: Кажется, ты очень любишь деньги. А: Правда? Тогда ты почти у цели |
Разговорный корпус Дубана | 0,5М | В: Выучите чистый английский, просматривая оригинальные англоязычные фильмы. О: Я люблю «Друзей» и пересматривал их много раз. В: Я почти утомлен просмотром одного и того же компакт-диска. Ответ: Тогда ваш английский должен быть довольно хорошим. |
Корпус электронных коммерческих разговоров | 0,5М | В: Будет ли это выгодной сделкой? Ответ: Пока нет. Вопрос: Будет ли это доступно в будущем? Ответ: Не уверен. |
Китайский чат-корпус | 0,5М | В: Мои ноги сегодня бесполезны. Ребята, вы празднуете праздник, так что я буду передвигать кирпичи. А: Это тяжелая работа, я даже на Рождество пошел зарабатывать много денег. В: Да ладно. У меня нет парня, поэтому любой праздник один и тот же. |
Мы также предоставляем серию китайских моделей предварительного обучения (китайские модели GPT). Процесс предварительного обучения этих моделей разделен на два этапа: сначала предварительное обучение на новых китайских данных, а затем предварительное обучение на данных LCCC. набор.
Мы следовали настройкам предварительной обработки данных в TransferTransfo, который объединял всю историю разговоров в одно предложение, а затем использовал это предложение в качестве входных данных модели для прогнозирования ответа на разговор. В дополнение к векторному представлению каждого слова входные данные нашей модели также включают представление вектора говорящего и представление вектора положения.
Предварительно обученная модель | Количество параметров | Данные, используемые для предварительного обучения | описывать |
---|---|---|---|
GPT Роман | 95,5 млн. | Китайские новые данные | Предварительно обученная китайская модель GPT, построенная на основе новых китайских данных (новые данные включают в общей сложности 1,3 миллиарда слов) |
CDial-GPT LCCC-база | 95,5 млн. | LCCC-база | На основе GPT Novel используйте предварительно обученную китайскую модель GPT, обученную на базе LCCC. |
CDial-GPT2 LCCC-база | 95,5 млн. | LCCC-база | На основе GPT Novel используйте предварительно обученную китайскую модель GPT2, обученную на базе LCCC. |
CDial-GPT LCCC-большой | 95,5 млн. | LCCC-большой | На основе GPT Novel используйте предварительно обученную китайскую модель GPT, обученную LCCC-large. |
Установить непосредственно из исходного кода:
git clone https://github.com/thu-coai/CDial-GPT.git
cd CDial-GPT
pip install -r requirements.txt
Шаг 1. Подготовьте набор данных, необходимый для модели предварительного обучения и точной настройки (например, набор данных STC или данные игрушки «data/toy_data.json» в каталоге проекта. Обратите внимание, что если данные содержат английский язык, их необходимо разделить. по буквам, например: привет)
# 下载 STC 数据集 中的训练集和验证集 并将其解压至 "data_path" 目录 (如果微调所使用的数据集为 STC)
git lfs install
git clone https://huggingface.co/thu-coai/CDial-GPT_LCCC-large # 您可自行下载模型或者OpenAIGPTLMHeadModel.from_pretrained("thu-coai/CDial-GPT_LCCC-large")
ps: Вы можете использовать следующие ссылки для загрузки обучающего набора и проверочного набора STC (Baidu Cloud Disk, Google Drive)
Шаг 2. Обучение модели
python train.py --pretrained --model_checkpoint thu-coai/CDial-GPT_LCCC-large --data_path data/STC.json --scheduler linear # 使用单个GPU进行训练
или
python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai/CDial-GPT_LCCC-large --data_path data/STC.json --scheduler linear # 以分布式的方式在8块GPU上训练
Параметр train_path
также предусмотрен в нашем обучающем скрипте, который позволяет пользователям читать простые текстовые файлы по частям. Если вы используете систему с ограниченной памятью, рассмотрите возможность использования этого параметра для чтения обучающих данных. Если вы используете train_path
вам нужно оставить data_path
пустым.
Шаг 3: Создайте текст
# YOUR_MODEL_PATH: 你要使用的模型的路径,每次微调后的模型目录保存在./runs/中
python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data/STC_test.json --out_path STC_result.txt # 在测试数据上生成回复
python interact.py --model_checkpoint YOUR_MODEL_PATH # 在命令行中与模型进行交互
ps: Вы можете использовать следующую ссылку, чтобы загрузить набор тестов STC (Baidu Cloud Disk, Google Drive)
Параметры сценария обучения
параметр | тип | значение по умолчанию | описывать |
---|---|---|---|
model_checkpoint | ул. | "" | Путь или URL-адрес файлов модели (каталог модели предварительного обучения и файлов конфигурации/словаба) |
предварительно обученный | логическое значение | ЛОЖЬ | Если False, то обучаем модель с нуля. |
путь_к данным | ул. | "" | Путь к набору данных |
dataset_cache | ул. | по умолчанию="набор_данных_кэш" | Путь или URL-адрес кэша набора данных |
поезд_путь | ул. | "" | Путь обучающего набора для распределенного набора данных |
действительный_путь | ул. | "" | Путь набора проверки для распределенного набора данных |
файл_журнала | ул. | "" | Выводить журналы в файл по этому пути |
num_workers | интервал | 1 | Количество подпроцессов загрузки данных |
n_epochs | интервал | 70 | Количество эпох обучения |
train_batch_size | интервал | 8 | Размер пакета для обучения |
valid_batch_size | интервал | 8 | Размер партии для проверки |
max_history | интервал | 15 | Количество предыдущих обменов, которые нужно сохранить в истории |
планировщик | ул. | "ноам" | Метод оптимизатора |
н_емд | интервал | 768 | Количество n_emd в файле конфигурации (для noam) |
eval_before_start | логическое значение | ЛОЖЬ | Если это правда, начните оценку перед тренировкой. |
разминка_шаги | интервал | 5000 | Шаги для разминки |
действительные_шаги | интервал | 0 | Выполнять проверку каждые X шагов, если не 0 |
градиент_аккумуляция_шаги | интервал | 64 | Накопление градиентов за несколько шагов |
max_norm | плавать | 1.0 | Норма градиента отсечения |
устройство | ул. | «cuda», если torch.cuda.is_available(), иначе «процессор» | Устройство (cuda или процессор) |
фп16 | ул. | "" | Установите O0, O1, O2 или O3 для тренировки fp16 (см. документацию apex). |
local_rank | интервал | -1 | Локальный ранг для распределенного обучения (-1: не распределено) |
Мы оценили модель предварительного обучения диалога, настроенную с использованием набора данных STC (обучающий набор/набор проверки (Baidu Netdisk, Google Drive), тестовый набор (Baidu Netdisk, Google Drive)). Все ответы были отобраны с использованием Nucleus Sampling (p=0,9, температура=0,7).
Модель | Размер модели | ЗГЗ | БЛЕУ-2 | БЛЕУ-4 | Расст-1 | Расст-2 | Жадное сопоставление | Встраивание среднего |
---|---|---|---|---|---|---|---|---|
Attn-Seq2seq | 73М | 34.20 | 3,93 | 0,90 | 8,5 | 11.91 | 65,84 | 83,38 |
Трансформатор | 113М | 22.10 | 6,72 | 3.14 | 8,8 | 13.97 | 66.06 | 83,55 |
GPT2-болтовня | 88М | - | 2.28 | 0,54 | 10.3 | 16.25 | 61,54 | 78,94 |
GPT Роман | 95,5 млн. | 21.27 | 5,96 | 2,71 | 8.0 | 11.72 | 66,12 | 83,34 |
GPT LCCC-база | 95,5 млн. | 18.38 | 6.48 | 3.08 | 8.3 | 12,68 | 66,21 | 83,54 |
GPT2 LCCC-база | 95,5 млн. | 22,76 | 5,69 | 2,50 | 7,7 | 10.87 | 66,24 | 83,46 |
GPT LCCC-большой | 95,5 млн. | 18.23 | 6,63 | 3.20 | 8.3 | 12.71 | 66,25 | 83,63 |
Мы отобрали 200 ответов для каждой модели и пригласили трех аннотаторов на аутсорсинговой платформе вручную оценить эти ответы. Критериями оценки были беглость разговорной речи, контекстуальная релевантность и разнообразие ответов. Диапазон оценок для каждого измерения составляет 2/1/0. Пожалуйста, обратитесь к нашей статье для более подробной информации.
Модель | +2 | +1 | +0 | Каппа |
---|---|---|---|---|
Attn-Seq2Seq | 27,1% | 21,4% | 51,4% | 0,4544 |
Трансформатор | 42,4% | 23,6% | 34,0% | 0,4429 |
GPT2-болтовня | 24,3% | 19,1% | 56,6% | 0,3941 |
GPT LCCC-база | 46,7% | 21,8% | 31,5% | 0,3954 |
GPT LCCC-большой | 48,6% | 24,5% | 27,0% | 0,4203 |
Мы случайным образом выбрали 1000 ответов на разговоры и посчитали плохие ответы среди этих ответов:
Содержит повторяющиеся утверждения | Содержит ругательные слова | Другие плохие ответы |
---|---|---|
двадцать три | 9 | 2 |
Мы точно настроили параметры большой модели GPT LCCC в наборе данных STC и использовали эту точно настроенную модель для создания следующего примера диалога:
Почта | Ответ |
---|---|
На самом деле это Пекин, а не Харбин. | Погода в Харбине, кажется, лучше, чем в Пекине. Здесь идет небольшой дождь и днем дует сильный ветер. |
Конкурс рекламы в кампусе оператора был очень веселым! Ха-ха-ха. | Я думал, это реклама Джека Ма. |
Свадебное платье Delsa S posa конфетной серии, розовое, синее, красное и фиолетовое, игривое и свежее, вам оно нравится? | Последняя такая красивая, такая красивая! |
Мы также использовали приведенную выше уточненную модель для получения следующих результатов взаимодействия:
Роэл | Ответ |
---|---|
Пользователь | Не люби меня безрезультатно |
Бот | Бесплодная любовь так болезненна. |
Пользователь | Но ничего страшного, если тебе это понравилось |
Бот | Иногда любовь – это игра. |
Пользователь | я всегда проигрываю |
Бот | Я люблю тебя так же сильно, как люблю тебя. |
Пользователь | Сможешь ли ты это вытащить? |
Бот | Вы можете потянуть его. |
Пользователь | Не подражай мне |
Бот | Я говорю, что вы не можете этого сделать. |
Пользователь | Ты заставляешь меня это делать, да? |
Бот | Нет, я заставляю тебя говорить, да? |
Ида Ван, Пей Кэ, Иньхэ Чжэн, Кайли Хуан, Юн Цзян, Сяоянь Чжу, Минли Хуан
Цзосянь Е, Яо Ван, Ифань Пан
Набор данных LCCC и предварительно обученная диалоговая модель, предоставленные в рамках этого проекта, предназначены только для научных исследовательских целей. Разговоры в наборе данных LCCC собираются из разных источников. Несмотря на то, что мы разработали строгий процесс очистки данных, мы не гарантируем, что весь нежелательный контент будет отфильтрован. Весь контент и мнения, содержащиеся в этих данных, не зависят от авторов этого проекта. Модель и код, представленные в этом проекте, являются лишь компонентом полной диалоговой системы. Предоставляемые нами сценарии декодирования предназначены только для научных исследований. Весь контент диалогов, созданный с использованием моделей и сценариев в этом проекте, не имеет ничего общего с автором. этот проект.
Если наш проект окажется для вас полезным, пожалуйста, цитируйте нашу статью:
@inproceedings{wang2020chinese,
title={A Large-Scale Chinese Short-Text Conversation Dataset},
author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},
booktitle={NLPCC},
year={2020},
url={https://arxiv.org/abs/2008.03946}
}
Этот проект предоставляет крупномасштабный очищенный набор данных разговоров на китайском языке и модель GPT для китайского языка, предварительно обученную на этом наборе данных. Более подробную информацию можно найти в нашей статье.
Наш код, используемый для предварительного обучения, адаптирован из модели TransferTransfo, основанной на библиотеке Transformers. Коды, используемые как для предварительного обучения, так и для точной настройки, представлены в этом репозитории.
Мы представляем крупномасштабный очищенный корпус разговоров на китайском языке (LCCC), содержащий: LCCC-base
(Baidu Netdisk, Google Drive) и LCCC-large
(Baidu Netdisk, Google Drive). Строгий конвейер очистки данных предназначен для обеспечения качества. корпус. Этот конвейер включает в себя набор правил и несколько фильтров на основе классификаторов. Шумы, такие как оскорбительные или деликатные слова, специальные символы, смайлы, грамматически неправильные предложения и бессвязные разговоры. фильтруется.
Статистика нашего корпуса представлена ниже. Диалоги только с двумя высказываниями считаются «Одноходовыми», а диалоги с более чем тремя высказываниями считаются «Многооборотными». Размер словаря рассчитывается на уровне слов. Jieba используется для обозначения слов каждого высказывания.
LCCC-база (Baidu Netdisk, Google Диск) | Однооборотный | Многооборотный |
---|---|---|
Сессии | 3 354 382 | 3 466 607 |
Высказывания | 6708554 | 13 365 268 |
Персонажи | 68 559 727 | 163 690 614 |
Словарный запас | 372 063 | 666 931 |
Среднее количество слов на высказывание | 6,79 | 8.32 |
Среднее количество высказываний за сеанс | 2 | 3,86 |
Обратите внимание, что база LCCC очищается по более строгим правилам по сравнению с большой базой LCCC.
LCCC-большой (Baidu Netdisk, Google Диск) | Однооборотный | Многооборотный |
---|---|---|
Сессии | 7 273 804 | 4 733 955 |
Высказывания | 14 547 608 | 18 341 167 |
Персонажи | 162 301 556 | 217 776 649 |
Словарный запас | 662 514 | 690 027 |
Среднее количество слов на высказывание | 7.45 | 8.14 |
Среднее количество высказываний за сеанс | 2 | 3,87 |
Необработанные диалоги для базы LCCC берутся из Weibo Corpus, который мы просканировали с Weibo, а необработанные диалоги для LCCC-large создаются путем объединения нескольких наборов данных диалогов в дополнение к Weibo Corpus:
Набор данных | Сессии | Образец |
---|---|---|
Вейбо Корпус | 79М | Вопрос: Я пробовал хот-пот семь или восемь раз в Чэнду, Чунцин. Ответ: Ха-ха-ха! Тогда мой рот может сгнить! |
Корпус сплетен PTT | 0,4М | Вопрос: Почему жители деревни всегда издеваются над старшеклассниками Вопрос: Если вы думаете, что, выбрав хороший предмет, вы станете Биллом Гейтсом, то с таким же успехом вы можете бросить школу? |
Корпус субтитров | 2,74 млн. | Вопрос: Люди в пекинской опере несвободны. Ответ: Людей сажают в клетки. |
Корпус Сяохуанцзи | 0,45М | Вопрос: Вы когда-нибудь были влюблены? Ответ: Вы когда-нибудь были влюблены? О, не упоминайте об этом, мне грустно... |
Корпус Тьеба | 2,32 млн. | Вопрос: В первом ряду все фанаты Лу встают, верно? Ответ: В названии написано «ассист», но после просмотра этого мяча это действительно ирония. |
Корпус Цинъюнь | 0,1М | В: Кажется, ты очень любишь деньги. А: Правда? Тогда ты почти у цели |
Разговорный корпус Дубана | 0,5М | В: Выучите чистый английский, просматривая оригинальные англоязычные фильмы. О: Я люблю «Друзей» и пересматривал их много раз. В: Я почти утомлен просмотром одного и того же компакт-диска. Ответ: Тогда ваш английский должен быть довольно хорошим. |
Корпус электронных коммерческих разговоров | 0,5М | В: Будет ли это выгодной сделкой? Ответ: Пока нет. Вопрос: Будет ли это доступно в будущем? Ответ: Не уверен. |
Китайский чат-корпус | 0,5М | В: Мои ноги сегодня бесполезны. Ребята, вы празднуете праздник, так что я буду передвигать кирпичи. А: Это тяжелая работа, я даже на Рождество пошел зарабатывать много денег. В: Да ладно. У меня нет парня, поэтому любой праздник один и тот же. |
Мы также представляем серию китайских моделей GPT, которые сначала предварительно обучаются на новом китайском наборе данных, а затем проходят последующее обучение на нашем наборе данных LCCC.
Подобно TransferTransfo, мы объединяем все истории диалогов в одно контекстное предложение и используем это предложение для прогнозирования ответа. Входные данные нашей модели состоят из встраивания слов, встраивания говорящего и позиционного встраивания каждого слова.
Модели | Размер параметра | Предварительный набор данных | Описание |
---|---|---|---|
GPT Роман | 95,5 млн. | Китайский роман | Модель GPT, предварительно обученная на наборе данных Chinese Novel (1,3 миллиарда слов, обратите внимание, что мы не предоставляем подробную информацию об этой модели). |
CDial-GPT LCCC-база | 95,5 млн. | LCCC-база | Модель GPT, обработанная на базе набора данных LCCC из GPT Novel. |
CDial-GPT2 LCCC-база | 95,5 млн. | LCCC-база | Модель GPT2, обработанная на базе набора данных LCCC из GPT Novel. |
CDial-GPT LCCC-большой | 95,5 млн. | LCCC-большой | Модель GPT, обработанная на большом наборе данных LCCC из GPT Novel. |
Установить из исходников:
git clone https://github.com/thu-coai/CDial-GPT.git
cd CDial-GPT
pip install -r requirements.txt
Шаг 1. Подготовьте данные для тонкой настройки (например, набор данных STC или «data/toy_data.json» в нашем репозитории) и предварительно проверенную модель:
# Download the STC dataset and unzip into "data_path" dir (fine-tuning on STC)
git lfs install
git clone https://huggingface.co/thu-coai/CDial-GPT_LCCC-large # or OpenAIGPTLMHeadModel.from_pretrained("thu-coai/CDial-GPT_LCCC-large")
ps: Вы можете скачать поезд и действительный сплит STC по следующим ссылкам: (Baidu Netdisk, Google Drive)
Шаг 2. Обучите модель
python train.py --pretrained --model_checkpoint thu-coai/CDial-GPT_LCCC-large --data_path data/STC.json --scheduler linear # Single GPU training
или
python -m torch.distributed.launch --nproc_per_node=8 train.py --pretrained --model_checkpoint thu-coai/CDial-GPT_LCCC-large --data_path data/STC.json --scheduler linear # Training on 8 GPUs
Примечание. Мы также предоставили аргумент train_path
в сценарии обучения для чтения набора данных в виде обычного текста, который будет нарезан и обработан распределенно. Вы можете рассмотреть возможность использования этого аргумента, если набор данных слишком велик для памяти вашей системы (также. не забудьте оставить аргумент data_path
пустым, если вы используете train_path
).
Шаг 3: Режим вывода
# YOUR_MODEL_PATH: the model path used for generation
python infer.py --model_checkpoint YOUR_MODEL_PATH --datapath data/STC_test.json --out_path STC_result.txt # Do Inference on a corpus
python interact.py --model_checkpoint YOUR_MODEL_PATH # Interact on the terminal
ps: Скачать тестовый сплит STC можно по следующим ссылкам: (Baidu Netdisk, Google Drive)
Аргументы обучения
Аргументы | Тип | Значение по умолчанию | Описание |
---|---|---|---|
model_checkpoint | ул. | "" | Путь или URL-адрес файлов модели (каталог модели предварительного обучения и файлов конфигурации/словаба) |
предварительно обученный | логическое значение | ЛОЖЬ | Если False, то обучаем модель с нуля. |
путь_к данным | ул. | "" | Путь к набору данных |
dataset_cache | ул. | по умолчанию="набор_данных_кэш" | Путь или URL-адрес кэша набора данных |
поезд_путь | ул. | "" | Путь обучающего набора для распределенного набора данных |
действительный_путь | ул. | "" | Путь набора проверки для распределенного набора данных |
файл_журнала | ул. | "" | Выводить журналы в файл по этому пути |
num_workers | интервал | 1 | Количество подпроцессов загрузки данных |
n_epochs | интервал | 70 | Количество эпох обучения |
train_batch_size | интервал | 8 | Размер пакета для обучения |
valid_batch_size | интервал | 8 | Размер партии для проверки |
max_history | интервал | 15 | Количество предыдущих обменов, которые нужно сохранить в истории |
планировщик | ул. | "ноам" | Метод оптимизатора |
н_емд | интервал | 768 | Количество n_emd в файле конфигурации (для noam) |
eval_before_start | логическое значение | ЛОЖЬ | Если это правда, начните оценку перед тренировкой. |
разминка_шаги | интервал | 5000 | Шаги для разминки |
действительные_шаги | интервал | 0 | Выполнять проверку каждые X шагов, если не 0 |
градиент_аккумуляция_шаги | интервал | 64 | Накопление градиентов за несколько шагов |
max_norm | плавать | 1.0 | Норма градиента отсечения |
устройство | ул. | «cuda», если torch.cuda.is_available(), иначе «процессор» | Устройство (cuda или процессор) |
фп16 | ул. | "" | Установите O0, O1, O2 или O3 для тренировки fp16 (см. документацию apex). |
local_rank | интервал | -1 | Локальный ранг для распределенного обучения (-1: не распределено) |
Оценка выполняется на основе результатов, полученных с помощью моделей, точно настроенных на
Набор данных STC (разделение Train/Valid (Baidu Netdisk, Google Drive), тестовое разделение (Baidu Netdisk, Google Drive)). Все ответы генерируются с использованием схемы выборки Nucleus с порогом 0,9 и температурой 0,7.
Модели | Размер модели | ЗГЗ | БЛЕУ-2 | БЛЕУ-4 | Расст-1 | Расст-2 | Жадное сопоставление | Встраивание среднего |
---|---|---|---|---|---|---|---|---|
Attn-Seq2seq | 73М | 34.20 | 3,93 | 0,90 | 8,5 | 11.91 | 65,84 | 83,38 |
Трансформатор | 113М | 22.10 | 6,72 | 3.14 | 8,8 | 13.97 | 66.06 | 83,55 |
GPT2-болтовня | 88М | - | 2.28 | 0,54 | 10.3 | 16.25 | 61,54 | 78,94 |
GPT Роман | 95,5 млн. | 21.27 | 5,96 | 2,71 | 8.0 | 11.72 | 66,12 | 83,34 |
GPT LCCC-база | 95,5 млн. | 18.38 | 6.48 | 3.08 | 8.3 | 12,68 | 66,21 | 83,54 |
GPT2 LCCC-база | 95,5 млн. | 22,76 | 5,69 | 2,50 | 7,7 | 10.87 | 66,24 | 83,46 |
GPT LCCC-большой | 95,5 млн. | 18.23 | 6,63 | 3.20 | 8.3 | 12.71 | 66,25 | 83,63 |
Мы также использовали 3 краудсорсинговых аннотаторов для оценки 200 образцов каждой модели на предмет беглости, релевантности и разнообразия на основе схемы оценок 2/1/0. Более подробную информацию можно найти в нашей статье.
Модели | +2 | +1 | +0 | Каппа |
---|---|---|---|---|
Attn-Seq2Seq | 27,1% | 21,4% | 51,4% | 0,4544 |
Трансформатор | 42,4% | 23,6% | 34,0% | 0,4429 |
GPT2-болтовня | 24,3% | 19,1% | 56,6% | 0,3941 |
GPT LCCC-база | 46,7% | 21,8% | 31,5% | 0,3954 |
GPT LCCC-большой | 48,6% | 24,5% | 27,0% | 0,4203 |
Мы случайным образом выбираем 1000 сгенерированных образцов и составляем статистику генерации токсичных веществ:
Повторение | Грязное слово | Другие плохие случаи |
---|---|---|
двадцать три | 9 | 2 |
Примеры, сгенерированные за один оборот, из набора данных STC (тонкая настройка на STC):
Почта | Ответ |
---|---|
На самом деле это Пекин, а не Харбин. | Погода в Харбине, кажется, лучше, чем в Пекине. Здесь идет небольшой дождь и днем дует сильный ветер. |
Конкурс рекламы в кампусе оператора был очень веселым! Ха-ха-ха. | Я думал, это реклама Джека Ма. |
Свадебное платье Delsa S posa серии конфетных цветов, розовое, синее, красное и фиолетовое, игривое и свежее, вам оно нравится? | Последняя такая красивая, такая красивая! |
Примеры, сгенерированные в несколько ходов с использованием интерактивного скрипта:
Роэл | Ответ |
---|---|
Пользователь | Не люби меня безрезультатно |
Бот | Бесплодная любовь так болезненна. |
Пользователь | Но ничего страшного, если тебе это понравилось |
Бот | Иногда любовь – это игра. |
Пользователь | я всегда проигрываю |
Бот | Я люблю тебя так же сильно, как люблю тебя. |
Пользователь | Сможешь ли ты это вытащить? |
Бот | Вы можете потянуть его. |
Пользователь | Не подражай мне |
Бот | Я говорю, что вы не можете этого сделать. |
Пользователь | Ты заставляешь меня это делать, да? |
Бот | Нет, я заставляю тебя говорить, да? |
Ида Ван, Пей Кэ, Иньхэ Чжэн, Кайли Хуан, Юн Цзян, Сяоянь Чжу, Минли Хуан
Цзосянь Е, Яо Ван, Ифань Пан
Набор данных LCCC и предварительно обученные модели призваны облегчить исследование для создания разговоров. Набор данных LCCC, представленный в этом репозитории, получен из различных источников. Несмотря на то, что был проведен строгий процесс очистки, нет никакой гарантии, что все нежелательное содержимое будет удалено. было полностью отфильтровано. Все содержимое этого набора данных не отражает мнение авторов. Этот репозиторий содержит только часть механизмов моделирования, необходимых для реального создания модели диалога. Сценарий декодирования, представленный в этом репозитории, предназначен только для исследовательских целей. Мы не несем ответственности за любой контент, созданный с использованием нашей модели.
Пожалуйста, цитируйте нашу статью, если вы используете наборы данных или модели в своих исследованиях:
@inproceedings{wang2020chinese,
title={A Large-Scale Chinese Short-Text Conversation Dataset},
author={Wang, Yida and Ke, Pei and Zheng, Yinhe and Huang, Kaili and Jiang, Yong and Zhu, Xiaoyan and Huang, Minlie},
booktitle={NLPCC},
year={2020},
url={https://arxiv.org/abs/2008.03946}
}