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

NLTK去除停用词后词频统计丢失空格问题求助

解决停用词去除后词频统计单词粘连问题

问题根源

你的代码存在两个核心错误导致单词粘连:

  • 过滤非字母数字内容时,错误遍历原始文本的单个字符([word for word in review_comments]),而非之前分词得到的tokens列表,导致filtered变成单个字符集合,而非独立单词。
  • 拼接字符串时未添加空格分隔单词,还错误使用了未过滤停用词的filtered列表,最终所有字符连为一体。

修正后的完整代码

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.probability import FreqDist

# 1. 对原始文本分词(保留初始正确步骤)
tokens = word_tokenize(review_comments)

# 2. 过滤非字母数字的token(基于分词后的单词,而非单个字符)
filtered_tokens = [token for token in tokens if token.isalnum()]

# 3. 加载停用词表
nltk.download('stopwords')
english_stopwords = set(stopwords.words('english'))

# 4. 过滤停用词(转小写判断,保留原始token大小写)
filtered_no_stopwords = [token for token in filtered_tokens if token.lower() not in english_stopwords]

# 5. 直接用过滤后的单词列表统计词频
fdist = FreqDist(filtered_no_stopwords)
print(fdist)

关键修正说明

  • 全程基于分词后的tokens列表操作,确保处理对象是独立单词,而非单个字符。
  • 无需将过滤后的单词拼接成字符串,直接传入FreqDist即可完成统计,避免字符串处理错误。
  • 若需生成过滤后的文本字符串,可在过滤停用词后执行:
    filtered_text = ' '.join(filtered_no_stopwords)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:51:20