我想要打印的确切格式如下:
Bigram MLE Prob Bigram Prob
"interesting news" 0.000xxxx 0.000xxx
"interesting show" 0.000xxxx 0.000x
..(any bigram word set in the text)...
....
...
以下是我的代码。
from __future__import division
import re
import string
f = open("C:\Python27\text.txt", "rU")
rawtext = f.read()
bigrams = {}
words_punct = rawtext.split()
words = [ w. strip(string.punctuation).lower() for w in words_punct ]
words = ["START"] + words + ["END"]
for index, word in enumerate(words):
if index < len(words) - 1:
w1 = words[index]
w2 = words[index + 1]
bigram = (w1, w2)
if bigram in bigrams:
bigrams[ bigram ] = bigrams[ bigram ] + 1
else:
bigrams[ bigram ] = 1
sorted_bigrams = sorted(bigrams.items(), key = lambda pair:pair[1], reverse = True)
for bigram, count in sorted_bigrams:
Bi_Prob = count / sum(list(bigrams.values()))
print Bi_Prob
这给了我每个二元组的Bi_Prob。 (即0.000xxx,0.0000xxx,0.0000x ......) 我不太了解Python,所以我在这里得到了很多帮助,无论如何 我很快就可以制作变量MLE Prob ..但我很难打印出表格格式的结果。我尝试了制表模块,如下所示。
from tabulate import tabulate
for bigram in sorted_bigrams:
print tabulate([[bigram]], headers = ['Bigram']
这样的东西......但它不起作用......这意味着,使用制表模块,我可以获得我之前说过的确切打印结果,但它只包含一个数据。我想要一些循环结果......每个bigram,它的概率应该插入表格形式......
帮助我并给我一些其他建议..
P.S。我没有在这里使用nltk。但无论如何我安装了它。但不知道如何使用它。我听说nltk可以缓解我的生活...