Адаптируйте код предобработки из уроков к задаче классификации твитов:

  • Загрузите файл с твитами /datasets/tweets.csv.
  • Токенизируйте каждый твит.
  • Найдите максимальную длину векторов после токенизации.
  • Примените padding к векторам и создайте маску для выделения важных токенов.
  • Выведите на экран размер этой маски

Подсказка

Чтобы токенизировать все твиты, примените метод apply():

tokenized = df_tweets['text'].apply(
  lambda x: tokenizer.encode(x, add_special_tokens=True)) 

import pandas as pd
import numpy as np
import torch
import transformers

# загрузим данные
df_tweets = pd.read_csv('/datasets/tweets.csv')

# инициализируем токенизатор
tokenizer = transformers.BertTokenizer(vocab_file='/datasets/ds_bert/vocab.txt')

# токенизируем текст
#vector = tokenizer.encode('Очень удобно использовать уже готовый трансформатор текста', add_special_tokens=True)
tokenized = df_tweets['text'].apply(lambda x: tokenizer.encode(x, add_special_tokens=True)) 

# находим максимальную длину векторов после токенизации
max_len = 0
for i in tokenized.values:
    if len(i) > max_len:
        max_len = len(i)

# применим padding к векторам
n = 280
# англ. вектор с отступами
padded = vector + [0]*(n - len(vector))

# создадим маску для важных токенов
attention_mask = np.where(padded != 0, 1, 0)

print(max_len)

Результат

133! Именно столько элементов в самом длинном векторе токенов. Видимо, выборка была составлена до «символьной революции Твиттера». Сейчас-то твит уже не тот... (Может содержать до 280 символов!)