Итак, я запустил пользовательскую классификацию токенов Roberta, и у меня есть выходной идентификатор токена, который выглядит следующим образом, каждый из выходных идентификаторов имеет соответствующую метку.
Ġlives
Ġo
Ġn
ĠCali
Каждый из этих токенов поставляется со своим прогнозная метка. Детоканизация текста тривиальна, но она теряет соответствие с метками прогноза.
detokenized = ''.join(tokens).replace('Ġ', ' ')
Однако задача состоит в том, чтобы сопоставить метки с детоксицированным текстом. если кто-то может указать мне сценарий или метод, чтобы использовать для решения этой проблемы, было бы очень приятно. Также ниже представлен мой сценарий прогнозирования, который был изменен из сценария BERT.
tags, t_words = [], [] #tokenize
for row in test_df:
tokenized_sentence = tokenizer.encode(row)
input_ids = torch.tensor([tokenized_sentence]).cuda()
with torch.no_grad(): #predict
output = model(input_ids)
label_indices = np.argmax(output[0].to('cpu').numpy(), axis=2)
# join split tokens
new_tokens, new_labels = [], []
tokens = tokenizer.convert_ids_to_tokens(input_ids.to('cpu').numpy()[0] )
for token, label_idx in zip(tokens, label_indices[0]):
new_labels.append(tag_values[label_idx])
new_tokens.append(token)
tags.append(new_labels)
t_words.append(new_tokens)
, но есть ли способ, чтобы метки прогнозирования соответствовали детоксинизированным входам, иначе вся попытка прогнозирования не имеет смысла.