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

如何在Python词云生成中忽略指定词汇?

如何在Pandas生成词云时过滤指定词汇

嘿,我来帮你搞定这个词云过滤的问题!要忽略小词(比如"de"、"ao"这类常见停用词)和特定词汇(比如"Estado"),有两种实用的方法,我都给你整理好了:

方法1:直接使用WordCloud的stopwords参数

WordCloud库本身支持通过stopwords参数传入要排除的词汇集合。你可以把需要忽略的小词和特定词汇都放进这个集合里,生成词云时就会自动跳过它们。

修改后的代码示例

import pandas as pd
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 读取数据(保留你原来的读取逻辑)
autores_atuais = pd.read_csv(
    "deputados_autores_projetos.csv", 
    sep=',',
    encoding='utf-8', 
    converters={
        'IdAutor': lambda x: str(x), 
        'IdDocumento': lambda x: str(x), 
        'CodOriginalidade': lambda x: str(x), 
        'IdNatureza': lambda x: str(x), 
        'NroLegislativo': lambda x: str(x)
    }
)

# 定义要忽略的词汇:包含常见葡语小词 + 你的特定词汇
stop_words = {
    'de', 'ao', 'a', 'o', 'que', 'em', 'para', 'com', 
    'um', 'uma', 'os', 'as', 'no', 'na', 'se', 'por',
    'Estado'  # 你的特定词汇
}

# 生成词云时传入stopwords参数
wordcloud = WordCloud(stopwords=stop_words).generate(' '.join(autores_atuais['Ementa']))

# 展示词云
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

方法2:先预处理文本再生成词云

如果需要更灵活的过滤(比如忽略大小写差异,比如"Estado"和"estado"都要排除),可以先对Ementa列的文本进行预处理,把要过滤的词全部移除后,再生成词云。

修改后的代码示例

import pandas as pd
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 读取数据(和之前一致)
autores_atuais = pd.read_csv(
    "deputados_autores_projetos.csv", 
    sep=',',
    encoding='utf-8', 
    converters={
        'IdAutor': lambda x: str(x), 
        'IdDocumento': lambda x: str(x), 
        'CodOriginalidade': lambda x: str(x), 
        'IdNatureza': lambda x: str(x), 
        'NroLegislativo': lambda x: str(x)
    }
)

# 定义要忽略的词汇集合(统一转小写,方便匹配所有大小写变体)
stop_words = {
    'de', 'ao', 'a', 'o', 'que', 'em', 'para', 'com', 
    'um', 'uma', 'os', 'as', 'no', 'na', 'se', 'por',
    'estado'
}

# 定义文本预处理函数:拆分词汇、过滤停用词、重组文本
def filter_text(text):
    # 把文本转成小写,拆分词汇
    words = text.lower().split()
    # 过滤掉在stop_words里的词汇
    filtered_words = [word for word in words if word not in stop_words]
    # 重新组合成字符串
    return ' '.join(filtered_words)

# 对Ementa列应用预处理函数
filtered_ementas = autores_atuais['Ementa'].apply(filter_text)

# 用处理后的文本生成词云
wordcloud = WordCloud().generate(' '.join(filtered_ementas))

# 展示词云
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

额外提示

如果需要更全面的葡语停用词,不用手动输入所有小词,可以借助nltk库的现成集合:

import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

# 获取葡语停用词并转成集合
pt_stopwords = set(stopwords.words('portuguese'))
# 再添加你的特定词汇
pt_stopwords.add('Estado')

之后直接把pt_stopwords传给WordCloud的stopwords参数就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:11