Visto que a classe WorldCloud já pode ser instanciada enviando as stopwords, o codigo pode ser simplificado dessa forma:
def word_cloud(text_df, text_column, sentiment):
sentiment_text = text_df.query(f"Sentiment == '{sentiment}'")[text_column]
final_text = " ".join(sentiment_text)
# Não necessario, pois o WordCloud já ignora as stopwords
# words = final_text.split()
# filtered_words = [word for word in words if word.lower() not in portuguese_stopwords]
# filtered_text = " ".join(filtered_words)
wordcloud = WordCloud(
width=800,
height=400,
max_words=50,
stopwords=portuguese_stopwords, # Adicionado aqui
).generate(final_text)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title(f"Word Cloud for {sentiment} Reviews")
plt.show()