鱼C论坛

 找回密码
 立即注册
查看: 3195|回复: 4

wordcloud

[复制链接]
发表于 2017-10-31 22:40:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
__author__='Hanxiaoyang'
import jieba#分词包
import numpy#numpy计算包
import codecs#codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
import pandas#数据分析包
import matplotlib.pyplot as plt
from wordcloud import WordCloud#词云包
#2、导入文本
file=codecs.open(u"123.txt",'r')
content=file.read()
file.close()
segment=[]
segs=jieba.cut(content)#切词,“么么哒”才能出现
for seg in segs:
    if len(seg)>1 and seg!='rn':
        segment.append(seg)
#3、去停词(“多喝热水”等这类小细节可以在这里抹去)
words_df=pandas.DataFrame({'segment':segment})
words_df.head()
stopwords=pandas.read_csv("stopwords.txt",index_col=False,quoting=3,sep="t",names=['stopword'],encoding="utf8")
words_df=words_df[~words_df.segment.isin(stopwords.stopword)]

#4、统计词频(对话日常高频词)
words_stat = words_df.groupby(by='segment')['segment'].agg({"count":numpy.size})
words_stat = words_stat.reset_index().sort_values("count",ascending=False)
words_stat#打印统计结果


#5、%matplotlib inline
wordcloud=WordCloud(font_path="simhei.ttf",background_color="black")
#wordcloud=wordcloud.fit_words(words_stat.head(1000).itertuples(index=False))
wordcloud = wordcloud.fit_words(words_stat.head(1000).itertuples)

plt.imshow(wordcloud)
plt.show()

就在这一步报错了,帮忙看看什么原因导致。谢谢 错误信息如下:(使用的事python 2.7.14,使用工具:ipython notebook)
AttributeError                            Traceback (most recent call last)
<ipython-input-18-9ef3b33eba24> in <module>()
      2 wordcloud=WordCloud(font_path="simhei.ttf",background_color="black")
      3 #wordcloud=wordcloud.fit_words(words_stat.head(1000).itertuples(index=False))
----> 4 wordcloud = wordcloud.fit_words(words_stat.head(1000).itertuples)
      5
      6 plt.imshow(wordcloud)

c:\python\python27\lib\site-packages\wordcloud\wordcloud.pyc in fit_words(self, frequencies)
    329         self
    330         """
--> 331         return self.generate_from_frequencies(frequencies)
    332
    333     def generate_from_frequencies(self, frequencies, max_font_size=None):

c:\python\python27\lib\site-packages\wordcloud\wordcloud.pyc in generate_from_frequencies(self, frequencies, max_font_size)
    348         """
    349         # make sure frequencies are sorted and normalized
--> 350         frequencies = sorted(frequencies.items(), key=item1, reverse=True)
    351         if len(frequencies) <= 0:
    352             raise ValueError("We need at least 1 word to plot a word cloud, "

AttributeError: 'function' object has no attribute 'items'

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-1 22:49:46 | 显示全部楼层
各位大神快来呀看呀。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-2 10:18:16 | 显示全部楼层
words_stat.head(1000).itertuples你打印一下这个看看,这个应该是函数,不是可迭代对象,你好像少了个括号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-9 21:57:05 | 显示全部楼层
小锟 发表于 2017-11-2 10:18
words_stat.head(1000).itertuples你打印一下这个看看,这个应该是函数,不是可迭代对象,你好像少了个括号

返回下面结果,正常应该打印出图片呀。。。

%matplotlib inline
wordcloud=WordCloud(font_path="simhei.ttf",background_color="black")
#wordcloud=wordcloud.fit_words(words_stat.head(1000).itertuples(index=False))
words_stat.head(1000).itertuples


#plt.imshow(wordcloud)
#plt.show()

<bound method DataFrame.itertuples of   segment  count
1      大声      2
0  asdasd      1
2      孩子      1
3      撒大      1
4     阿萨德      1
5      阿达      1>
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-10 09:41:15 | 显示全部楼层
.itertuples这个后面应该要加括号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-25 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表