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/