В этой статье мы рассмотрим, как очистка текста может повысить эффективность анализа настроений в данных Twitter с помощью Transformers из библиотеки Hugging Face. Мы начинаем с базового кода и представляем обновленную версию, в которой твиты предварительно обрабатываются перед их подачей в модель. Цель этого обновления — потенциально сократить время обучения и улучшить производительность модели.

Оригинальный код

Исходный код начинается с загрузки CSV-файла твитов, каждый из которых связан с меткой настроения (положительный, отрицательный, нейтральный, нерелевантный). Он сопоставляет эти метки с целочисленными значениями для понимания модели. Твиты токенизируются с помощью RobertaTokenizerFast из библиотеки Hugging Face, а затем разбиваются на наборы для обучения и тестирования.

Затем определяется набор данных PyTorch, который упрощает ввод данных в модель во время обучения и оценки. Этот набор данных включает в себя как токенизированные кодировки текстов твитов, так и соответствующие им метки.

В модели классификации настроений используется роберта-базовая версия модели RoBERTa, настроенная для классификации последовательностей. Затем эта модель обучается и оценивается с помощью Trainer, при этом такие показатели, как точность, рассчитываются после оценки. Вы можете получить доступ к моей предыдущей статье здесь.

Обновленный код

В обновленной версии кода реализовано важное улучшение — очистка текста. Мы определяем новую функцию clean_tweet для очистки текстов твитов. Эта функция использует регулярные выражения для удаления URL-адресов, упоминаний «@», хэштегов «#», эмодзи и лишних пробелов из твитов.

Вот обновленный сегмент кода:

def clean_tweet(text):
    text = re.sub(r'http\S+|www\S+|https\S+', '', text, flags=re.MULTILINE)  # remove urls
    text = re.sub(r'\@\w+|\#', '', text)  # remove at and hash tags
    text = text.encode('ascii', 'ignore').decode('ascii')  # remove emojis
    text = re.sub(r'\s+', ' ', text).strip()  # remove extra spaces
    return text

df['text'] = df['text'].astype(str).apply(clean_tweet)  # Ensure all data are strings and clean the tweets

Очищенный текст затем используется во всем оставшемся коде таким же образом, как и…