Как использовать мою обученную модель BERT NER (распознавание именованных объектов), чтобы предсказать новый пример? - PullRequest
2 голосов
/ 12 февраля 2020

Я обучил свой собственный BERT NER, следуя этому посту Medium: https://medium.com/@yingbiao/ner-with-bert-in-action-936ff275bc73

Я сохранил свою модель на диск c и успешно загрузил ее.

model = BertForTokenClassification.from_pretrained(bert_out_address, num_labels=len(tag2idx))

model.eval () работает:

model.eval()

Я новичок в BERT и трансформаторе lib. Я ожидал бы, что что-то похожее на

model.predict('Hello I am an example sentence') 

покажет мне распознанные сущности.

Я также попытался:

input_ids = torch.tensor([tokenizer.encode("Here is some text to encode")])
output = model(input_ids)

, где вывод дает мне большой тензор, и я делаю не знаю, что с этим делать.

Как я могу использовать модель сейчас, чтобы предсказать сущности в примере предложения? Что мне делать с выводом?

Спасибо!

1 Ответ

3 голосов
/ 13 февраля 2020

В документации BertForTokenClassification говорится, что он возвращает оценки до softmax, то есть ненормализованные вероятности тегов.

Вы можете декодировать теги, беря максимум из распределений (следует быть измерением 2). Это даст вам индексы наиболее вероятных тегов. До того, как вы обучили модель, вы преобразовали теги в индексы (используя таблицу tag2idx), теперь вам нужно выполнить обратный процесс и теги для идентификаторов.

...