PyTorch Huggingface BERT-NLP для распознавания именованных объектов - PullRequest
0 голосов
/ 25 февраля 2019

Я уже давно использую реализацию PyTorch для BERT от HuggingFace от Google для набора данных MADE 1.0.Вплоть до последнего раза (11 февраля) я использовал библиотеку и получал F-Score из 0,81 для своей задачи распознавания именованных объектов путем точной настройки модели.Но на этой неделе, когда я запустил точно такой же код, который был скомпилирован и выполнен ранее, при выполнении этого оператора возникла ошибка:

input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")

ValueError: Длина последовательности индексов токена больше указанного максимумадлина последовательности для этой модели BERT (632> 512).Выполнение этой последовательности через BERT приведет к ошибкам индексации

Полный код доступен в этой записной книжке colab .

Чтобы обойти эту ошибку, я изменил вышеупомянутыеприведите к приведенному ниже, взяв первые 512 токенов любой последовательности и внеся необходимые изменения, чтобы добавить индекс [SEP] в конец усеченной / дополненной последовательности, как того требует BERT.

input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt[:512]) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")

Результат не должен был измениться, потому что я рассматриваю только первые 512 токенов в последовательности, а затем урезаю до 75 как мое (MAX_LEN = 75), но мой F-Score упал до 0,40 и моя точность до 0,27 , в то время как Recall остается неизменным (0,85) .Я не могу предоставить доступ к набору данных, так как подписал предложение о конфиденциальности, но могу заверить, что вся предварительная обработка, как того требует BERT, была выполнена, и все расширенные токены, такие как (Johanson -> Johan ## son), были помечены знаком X и заменены.позже, после предсказания, как сказано в BERT Paper .

Кто-нибудь еще сталкивался с подобной проблемой или может уточнить, в чем может быть проблема или какие изменения сделали люди PyTorch (Huggingface)на их конец в последнее время?

1 Ответ

0 голосов
/ 01 марта 2019

Я нашел исправление, чтобы обойти это.Выполнение того же кода с pytorch-pretrained-bert == 0.4.0 решает проблему, и производительность восстанавливается до нормальной.В обновлении BERT Tokenizer или BERTForTokenClassification есть что-то, что влияет на производительность модели.Надеюсь, что HuggingFace скоро это прояснит.:)

pytorch-pretrained-bert == 0.4.0, тест F1-Оценка: 0.82

pytorch-pretrained-bert == 0.6.1, тест F1-оценка: 0.41

Спасибо.

...