Результаты AllenNLP Reading Computing в демонстрации пользовательского интерфейса и библиотеке Python отличаются

Я пытаюсь AllenNLP reading comprehension с Transformer QA Model получить ответ на вопрос "Who is CEO of ABB?" из отрывка "ABB opened its first dedicated global healthcare research center for robotics in October 2019.".

Как и ожидалось, демонстрация пользовательского интерфейса показывает no answer returned. Ответ API на вкладке сети также показывает это. В ответе json best_span_str пусто, но best_span_scores равно 9.9. Снимок экрана демонстрационного пользовательского интерфейса и ответа API на вкладке сети.

Когда я выполняю аналогичный код через библиотеку python, я получаю другой результат.

from allennlp.predictors.predictor import Predictor
import pandas

def allen_nlp_demo_1():
  import allennlp_models.structured_prediction
  import allennlp_models.rc
  predictor = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/transformer-qa-2020-05-26.tar.gz")
  data = predictor.predict(
    passage="ABB opened its first dedicated global healthcare research center for robotics in October 2019.",
    question= "Who is CEO of ABB?"
  )
  print(data)

if __name__ == '__main__':
  allen_nlp_demo_1()

обеспечивает следующий вывод json

{
  "span_start_logits": [...],
  "best_span": [
    7,
    15
  ],
  "best_span_scores": -10.418445587158203,
  "loss": 0,
  "best_span_str": "healthcare research center for robotics in October 2019",
  "context_tokens": [...],
  "id": "1",
  "answers": []
}

Здесь я вижу, что идет best_span_str, а best_span_scores как -10.418445587158203. Прикрепление кода Python и фрагмента вывода.

Почему такая разница в выводе в демонстрации пользовательского интерфейса и библиотеке? Кроме того, каков диапазон best_span_scores и где я могу определить порог для отбрасывания ложных результатов?


person sujoysett    schedule 03.11.2020    source источник


Ответы (1)


  1. Что касается расхождения в выводе демонстрации и вашего прогона, это связано с тем, что фактическая демонстрация использует другой архивный файл. Код использования в демонстрации был обновлен, чтобы отразить новый путь к файлу (transformer-qa-2020-10-03.tar.gz).

  2. Для нахождения best_span модель считает, что прогноз токена cls означает, что на вопрос нет ответа. На это указывает best_spans, что равно [-1, -1], когда на вопрос нет ответа. В случае, когда на вопрос действительно можно ответить, баллы за промежуток времени относятся друг к другу; мы выбираем промежуток с наивысшим баллом. Таким образом, не существует фиксированного порога, который можно было бы использовать во всех случаях.

person akshitab    schedule 06.11.2020