这是我根据我的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:期望的字符串或类似字节的对象
答案 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)对我来说并没有多大意义。