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)