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