Исходный код, используемый для классификации текста с использованием только имен метки: подход самостоятельной подготовки языка , опубликованный в EMNLP 2020.
По крайней мере, один графический процессор требуется для запуска кода.
Перед запуском необходимо сначала установить необходимые пакеты, набрав следующие команды:
$ pip3 install -r requirements.txt
Кроме того, вам нужно скачать стоп -слова в библиотеке NLTK:
import nltk
nltk.download('stopwords')
Python 3.6 или выше настоятельно рекомендуется; Использование старых версий Python может привести к проблемам несовместимости упаковки.
Мы предоставляем четыре сценария get_data.sh для загрузки наборов данных, используемых в документе в разделе datasets и четыре сценария обучения agnews.sh , dbpedia.sh , imdb.sh и amazon.sh для запуска модели на четырех наборах данных.
Примечание: наша модель не использует учебные этикетки; Мы предоставляем учебные/тестовые метки истины только для полноты и оценки.
Сценарии тренировочных сборов предполагают, что у вас есть два 10 ГБ графических процессоров. Если у вас есть различное количество графических процессоров или графические процессоры разных размеров памяти, см. В следующем разделе, чтобы правильно изменить аргументы следующих командных строк (при при этом без изменений в сохранении других аргументов): train_batch_size , accum_steps , eval_batch_size и gpus .
Значения аргументов командной строки будут отображаться при печати
python src/train.py -h
Следующие аргументы напрямую влияют на производительность модели и должны быть тщательно установить:
train_batch_size , accum_steps , gpus : эти три аргумента должны быть установлены вместе. Вы должны убедиться, что эффективный размер пакета обучения , рассчитываемый как train_batch_size * accum_steps * gpus , составляет около 128 . Например, если у вас 4 графические процессоры, то вы можете установить train_batch_size = 32, accum_steps = 1, gpus = 4 ; Если у вас есть 1 GPU, то вы можете установить train_batch_size = 32, accum_steps = 4, gpus = 1 . Если ваши графические процессоры имеют разные размеры памяти, вам может потребоваться изменить train_batch_size при настройке accum_steps и gpus одновременно, чтобы сохранить эффективный размер пакета обучения около 128 .eval_batch_size : этот аргумент влияет только на скорость алгоритма; Используйте как большой размер оценки, как могут удерживать ваши графические процессоры.max_len : Этот аргумент контролирует максимальную длину документов, поданных в модель (будут усечены более длительные документы). В идеале max_len следует установить на длину самого длинного документа ( max_len не может быть больше 512 в Architecture BERT), но с использованием большего max_len также потребляет больше памяти графического процессора, что приводит к меньшему размеру партии и более длительному времени обучения. Поэтому вы можете обменять точность модели на более быстрое обучение, уменьшив max_len .mcp_epochs , self_train_epochs : Они контролируют, сколько эпох для обучения модели маскированной задаче прогнозирования категории и задачи самостоятельного подготовки соответственно. Установка mcp_epochs = 3, self_train_epochs = 1 будет хорошей отправной точкой для большинства наборов данных, но вы можете увеличить их, если ваш набор данных невелик (менее 100,000 документов).Другие аргументы могут быть сохранены в качестве значений по умолчанию.
Чтобы выполнить код в новом наборе данных, вам нужно
your_dataset под datasets .train.txt (один документ на строку) в соответствии с your_dataset для обучения модели классификации (метки документов не требуются).label_names.txt в соответствии с your_dataset (каждая строка содержит имя метки одной категории; если несколько слов используются в качестве имени метки категории, поместите их в одну и ту же строку и отделяйте их с помощью персонажей -пробелов).test.txt (один документ на строку) с наземными метками истины test_labels.txt (каждая строка содержит целое число, обозначающее индекс категории соответствующего документа, индекс начинается с 0 , а порядок должен соответствовать порядку категории в label_names.txt ). Если тестовый корпус предоставлен, код будет записывать результаты классификации out.txt под your_dataset после завершения обучения. Если представлены наземные этикетки истины тестового корпуса, точность теста будет отображаться во время самолета, что полезно для настройки гиперпараметрических и моделей вишни с использованием небольшого тестового набора.final_model.pt под your_dataset .Примечание. Код будет кэшировать промежуточные данные и контрольные точки модели в виде файлов .pt в вашем каталоге набора данных для дальнейшего обучения. Если вы измените свой учебный корпус или имена ярлыков и повторно запустите код, вам необходимо сначала удалить все файлы .pt, чтобы предотвратить загрузку старых результатов код.
Вы всегда можете обратиться к примерам наборов данных при подготовке собственных наборов данных.
Пожалуйста, цитируйте следующую статью, если вы найдете код полезным для исследования.
@inproceedings{meng2020text,
title={Text Classification Using Label Names Only: A Language Model Self-Training Approach},
author={Meng, Yu and Zhang, Yunyi and Huang, Jiaxin and Xiong, Chenyan and Ji, Heng and Zhang, Chao and Han, Jiawei},
booktitle={Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing},
year={2020},
}