如何在Python中忽略单词云中的一些单词?
在Python3和Pandas中,我有一个程序可以从一个列生成单词cloud:如何在Python中忽略单词云中的一些单词?,python,pandas,word-cloud,Python,Pandas,Word Cloud,在Python3和Pandas中,我有一个程序可以从一个列生成单词cloud: 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={'Id
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)})
autores_atuais.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 6632 entries, 74057 to 84859
Data columns (total 10 columns):
IdAutor 6632 non-null object
IdDocumento 6632 non-null object
NomeAutor 6632 non-null object
AnoLegislativo 6632 non-null object
CodOriginalidade 5295 non-null object
DtEntradaSistema 6632 non-null object
DtPublicacao 6632 non-null object
Ementa 6632 non-null object
IdNatureza 6632 non-null object
NroLegislativo 6632 non-null object
dtypes: object(10)
memory usage: 569.9+ KB
wordcloud = WordCloud().generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
将熊猫作为pd导入
将numpy作为np导入
从wordcloud导入wordcloud
将matplotlib.pyplot作为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),'nrolegistivo':lambda x:str(x)})
autores_atuais.info()
INT64索引:6632条,74057至84859
数据列(共10列):
IdAutor 6632非空对象
IdDocumento 6632非空对象
NomeAutor 6632非空对象
AnoLegivivo 6632非空对象
CodOriginalidade 5295非空对象
DtEntradaSistema 6632非空对象
DtPublicacao 6632非空对象
Elementa 6632非空对象
IdNatureza 6632非空对象
NroLegislativo 6632非空对象
数据类型:对象(10)
内存使用率:569.9+KB
wordcloud=wordcloud().generate(“”.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.轴(“关闭”)
plt.show()
拜托,我怎么能忽略云端的一些话呢?例如,小词(“de”、“ao”)和某些词(“Estado”)我认为需要使用~
作为反向条件,使用按单词长度过滤的单词列表,必要时使用
作为链条件:
autores_atuais = pd.DataFrame({'Ementa':['Estado','another','be','de','def','bax']})
print (autores_atuais)
Ementa
0 Estado
1 another
2 be
3 de
4 def
5 bax
m1 = autores_atuais['Ementa'].isin(['Estado','another','next'])
m2 = autores_atuais['Ementa'].str.len() < 3
s = autores_atuais.loc[~(m1 | m2), 'Ementa']
print (s)
4 def
5 bax
Name: Ementa, dtype: object
要删除短单词(例如,2个或更少),可以使用
autores_atuais = autores_atuais[autores_atuais.Ementa.str.len() <= 2]
autores_atuais = autores_atuais[~autores_atuais.Ementa.isin(restricted)]
我想你在用阿穆勒的模块?如果是,则有一个
stopwords
参数,允许您指定包含要排除的单词的文件
例如,如果您创建一个名为stopwords.txt的文本文件,并将其保存在与csv文件相同的文件夹中,其中包含:
de
ao
Estado
然后更改为:
wordcloud = WordCloud(stopwords='stopwords.txt').generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
应该正确地排除这些词。要排除的默认单词集包含在模块文件夹中,应称为stopwords
。如果您经常遇到相同的问题,在此处修改此默认文件可能会有所帮助。谢谢。但是,通过这种方式,生成的单词cloud是使用列的名称创建的,而不是使用列“Ementa”的单词。看起来m1和m2将所有包含这些单词的行从dataframe@ReinaldoChaves-你说得对,只需修改答案。再次感谢。我这样做了:m1=~autoresèu atuais['Ementa'].isin(['Constituièo','Dispèe','Constituièo','artigo'])m2=autoresèu atuais['Ementa'].str len()>=2sobra=autoresèu atuais.loc[m1&m2,'Ementa']您还可以从nltk
包导入一个停止字列表。他们有许多可用语言的停止词列表。如果您只想使用stopwords,那么nltk包可能会有些过分,但是如果您将它用于其他目的,那么它可能会很有用。谢谢@asongtoruin。但一些词语继续出现。司令部似乎明白,当某些单词与其他单词组合在一起时,它们必须被计算,或者它们的组合使它们不同(如“da consticião”、“do Estado”、“consticião do”)。这些是巴西葡萄牙语的单词。可能是这样吗?对不起,我现在已经看到你的评论了
wordcloud = WordCloud(stopwords='stopwords.txt').generate(' '.join(autores_atuais['Ementa']))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()