Итак, мне дан следующий список токенов, tokens = ["<S>", "Hello", "World", "How", "Are", "You", "Hello", "Goop", "I", "Are", "Good"]
, и я хочу обучить модель N-Gram с помощью Backoff , что означает, что мой вывод должен выглядеть как-
output["token1 token2"] = {"token0" : Probability of sentence <token1 token2 token0>, "token1": Probability value of sentence <token1 token2 token1>, and so on}
Например: output["token1 token2"] = {"token0" : 0.02, "token1" : 0.3, and so on}
также должны содержать ключи output["token1"]
и output[""]
(в униграммах). Мое определение метода выглядит примерно так -
model(tokens, n):
output = defaultdict(Counter)
for i in range(len(tokens) - order):
history, word = tokens[i:i+order], tokens[i+order]
<How to compute probabilities here & store it in output?>
return output
В настоящее время я пытаюсь инициализировать свой вывод как счетчик, но я абсолютно застрял в том, как бороться с backoff и генерировать вероятностив течение одного цикла.