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



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

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

考虑我们观察到以下单词序列: 手指评论 手指在 手指在 手指输入 手指。请注意,"手指"被观察到了两次。另请注意,句点被视为一个单独的单词。给定此数据结构中的信息,我们可以将概率(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",只是为了弄清楚我下一步到底要做什么。 非常感谢任何帮助!

使用以下公式:

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

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

喜欢

vocab = {'my_word' : num_occurences}

最新更新