Я уже давно использую реализацию 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)на их конец в последнее время?