wordcloud红楼梦词云图出现单字怎么办?

在PYTHON二级教程中有一个错误,10.8.2节给出了生成《红楼梦》基本词云图的代码。不少人按照代码做一遍,才发现,生成的词云图并不像教材图片中的那么理想,出现了大量字体很大的“单字”,这些“单字”并没有什么意义。

错误的词云图

wordcloud是phython很好用的一个第三方库,通常和jieba库一同使用。为什么出现了这样大字号“单字”的错误,我们先看代码。

可见下图的错误代码中,直接使用了jieba.lcut( )函数生成的含有“单字”的列表,在没有过滤掉这些“单字”的情况下,就用.join( )函数进行连接,生成新的字符串。因此,词云图中含有较多的“单字”,而且字号比较大,遮挡了有用的词语,词云图的质量不好。

错误的代码

为了纠正错误,对该段代码进行修改,如下图,新添加了一个ls=[ ]列表,将words列表中的非“单字”逐个传送到了ls中,这样也就过滤了“单字”。然后将新列表ls执行.join( )函数,连接成wordcloud使用的长字符串。

修正后的代码

 

此时生成的词云图如下图所示,可见其中已经过滤掉了“单字”,词语的显示更加清晰。

正确的词云图

正确的代码如下:

#红楼梦词云图
import jieba
from wordcloud import WordCloud

excludes={"什么","一个","我们","那里","你们",'如今',\
          "说道","知道","老太太","起来","姑娘",'这里',\
          '出来','他们','众人','自己','一面','太太',\
          '只见',"怎么",'奶奶','两个','没有','不是',\
          '不知','这个','听见','的','又'}

f=open('红楼梦.txt','r',encoding='utf-8')

txt=f.read()

f.close()

words=jieba.lcut(txt)

ls=[]
for i in words:
    if len(i)!=1:
        ls.append(i)

newtxt=' '.join(ls)

wordcloud=WordCloud(background_color='white',\
                    height=600,\
                    width=800,\
                    font_path='msyh.ttc',\
                    max_font_size=80,
                    max_words=200,
                    stopwords=excludes,\
                    ).generate(newtxt)
wordcloud.to_file('红楼梦基本词云.jpg')

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值