Hugginface Transformers Bert Tokenizer - Узнайте, какие документы усекаются
Я использую библиотеку Transforms от Huggingface для создания модели классификации текста на основе Bert. Для этого я токенизирую свои документы и устанавливаю усечение равным true, поскольку мои документы длиннее допустимого (512).
Как я могу узнать, сколько документов на самом деле усекается? Я не думаю, что длина (512) — это количество символов или слов в документе, поскольку Tokenizer подготавливает документ в качестве входных данных для модели. Что происходит с документом и есть ли прямой способ проверить, усекается ли он?
Это код, который я использую для токенизации документов.
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-multilingual-cased")
model = BertForSequenceClassification.from_pretrained("distilbert-base-multilingual-cased", num_labels=7)
train_encoded = tokenizer(X_train, padding=True, truncation=True, return_tensors="pt")
Если у вас есть еще вопросы по моему коду или проблеме, не стесняйтесь спрашивать.
1 ответ
ваше предположение верно!
все, что имеет длину больше 512 (при условии, что вы используете «distilbert-base-multilingual-cased»), усекается, имея
truncation=True
.
Быстрым решением было бы не усекать и не подсчитывать примеры, превышающие максимальную входную длину модели:
train_encoded_no_trunc = tokenizer(X_train, padding=True, truncation=False, return_tensors="pt")
count=0
for doc in train_encoded_no_trunc.input_ids:
if(doc>0).sum()> tokenizer.model_max_length:
count+=1
print("number of truncated docs: ",count)