Определение вероятности последовательности, сгенерированной моделью T5, с помощью HuggingFace

Я использую T5-Large от HuggingFace для вывода. Учитывая предпосылку и гипотезу, мне нужно определить, связаны они или нет. Итак, если я накормлю строку"mnli premise: This game will NOT open unless you agree to them sharing your information to advertisers. hypothesis: Personal data disclosure is discussed."модель должна вернуть либо ,neutral, илиcontradiction.

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

      from transformers import T5Tokenizer, T5ForConditionalGeneration

def is_entailment(premise, hypothesis):
    entailment_premise = premise
    entailment_hypothesis = hypothesis

    token_output = tokenizer("mnli premise: " + entailment_premise + " hypothesis: " + entailment_hypothesis,
                             return_tensors="pt", return_length=True)
    input_ids = token_output.input_ids

    output = model.generate(input_ids, output_scores=True, return_dict_in_generate=True, max_new_tokens=15)
    entailment_ids = output["sequences"]

    entailment = tokenizer.decode(entailment_ids[0], skip_special_tokens=True)
    return entailment


tokenizer = T5Tokenizer.from_pretrained('t5-small')
model = T5ForConditionalGeneration.from_pretrained('t5-small', return_dict=True)


premise = "This game will NOT open unless you agree to them sharing your information to advertisers."
hypothesis = "Personal data disclosure is discussed."

print(is_entailment(premise, hypothesis))

Я пробовал использовать оценки, которые мы получаем в качестве вывода, но не уверен, как вычислить вероятность на их основе. То же самое касается последних скрытых состояний, которые могут быть получены в качестве выходных данных изgenerate(). Я видел в другом вопросе о переполнении стека, в котором предлагалось использовать функцию softmax для последних скрытых состояний, но я не уверен, как это сделать.

Как рассчитать вероятность генерации последовательности? То есть, если я получуentailmentдля пары гипотезы и посылки, что было быP(entailment)?

0 ответов

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