如何以表格格式打印每个二元组的概率

时间:2016-04-21 12:15:18

标签: python

我想要打印的确切格式如下:

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可以缓解我的生活...

0 个答案:

没有答案