Bi克创建和计算单词出现的概率

时间:2017-07-06 03:33:29

标签: python dictionary probability n-gram

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

curr word = count(prev word,curr word)/ count(previous word)

考虑我们观察到以下单词序列: 手指评论道 手指上 手指上 手指进去 手指。请注意"手指上"被观察了两次。另外,请注意该时段被视为一个单独的单词。给出该数据结构中的信息,我们可以将概率(on | finger)计算为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"只是为了弄明白我接下来要做什么。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用以下公式:

curr word = count(prev word,curr word)/ count(previous word)..

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

vocab = {'my_word' : num_occurences}