编程思想是,读取文本文件,用 jieba.lcut()方法分割中文词汇,将所有中文词汇放在列表 article 中。定义一个空字典 dic,用循环结构遍历列表 article,将词汇作为字典的键,统计每个词汇出现的次数,作为字典的值。
与英文词频分析一样,由于字典是无序的,若要按词频顺序输出,还需用 sorted()方法将字典转换为二维列表 swd。
在 sorted()方法的参数中,list(dic.items())方法将字典转换为列表,reverse=True 表示按列表元组元素的第二项逆序排列。
在输出结果时,同样应将那些不需要参加统计的中文虚词滤除。
读取列表结构的文本文件“中文虚词列表.txt”,添加条件,输出满足非停词列表中的词频统计结果(见图)。
代码如下:
将例 中朱自清散文“荷塘月色”的词频统计结果生成词云图。本例直接应用例 5-10 的结果,以空格分隔的字符串“荷塘 采莲 今晚 路 叶子 想起 一条 这是 白天 树 知道 月光”作为词云文本,结果如图 所示。有兴趣的读者可以尝试将这两例结合起来,直接以词云形式呈现结果。
- import jieba
- f=open('荷塘月色.txt')
- article text=f.read()
- f.close()
- article=jieba.lcut(article text)
- dic=()
- for word in article:
- if word not in dic:
- dic[word]=1
- else:
- dic[word]+=1
- swd=sorted(list (dic.items ())key=lambda lst:1st[1],reverse=True)
- f1=open('中文虚词列表.txt')
- stop wds=f1.read()
- f1.close()
- for kword,times in swd:
- if kword not in stop wds:
- print (kword,times)
- import wordcloud
- txt='荷塘采莲今晚路叶子想起一条这是白天树知道月光'
- w=wordcloud.Wordcloud(background color='white',
- width=150,
- height=120,
- max font size=48,
- font path='C:/Windows/Fonts/simhei.ttf')
- w.generate (txt)
- w.to file('c:/test.png')