"Обработка естественного языка"

Увеличение текстовых данных

Краткое введение в TextAttack и Googletrans для увеличения текстовых данных

Data Augmentation - это процесс, который позволяет нам увеличивать размер обучающих данных без фактического сбора данных. Но зачем нам больше данных? Ответ прост - чем больше у нас данных, тем выше производительность модели.

Шаги увеличения данных изображения, такие как отражение, обрезка, поворот, размытие, масштабирование и т. Д., Очень помогли в компьютерном зрении. Кроме того, относительно легко создавать дополненные изображения, но это не относится к Natural Language Processing (NLP) из-за сложностей, присущих языку. (Например, мы не можем заменить каждое слово его синонимом, и даже если мы заменим его, значение предложения может полностью измениться). Основываясь на моих выводах / исследованиях, я не видел столько исследований по увеличению текстовых данных, сколько по увеличению изображений.

Однако в этой статье мы рассмотрим 2 библиотеки TextAttack & Googletrans, с которыми я столкнулся недавно, когда пытался дополнить текстовые данные. Итак, приступим.

Мы применим техники аугментации, которые собираемся изучить на этих цитатах Саймона Синека.

«Лидерство требует двух вещей: видения мира, которого еще не существует, и способности сообщать о нем».

«Роль лидера не в том, чтобы придумывать все великие идеи. Роль лидера - создать среду, в которой могут реализоваться великие идеи »

- Саймон Синек

TextAttack

TextAttack - это среда Python для состязательных атак, состязательного обучения и увеличения данных в НЛП. В этой статье мы сосредоточимся только на увеличении данных.

Установка

!pip install textattack

Использование

Класс textattack.Augmenter предоставляет шесть методов для увеличения данных. Подробное описание этих методов вы можете найти в официальной документации.

  1. WordNetAugmenter
  2. Встраивание
  3. CharSwapAugmenter
  4. EasyDataAugmenter
  5. CheckListAugmenter
  6. 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.

использованная литература