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...

В результате должен получиться прогноз на основе тестового набора комментариев, разделенных на четыре столбца, по одному для каждого профиля личности, где, например, «Разум» = 1 - это метка для экстраверта. В основном такое разделение типа INFJ на «Разум», «Энергия», «Природа», «Тактика», например:

    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

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

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

Я пробовал это на основе репозитория pytorch-pretrained-bert GitHub и видео на Youtube.

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

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


person Thabied Majal    schedule 23.06.2019    source источник


Ответы (2)


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

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

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

person Julian Pani    schedule 07.10.2019
comment
Хотя эти ссылки могут дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылки для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person Lomtrur; 07.10.2019

Проще - это субъективный термин. Предполагая, что вы открыты для использования 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/#multi-class-text-classification-using-bert

person kundan    schedule 13.05.2020