В этой статье мы рассмотрим, как очистка текста может повысить эффективность анализа настроений в данных 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
Очищенный текст затем используется во всем оставшемся коде таким же образом, как и…