Чтобы сначала дать некоторый контекст, я пытаюсь реализовать оценку сходства новостных статей. Проблема, с которой я столкнулся, заключается в том, что модель, которую я использую, может принимать только 768 токенов (?), но когда я ограничиваю ее этим, она выдает мне ошибку о том, что размер тензора равен 512. Прежде всего, какие ресурсы я могу использовать чтобы узнать больше об этом, поскольку это постоянное обучение и действие. Во-вторых, это функция для получения вложений (Python):
Код: Выделить всё
def get_embeddings_bert(text: str, tokenizer, model) -> list:
inputs = tokenizer(
text,
max_length=512,
padding='max_length',
truncation=True,
return_tensors="pt"
)
output = model(**inputs, output_hidden_states=True)
document_embedding = output.hidden_states[-1]
document_embedding = torch.mean(document_embedding[0], dim=1) # average
document_embedding_list = document_embedding.squeeze().detach().numpy().tolist()
return document_embedding_list
Несколько месяцев назад мне дали задание сделать что-то подобное, получилось здорово, но я не могу повторить то же самое, что делал там и здесь. В этом конкретном случае я разбил текст на части и затем передал его токенизатору. В любом случае, любая помощь приветствуется! Спасибо!
Подробнее здесь:
https://stackoverflow.com/questions/789 ... bert-model