"Обработка естественного языка"
Увеличение текстовых данных
Краткое введение в TextAttack и Googletrans для увеличения текстовых данных
Data Augmentation
- это процесс, который позволяет нам увеличивать размер обучающих данных без фактического сбора данных. Но зачем нам больше данных? Ответ прост - чем больше у нас данных, тем выше производительность модели.
Шаги увеличения данных изображения, такие как отражение, обрезка, поворот, размытие, масштабирование и т. Д., Очень помогли в компьютерном зрении. Кроме того, относительно легко создавать дополненные изображения, но это не относится к Natural Language Processing (NLP)
из-за сложностей, присущих языку. (Например, мы не можем заменить каждое слово его синонимом, и даже если мы заменим его, значение предложения может полностью измениться). Основываясь на моих выводах / исследованиях, я не видел столько исследований по увеличению текстовых данных, сколько по увеличению изображений.
Однако в этой статье мы рассмотрим 2 библиотеки TextAttack
& Googletrans
, с которыми я столкнулся недавно, когда пытался дополнить текстовые данные. Итак, приступим.
Мы применим техники аугментации, которые собираемся изучить на этих цитатах Саймона Синека.
«Лидерство требует двух вещей: видения мира, которого еще не существует, и способности сообщать о нем».
«Роль лидера не в том, чтобы придумывать все великие идеи. Роль лидера - создать среду, в которой могут реализоваться великие идеи »
- Саймон Синек
TextAttack
TextAttack
- это среда Python для состязательных атак, состязательного обучения и увеличения данных в НЛП. В этой статье мы сосредоточимся только на увеличении данных.
Установка
!pip install textattack
Использование
Класс textattack.Augmenter
предоставляет шесть методов для увеличения данных. Подробное описание этих методов вы можете найти в официальной документации.
- WordNetAugmenter
- Встраивание
- CharSwapAugmenter
- EasyDataAugmenter
- CheckListAugmenter
- CLARE
Давайте посмотрим на результаты увеличения данных с помощью этих четырех методов. Обратите внимание, что pct_words_to_swap=0.1
, transformations_per_example=4
передаются каждому из этих методов по умолчанию. При необходимости мы можем изменить эти значения по умолчанию.
Мы можем применить эти методы к реальным данным, чтобы увеличить размер данных. Пример кода приведен ниже. Здесь исходныйtrain
фрейм данных копируется в train_aug
фрейм данных, а затем применяется расширение train_aug
. И, наконец, train_aug
добавляется к исходному набору данных train
.
train_aug = train.copy() from textattack.augmentation import EmbeddingAugmenter aug = EmbeddingAugmenter() train_aug['text'] = train_aug['text'].apply(lambda x: str(aug.augment(x))) train = train.append(train_copy, ignore_index=True)
Гугл Переводчик
Googletrans
построен на основе Google Translate API. Для определения языка и перевода используется Google Translate Ajax API.
Установка
!pip install googletrans
использование
Ключевые параметры метода translate()
:
src
: исходный язык. Необязательный параметр googletrans
определит это.
dest
: целевой язык. Обязательный параметр.
text
: текст, который нужно перевести с исходного языка на целевой. Обязательный параметр.
Как мы видим, данный текст сначала переводится с English
на Italian
, а затем переводится обратно на English
. Во время этого обратного перевода, как мы видим, есть небольшое изменение в предложении между исходным текстом и обратным переводом, но общее значение предложения все еще сохраняется.
Мы можем применить эту технику к реальным данным. Пример кода приведен ниже. Здесь исходный train
фрейм данных копируется в tran_aug
dataframe, а затем back-translation
применяется к train_aug
фрейму данных. И, наконец, train_aug
добавляется к исходному train
фрейму данных. Обратите внимание, что мы переводим исходный текст с английского на итальянский, а затем с итальянского на английский.
train_aug = train.copy() from googletrans import Translator translator = Translator() train_aug['text'] = train_aug['text'].apply(lambda x: translator.translate(translator.translate(x, dest='it').text, dest='en').text) train = train.append(train_aug, ignore_index=True)
Заключение
Теперь вы знаете, как использовать библиотеки TextAttack
и Googletrans
в ваших проектах по науке о данных для увеличения текстовых данных.
Чтобы читать больше таких интересных статей о Python и Data Science, подпишитесь на мой блог www.pythonsimplified.com. Вы также можете связаться со мной в LinkedIn.