Python Web Scraping词频统计代码运行报错如何修复?
词频统计代码报错修复方案
错误逐个修复说明
- 报错1:
NameError: name 'k' is not defined+ 词频赋值语法错误
修复方法:- 变量
k是你遍历的单词数据源,需要提前赋值:将你爬虫拿到的文本分词后的单词列表赋值给k再执行遍历逻辑 - 补全词频赋值的右值:首次出现的单词赋值为1,重复出现的计数加1
- 变量
- 报错2:
TypeError: 'builtin_function_or_method' object is not iterable
修复方法:word_frequency.values是字典的内置方法,需要加括号调用才能拿到所有频率值,修改为word_frequency.values() - 报错3:
NameError: name 'nlargest' is not defined
修复方法:nlargest属于Python标准库heapq,需要在代码开头导入:from heapq import nlargest - 报错4:
NameError: name 'plt' is not defined
修复方法:plt是可视化库matplotlib.pyplot的常用别名,需要在代码开头导入:import matplotlib.pyplot as plt - 额外逻辑修复(原代码隐藏问题)
原代码直接取word_frequency.keys()的前21个元素,默认是插入顺序,不是频率从高到低的顺序,需要按排序后的高频词列表取对应值,才能得到正确的前20高频词统计结果。
修正后完整可运行代码
# 导入依赖 from heapq import nlargest import matplotlib.pyplot as plt # 此处替换为你爬虫得到的分词后单词列表 k = ["示例", "单词", "列表", "你", "需要", "替换", "为", "自己的", "分词", "结果"] # 词频统计逻辑 word_frequency = {} for token in k: if token not in word_frequency: word_frequency[token] = 1 else: word_frequency[token] += 1 # 计算最大频率 max_frequency = max(word_frequency.values()) print("最大词频:", max_frequency) # 取前100高频词 word_highest = nlargest(100, word_frequency, key=word_frequency.get) print("前100高频词:", word_highest) # 绘制前20高频词折线图 top20_words = word_highest[:20] top20_freq = [word_frequency[word] for word in top20_words] plt.plot(top20_words, top20_freq) plt.xticks(rotation=80) plt.xlabel('Words') plt.ylabel('Frequency') plt.title('Word Frequency') plt.show()
内容的提问来源于stack exchange,提问作者rugved tingre
相关产品推荐
相关产品推荐

