下面是我的代码。
from __future__ import division
import nltk
import re
f = open('C:/Python27/brown_A1_half.txt', 'rU')
w = open('C:/Python27/brown_A1_half_Out.txt', 'w')
#to read whole file using read()
filecontents = f.read()
from nltk.tokenize import sent_tokenize
sent_tokenize_list = sent_tokenize(filecontents)
for sentence in sent_tokenize_list:
sentence = "Start " + sentence + " End"
tokens = sentence.split()
bigrams = (tuple(nltk.bigrams(tokens)))
bigrams_frequency = nltk.FreqDist(bigrams)
for k,v in bigrams_frequency.items():
print k, v
然后打印结果是“(bigrams),它的频率”。在这里,我想要的是
对于每个bigram对,将bigram频率除以第一个出现的单字组频率。 (例如,如果有一个二元组('红色','苹果')并且其频率为“3”,那么我想将其除以“红色”的频率。
这是为了获得MLE概率,即“MLE概率=(w1,w2)的计数/(w1)的计数”。帮帮我...
答案 0 :(得分:0)
您可以在for循环中添加以下内容(在打印k,v之后):
number_unigrams = tokens.count(k[0])
prob = v / number_unigrams
那应该给你每个二元组的MLE概率。