1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-google-pegasus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PEGASUS library

Предварительное обучение с использованием извлечённых предложений для абстрактного обобщения.

Последовательные модели или PEGASUS используют самоконтролируемую цель генерации предложений Gap Sentences (GSG) для обучения модели кодировщика-декодера на основе трансформатора. С текстом можно ознакомиться по ссылке arXiv. Принято ICML 2020.

Если вы используете этот код или эти модели, пожалуйста, укажите следующую статью:

@misc{zhang2019pegasus,
    title={PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization},
    author={Jingqing Zhang and Yao Zhao and Mohammad Saleh and Peter J. Liu},
    year={2019},
    eprint={1912.08777},
    archivePrefix={arXiv},
    primaryClass={cs.CL}
}

PEGASUS-X / Flax Реализация

Обновление (2022/08): Перейдите на pegasus/flax для моделей PEGASUS-X.

Обновление результатов

Мы обучаем модель pegasus с выбранными коэффициентами соотношения предложений промежутков как на C4, так и на HugeNews, а также стохастически выбираем важные предложения. Обновлённые результаты представлены в этой таблице.

| набор данных | C4 | HugeNews | Смешанный и стохастический| | --- | ---22,06/36,99 | 47,21/24,56/39,25 | 47,60/24,83/39,64| | xsum | | | | | cnn_dailymail | 43,90/21,20/40,76 | 44,17/21,47/41,11 | 44,16/21,56/41,30| | newsroom | 45,07/33,39/41,28 | 45,15/33,51/41,33 | 45,98/34,20/42,18| | multi_news | 46,74/17,95/24,26 | 47,52/18,72/24,91 | 47,65/18,75/24,95| | gigaword | 38,75/19,96/36,14 | 39,12/19,86/36,24 | 39,65/20,47/36,76| | wikihow | 43,07/19,70/34,79 | 41,35/18,51/33,42 | 46,39/22,12/38,41 *| | reddit_tifu | 26,54/8,94/21,64 | 26,63/9,01/21,60 | 27,99/9,81/22,94| | big_patent | 53,63/33,16/42,25 | 53,41/32,89/42,07 | 52,29/33,08/41,66 *| | arxiv | 44,70/17,27/25,80 | 44,67/17,18/25,73 | 44,21/16,95/25,67| | pubmed | 45,49/19,90/27,69 | 45,09/19,56/27,42 | 45,97/20,15/28,25| | aeslc | 37,69/21,85/36,84 | 37,40/21,22/36,45 | 37,68/21,25/36,51| | billsum | 57,20/39,56/45,80 | 57,31/40,19/45,82 | 59,67/41,58/47,59|

Модель «Смешанная и стохастическая» имеет следующие изменения: — обучена как на C4, так и на HugeNews (смесь наборов данных взвешена по количеству примеров); — обучена в течение 1,5 млн вместо 500 тыс. (мы наблюдаем более медленное схождение на предварительном обучении перплексии); — модель равномерно выбирает коэффициент соотношения предложений промежутка от 15 % до 45 %; — важные предложения выбираются с помощью 20 % равномерного шума к баллам важности; — токенизатор sentencepiece обновлён, чтобы иметь возможность кодировать символ новой строки.

(*) числа наборов данных wikihow и big_patent не сопоставимы из-за изменений в токенизации и данных: — набор данных wikihow содержит символы новой строки, которые полезны для сегментации абзацев, токенизатор sentencepiece модели C4 и HugeNews не кодирует новую строку и теряет эту информацию; — мы обновляем набор данных BigPatent, чтобы сохранить регистр, некоторые очистки формата также изменены, обратитесь к изменениям в TFDS.

Настройка

Создайте экземпляр в облаке Google с GPU (необязательно)

Сначала создайте проект и создайте экземпляр.

gcloud compute instances create \
  ${VM_NAME} \
  --zone=${ZONE} \
  --machine-type=n1-highmem-8 \
  --accelerator type=nvidia-tesla-v100,count=1 \
  --boot-disk-size=500GB \
  --image-project=ml-images \
  --image-family=tf-1-15 \
  --maintenance-policy TERMINATE --restart-on-failure

Установите библиотеку и зависимости

Клонируйте библиотеку на github и установите требования.

git clone https://github.com/google-research/pegasus
cd pegasus
export PYTHONPATH=.
pip3 install -r requirements.txt

Скачайте словарь, предварительно обученные и точно настроенные контрольные точки всех экспериментов из Google Cloud (https://console.cloud.google.com/storage/browser/pegasus_ckpt).

В качестве альтернативы в терминале следуйте инструкциям и установите gsutil (https://cloud.google.com/storage/docs/gsutil_install). Затем

mkdir ckpt
gsutil cp -r gs://pegasus_ckpt/ ckpt/

Точная настройка на нисходящих наборах данных

На существующем наборе данных

Точно настройте на существующем наборе данных aeslc.

python3 pegasus/bin/train.py --params=aeslc_transformer **Перевод текста на русский язык:**

--param_overrides=vocab_filename=ckpt/pegasus_ckpt/c4.unigram.newline.10pct.96000.model \
--train_init_checkpoint=ckpt/pegasus_ckt/model.ckpt-1500000 \
--model_dir=ckpt/pegasus_ckpt/aeslc

Если вы хотите провести тонкую настройку на подмножестве набора данных, обратитесь к [примеру входного шаблона](https://github.com/google-research/pegasus/blob/master/pegasus/data/datasets.py#L186).

Оцените на настроенном наборе данных.

python3 pegasus/bin/evaluate.py --params=aeslc_transformer
--param_overrides=vocab_filename=ckpt/pegasus_ckpt/c4.unigram.newline.10pct.96000.model,batch_size=1,beam_size=5,beam_alpha=0.6
--model_dir=ckpt/pegasus_ckpt/aeslc


Обратите внимание, что в приведённом выше примере используется один графический процессор, поэтому размер пакета намного меньше, чем результаты, представленные в статье.

## Добавить новый набор данных для тонкой настройки

Поддерживаются два типа форматов наборов данных: [TensorFlow Datasets (TFDS)](https://www.tensorflow.org/datasets) или TFRecords.

[Этот учебник](https://www.tensorflow.org/datasets/add_dataset) показывает, как добавить новый набор данных в TFDS. (Ожидается, что набор данных для точной настройки будет контролируемым, пожалуйста, предоставьте `supervised_keys` в информации о наборе данных).

Формат Tfrecords требует, чтобы каждая запись была tf-примером `{"inputs":tf.string, "targets":tf.string}`.

Например, если вы зарегистрировали набор данных TFDS под названием `new_tfds_dataset` для обучения и оценки, и у вас есть некоторые файлы в формате tfrecord под названием `new_dataset_files.tfrecord*` для теста, они могут быть зарегистрированы в `/pegasus/params/public_params.py`.

@registry.register("new_params") def my_param(param_overrides): return public_params.transformer_params( { "train_pattern": "tfds:new_tfds_dataset,train", "dev_pattern": "tfds:new_tfds_dataset,validation", "test_pattern": "tfrecord:new_dataset_files.tfrecord*", "max_input_len": 512, "max_output_len": 128, "train_steps": 10000, "learning_rate": 0.0001, "batch_size": 8, }, param_overrides)


## Метрики оценки

Результаты оценки можно найти в `mode_dir`. Для каждой точки оценки автоматически рассчитываются метрики суммирования.

-   [ROUGE](https://www.aclweb.org/anthology/W04-1013.pdf) является основной метрикой качества суммирования.
-   [BLEU](https://www.aclweb.org/anthology/P02-1040.pdf) — альтернативная метрика качества для генерации языка.
-   [Охват и плотность экстракционных фрагментов](https://arxiv.org/pdf/1804.11283.pdf) являются метриками, которые измеряют абстрактность резюме.
-   Частота повторения измеряет режимы отказа генерации повторений.
-   Статистика длины измеряет распределение длины декодирования по сравнению с золотым резюме.

В `model_dir` можно найти несколько типов выходных файлов:

-   text_metrics-*.txt: указанные выше метрики в текстовом формате. Каждая строка содержит название метрики, значение нижней границы 95%, среднее значение, значение верхней границы 95%.
-   inputs-*.txt, targets-*.txt, predictions-*.txt: необработанные текстовые файлы входных данных модели/выходов.

# Предварительное обучение

Предварительное обучение (на C4 или любом другом корпусе) требует специально созданного тензорного потока, который включает операции для синтаксического анализа «на лету», который обрабатывает необработанный текстовый документ во входные данные модели и идентификаторы целей. Пожалуйста, обратитесь к pegasus/ops/pretrain_parsing_ops.cc и pegasus/data/parsers.py для получения подробной информации.

# Благодарности
Содержит части кода и дизайна для обучения и оценки моделей суммирования, первоначально созданные Беном Гудричем <bgoodrich@google.com>.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Архитектура Tianma от команды Google AI, основанная на трансформерах для кодирования и декодирования. Развернуть Свернуть
Python и 3 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-google-pegasus.git
git@api.gitlife.ru:oschina-mirror/mirrors-google-pegasus.git
oschina-mirror
mirrors-google-pegasus
mirrors-google-pegasus
main