我正在尝试构建一个二元模型并计算单词出现的概率。我应该 •选择适当的数据结构来存储双字节。 •单词和前一个单词组合的递增计数。这意味着我需要跟踪前一个词是什么。 •根据前一个字数计算当前单词的概率。
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"只是为了弄明白我接下来要做什么。 非常感谢您的帮助!
答案 0 :(得分:0)
使用以下公式:
curr word = count(prev word,curr word)/ count(previous word)..
如果“上一个单词”是文档中前一个单词的总出现次数,那么您可能只想为您的词汇创建另一个字典,其中存储了您所拥有的单词的出现次数。 :)
像
vocab = {'my_word' : num_occurences}