Длина последовательности индексов токенов Проблема

Я использую модель преобразователя предложений и пытаюсь усечь свои токены, но, похоже, она не работает. Мой код

      from transformers import AutoModel, AutoTokenizer
model_name = "sentence-transformers/paraphrase-MiniLM-L6-v2"
model = AutoModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
    
text_tokens = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
text_embedding = model(**text_tokens)["pooler_output"]

Я получаю следующее предупреждение:

      Token indices sequence length is longer than the specified maximum sequence length 
for this model (909 > 512). Running this sequence through the model will result in 
indexing errors

Мне интересно, зачем устанавливать truncation=True не обрезает мой текст до желаемой длины?

1 ответ

Вам нужно добавить параметр при создании токенизатора, как показано ниже:

text_tokens = tokenizer(text, padding=True, max_length=512, truncation=True, return_tensors="pt")

Причина:

truncation=True без max_length Параметр принимает длину последовательности равной максимально допустимой входной длине модели.

это 1e30 или 1000000000000000019884624838656для этой модели. Вы можете проверить, распечатав tokenizer.model_max_length.

Согласно документации Huggingface о truncation,

Истина или only_first усекает до максимальной длины, указанной аргументом max_length, или максимальной длины, принятой моделью, если max_length не указан (max_length=None).

Другие вопросы по тегам