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

移除停用词和标点时报错NameError: name 'stopwords' is not defined如何解决?

问题修复方案

你遇到的NameError: name 'stopwords' is not defined报错,是因为运行代码前没有导入对应的stopwords模块,同时代码中用到的其他依赖也需要提前完成导入和初始化,否则后续也会触发同类未定义报错。

具体修复步骤

  • 导入所有依赖模块,首次使用NLTK相关功能需要先下载对应资源包
# 导入标准库和NLTK相关模块
import nltk
import string
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer

# 首次运行需要执行以下下载命令,后续运行可注释
nltk.download('punkt')
nltk.download('stopwords')
  • 初始化词干提取器实例,对应你代码中用到的ps变量
ps = PorterStemmer()
  • 保留你原有transform_text函数的逻辑即可正常运行

完整可运行代码示例:

# 前置导入和初始化
import nltk
import string
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer

nltk.download('punkt')
nltk.download('stopwords')
ps = PorterStemmer()

# 原有预处理函数
def transform_text(text):
    text = text.lower()
    text = nltk.word_tokenize(text)
    
    y = []
    for i in text:
        if i.isalnum():
            y.append(i)
    
    text = y[:]
    y.clear()
    
    for i in text:
        if i not in stopwords.words('english') and i not in string.punctuation:
            y.append(i)
            
    text = y[:]
    y.clear()
    
    for i in text:
        y.append(ps.stem(i))
    
    return " ".join(y)

# 测试调用
print(transform_text("I'm gonna be home soon and i don't want to talk about this stuff anymore tonight, k? I've cried enough today."))

运行后会输出预处理后的文本结果:gon na home soon want talk stuff anymor tonight k cri enough today

内容的提问来源于stack exchange,提问作者Gurusha Rahul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:06