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)
我可以帮忙吗?
您还可以尝试 lm-scorer,这是一个围绕 Transformer 的小型包装器,允许您使用支持它的模型获取句子概率(在撰写本文时仅实现了 GPT2 模型)。
https://github.com/simonepri/lm-scorer
我自己刚刚使用过并且效果很好。
警告:如果您在同一环境中使用其他变压器/管道,事情可能会变得混乱。