如何以预定义的概率生成随机单词序列?

时间:2016-05-19 13:27:20

标签: python random nltk

这是我根据我的unigrams模型生成随机单词序列的代码。有人可以告诉我如何从我的字典中获取单词的概率,这样我就可以生成随机单词。我只是一个初学者,所以我不太了解python。

import nltk
from nltk.tokenize import word_tokenize
from nltk import ngrams
from nltk import FreqDist

Textfile = "TrainingSetLab2.txt"
Unigrams ={}

for line in open(Textfile):
    line = line.rstrip()
    tokens = word_tokenize(line)
    fdist = FreqDist(Unigrams)
    for word in tokens:     
        if word in Unigrams:
            Unigrams[word] = Unigrams[word]+1


        else:
            Unigrams[word] = 1

    for word in Unigrams:
         n = fdist.N()



for k,v in Unigrams.items():
    prob = (v/n)

    print(k,v,prob)
print("Total word: ", n)
#761
word = "put"
for index in range(8):
    word = prob[word].generate()
    print (word)

我跑的时候得到了这个:

  

TypeError:期望的字符串或类似字节的对象

1 个答案:

答案 0 :(得分:0)

以下是设置词典的方法

prob ={} #set up dictionary

for k,v in Unigrams.items():
    prob[k] = v/n #make the word the key, the value is v/n

现在,如果您因为没有输入“'”而导致KeyError用于'那就是'进入字典。尝试打印出字典,然后使用其中的一个词。

或者做:

for item in prob:
    word = item.generate()
    print (word)

您可能希望首先检查基本Python tutorial,以便更好地解决这些更高级的问题。

编辑for循环。你需要为我/你自己澄清:输入generate()需要什么。如果它需要一个字符串/单词,上面的工作。但是你的变量设置(word = X,for in loop)对我来说并没有多大意义。