如何使用 GPT-2 求出一个句子的概率?

Ela*_* SK 2 python nlp probability gpt-2

我正在尝试编写一个程序,给定一个句子列表,返回最可能的一个。我想使用 GPT-2,但我对使用它还很陌生(因为我真的不知道该怎么做)。我计划在给定前面的单词的情况下查找单词的概率,并将所有概率相乘以获得该句子出现的总体概率,但是我不知道如何在给定前面的单词的情况下查找单词出现的概率。这是我的(伪)代码:

sentences = # my list of sentences

max_prob = 0
best_sentence = sentences[0]

for sentence in sentences:
    prob = 1 #probability of that sentence

    for idx, word in enumerate(sentence.split()[1:]):
        prob *= probability(word, " ".join(sentence[:idx])) # this is where I need help

    if prob > max_prob:
        max_prob = prob
        best_sentence = sentence

print(best_sentence)
Run Code Online (Sandbox Code Playgroud)

我可以帮忙吗?

Rub*_*Rub 5

您还可以尝试 lm-scorer,这是一个围绕 Transformer 的小型包装器,允许您使用支持它的模型获取句子概率(在撰写本文时仅实现了 GPT2 模型)。

https://github.com/simonepri/lm-scorer

我自己刚刚使用过并且效果很好。

警告:如果您在同一环境中使用其他变压器/管道,事情可能会变得混乱。