BERT Мультиклассовая классификация текста в Google Colab

Я работаю над набором данных комментариев в социальных сетях (включая ссылки на YouTube) в качестве входных данных и личностный профиль Майерс-Биггс в качестве целевой метки:

    type    posts
0   INFJ    'http://www.youtube.com/watch?v=qsXHcwe3krw|||...
1   ENTP    'I'm finding the lack of me in these posts ver...
2   INTP    'Good one _____ https://www.youtube.com/wat...
3   INTJ    'Dear INTP, I enjoyed our conversation the o...
4   ENTJ    'You're fired.|||That's another silly misconce...

но из того, что я нашел, BERT хочет, чтобы DataFrame был в этом формате:

a   label   posts
0   a   8   'http://www.youtube.com/watch?v=qsXHcwe3krw|||...
1   a   3   'I'm finding the lack of me in these posts ver...
2   a   11  'Good one _____ https://www.youtube.com/wat...
3   a   10  'Dear INTP, I enjoyed our conversation the o...
4   a   2   'You're fired.|||That's another silly misconce...

Полученный результат должен быть прогнозом для тестового набора комментариев, разделенных на четыре столбца, по одному для каждого профиля личности, где, например, "Mind" = 1 - это метка для Extrovert. В основном, разделение типа вроде INFJ на "Mind", "Energy", "Nature", "Tactics", например:

    type    post    Mind    Energy  Nature  Tactics
0   INFJ    'url-web    0   1   0   1
1   INFJ    url-web 0   1   0   1
2   INFJ    enfp and intj moments url-web sportscenter n... 0   1   0   1
3   INFJ    What has been the most life-changing experienc...   0   1   0   1
4   INFJ    url-web url-web On repeat for most of today.    0   1   0   1

Я установил pytorch-pretrained-bert, используя:

!pip install pytorch-pretrained-bert

Я импортировал модели и попытался токенизировать столбец 'posts', используя:

import torch
from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForMaskedLM

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

tokenized_train = tokenizer.tokenize(train)

но получите эту ошибку:

TypeError: ord() expected a character, but string of length 5 found

Я попробовал это, основываясь на GitHub Repo, подготовленном для pytorch, и на YouTube.

Я стажер Data Science, не имеющий опыта глубокого обучения. Я просто хочу поэкспериментировать с моделью BERT самым простым способом, чтобы предсказать классифицированный вывод по нескольким классам, чтобы я мог сравнить результаты с более простыми моделями классификации текста, над которыми мы сейчас работаем. Я работаю в Google Colab, и в результате должен быть файл.csv.

Я понимаю, что это сложная модель, и вся документация и примеры, связанные с моделью, являются сложными (тонкая настройка слоев и т. Д.), Но любая помощь для простой реализации (если на самом деле есть такая вещь) для начинающего Data Scientist с минимальным программным обеспечением Инженерный опыт, будет высоко ценится.

0 ответов

Я рекомендую вам начать с простой задачи классификации BERT, например, следуя этому прекрасному руководству: https://mccormickml.com/2019/07/22/BERT-fine-tuning/

Затем вы можете перейти к мульти-метке, выполнив следующие действия: https://medium.com/huggingface/multi-label-text-classification-using-bert-the-mighty-transformer-69714fa3fb3d

Только после этого я бы порекомендовал вам попробовать свою задачу на собственном наборе данных.

Проще - это субъективный термин. Предполагая, что вы готовы использовать Tensorflow и keras-bert, вы можете выполнить классификацию текста на несколько классов с помощью BERT следующим образом:

n_classes = 20
model = load_trained_model_from_checkpoint(
  config_path,
  checkpoint_path,
  training=True,
  trainable=True,
  seq_len=SEQ_LEN,
)

# Add dense layer for classification
inputs = model.inputs[:2]
dense = model.get_layer('NSP-Dense').output
outputs = keras.layers.Dense(units=n_classes, activation='softmax')(dense)
model = keras.models.Model(inputs, outputs)

model.compile(
    RAdam(lr=LR),
    loss='sparse_categorical_crossentropy',
    metrics=['sparse_categorical_accuracy'],
)

history = model.fit(
    train_x,
    train_y,
    epochs=EPOCHS,
    batch_size=BATCH_SIZE,
    validation_split=0.20,
    shuffle=True,
)

Вот ссылка на полное руководство с реализацией графического процессора Google Colab для классификации текста по нескольким классам с помощью тонкой настройки BERT для набора данных 20 групп новостей:https://pysnacks.com/machine-learning/bert-text-classification-with-fine-tuning/

Другие вопросы по тегам