如何用for循环构建含单词及其模型得分的Python字典
问题解决:为每个单词匹配对应模型得分
错误原因
你的代码有两个关键问题:
- 使用
dict.fromkeys(words, unigram_model.score("words"))时,dict.fromkeys会把所有键映射到同一个固定值,这里就是字符串"words"的得分,所以所有单词得分完全一致。 - 传给
score函数的是字符串"words",而非循环里的迭代变量words,相当于一直在计算"words"这个词的得分,结果自然全部相同。
修正代码
直接用字典推导式遍历每个单词,为每个单词单独计算得分:
unigram_probs = {word: unigram_model.score(word) for word in dracula}
如果dracula中的每个元素是包含多个单词的序列(比如每行的单词列表),需要先扁平化遍历所有单词:
unigram_probs = {} for words in dracula: for word in words: unigram_probs[word] = unigram_model.score(word)
预期输出
修正后会得到每个单词对应各自的概率得分,示例如下:
{'project': 0.0012090748539600599, 'gutenberg': 0.0004211384322782231, 'ebook': 0.00017660643934248063, 'dracula': 0.0005298193180274419}
内容的提问来源于stack exchange,提问作者Kevin Veeder
相关产品推荐
相关产品推荐

