You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NLTK统计语料库指定人名词频返回全量结果如何解决

错误原因
  • 你在编写字典推导式时,错误将循环变量命名为和人名列表同名的character_list,且没有添加过滤条件,相当于直接把FreqDist统计的所有词汇结果全部转成了字典,自然得不到仅角色人名的统计结果。
  • 没有针对目标人名列表做筛选逻辑,只保留你需要统计的人名条目。
修正后的实现代码
from urllib.request import urlopen
from nltk import FreqDist
from nltk.tokenize import word_tokenize

target_url0 = 'http://www.gutenberg.org/files/135/135-0.txt'
book_raw = urlopen(target_url0).read().decode('utf-8')
word_tokens = word_tokenize(book_raw)

character_list = ['Myriel','Bishop','Baptistine','Magloire','Cravatte','Valjean','Gervais','Fantine','Tholomyès'
                  ,'Blachevelle','Dahlia','Fameuil','Favourite','Listolier','Zéphine','Cosette','Thénardier',
                  'Éponine','Azelma','Javert','Fauchelevent','Bamatabois','Champmathieu',
                  'Brevet','Simplice','Chenildieu','Cochepaille','Innocente','Reverend','Ascension','Crucifixion',
                  'Gavroche','Magnon',
                  'Gillenormand','Marius','Colonel','Mabeuf','Enjolras','Combeferre','Prouvaire',
                 'Feuilly','Courfeyrac','Bahorel','Lesgle','Joly','Grantaire','Patron-Minette','Brujon',
                 'Toussaint'] 

fdist_mis = FreqDist(word_tokens)
# 仅筛选人名列表内的条目生成最终字典
filtered_word_freq = {name: fdist_mis.get(name, 0) for name in character_list}
补充说明
  • 上述代码用dict.get方法取值,即使某个人名没有在语料中出现,也会返回出现次数为0,不会出现键缺失的问题。
  • 如果需要忽略大小写统计,可以在分词后统一将词汇转为小写,同时人名列表也转小写匹配即可。

内容的提问来源于stack exchange,提问作者Jimmy K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:45:04