Python 双图的生成和单词出现概率的计算

Python 双图的生成和单词出现概率的计算,python,dictionary,probability,n-gram,Python,Dictionary,Probability,N Gram,我试图建立一个二元模型并计算单词出现的概率。我应该 •选择适当的数据结构来存储Bigram。 •单词和前一个单词组合的增量计数。这意味着我需要跟踪上一个单词是什么。 •根据先前的字数计算当前单词的概率 当前单词的概率=计数(上一个单词,当前单词)/计数(上一个单词) 假设我们观察到以下单词序列: 手指评论 指指点点 指指点点 插手 手指。请注意,观察了两次“手指接触”。另外,请注意,句点被视为一个单独的单词。给定此数据结构中的信息,我们可以计算概率(指上)为2/5=0.4。 以下是我到目前为止得

我试图建立一个二元模型并计算单词出现的概率。我应该 •选择适当的数据结构来存储Bigram。 •单词和前一个单词组合的增量计数。这意味着我需要跟踪上一个单词是什么。 •根据先前的字数计算当前单词的概率

当前单词的概率=计数(上一个单词,当前单词)/计数(上一个单词)

假设我们观察到以下单词序列: 手指评论 指指点点 指指点点 插手 手指。请注意,观察了两次“手指接触”。另外,请注意,句点被视为一个单独的单词。给定此数据结构中的信息,我们可以计算概率(指上)为2/5=0.4。
以下是我到目前为止得到的信息:

filename = 'blah-blah.txt'
bigrams ={}
prev_word = "START"

# opening the filename in read mode
with open(filename, "r") as fp:
    for line in fp:

        words = line.split()

        for word in words:
            word = word.lower()
            bigram = prev_word + ' ' + word

            if bigram in bigrams:
                bigrams[bigram] += 1

            else:
                bigrams[bigram] = 1
                prev_word = word
                #print(bigram)

for k, v in bigrams.items():
    probability = v/1

    print(k + ':' + str(probability))
但是我现在还停留在如何跟踪前面的单词来计算概率的问题上。我只是把1放在这里“概率=v/1”只是为了弄清楚我下一步要做什么。 非常感谢你的帮助

使用此公式:

当前单词的概率=计数(上一个单词,当前单词)/计数(上一个单词)

如果“上一个单词”是文档中上一个单词的总出现次数,那么您可能只需要为您的词汇创建另一个字典,其中存储了您的单词出现次数。:)

vocab = {'my_word' : num_occurences}