云计算与大数据实验六 MapReduce综合应用

一、实验目的

  1. 了解KUMO技术应用于词频分析,词云生成的开源技术

  2. 使用KUMO框架绘制一个简单的词云

  3. 了解词云的渲染

  4. 理解数据分析渲染生成词云

二、实验内容

  1. 使用KUMO框架绘制一个简单的词云

  2. 数据分析渲染生成词云

三、实验步骤

(一)使用KUMO框架绘制一个简单的词云

词云就是由词汇组成类似云的彩色图形,如下图:

如何绘制词云

绘制一个简单的词云总的下来只需5个主要操作:

1.创建词频分析器,设置词频,此处的参数配置视情况而定即可。

FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(200);

2.加载文本文件路径,生成词频集合。

List<WordFrequency> wordFrequencyList = frequencyAnalyzer.load("wordcloud.txt");

3.设置图片分辨率。

Dimension dimension = new Dimension(500,312);

4.生成词云对象,此处的设置采用内置常量即可。

WordCloud wordCloud = new WordCloud(dimension,CollisionMode.PIXEL_PERFECT);

5.生成词云并写入图片。

wordCloud.build(wordFrequencies);
wordCloud.writeToFile("wordcloud.png");

编程要求

读取wordcloud.txt文件生成词云,要求图片分辨率为500 × 312,生成图片存放路径和名称为 imgs/wordcloud_img.png

效果如下:

测试输入:

imgs/wordcloud_img.png
step1/my_wordcloud_img.png

相关代码:

1.	package com.showdata;
2.	
3.	import java.awt.Dimension;
4.	import java.io.IOException;
5.	import java.util.List;
6.	import com.kennycason.kumo.CollisionMode;
7.	import com.kennycason.kumo.WordCloud;
8.	import com.kennycason.kumo.WordFrequency;
9.	import com.kennycason.kumo.nlp.FrequencyAnalyzer;
10.	
11.	public class WordCloud_img {
12.	
13.	    public WordCloud get() throws IOException  {
14.	        /**********     Begin   **********/
15.	        //1.为实例化词云做准备
16.	        FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
17.	        frequencyAnalyzer.setWordFrequenciesToReturn(200);
18.	        List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("wordcloud.txt");
19.	        Dimension dimension = new Dimension(500, 312);
20.	        //2.修改词云的实例化
21.	        WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);        
22.	        //3.生成词云并写入图片
23.	        wordCloud.build(wordFrequencies);
24.	        wordCloud.writeToFile("imgs/wordcloud_img.png");
25.	        /**********     End   **********/        
26.	        return wordCloud;
27.	    }
28.	
29.	}

(二)数据分析渲染生成词云

词云渲染

1.设置图片中字体样式为宋体粗斜体24磅(具体可以参照Font源码)

java.awt.Font font = new java.awt.Font("宋体",3, 24);//3表示粗斜体
wordCloud.setKumoFont(new KumoFont(font));

2.设置词组边界(词组拥挤不易于观察美观)

wordCloud.setPadding(2);

3.设置背景颜色和背景图片

wordCloud.setBackgroundColor(Color.black);

wordCloud.setBackground(new PixelBoundryBackground("背景图片地址"));

示例: 背景图片:(注意设置的背景图片需要透明底才可进行转换成图中形状)

对上一章节的词云进行设置后,输出如下:

4.设置词云显示的颜色,越靠前设置表示词频越高的词语的颜色

wordCloud.setColorPalette(new ColorPalette(Color.RED, Color.BLUE, Color.GREEN));

5.设置频词高低从图片中间出现往外扩张(词频高者聚集图片中心位置)

wordCloud.setWordStartStrategy(new CenterWordStart());

6.设置词云中的词语横向摆置

wordCloud.setAngleGenerator(new AngleGenerator(0));//0表示横向  若填180则表示横向基础旋转180°

编程要求

将第一步的图片进行渲染,具体要求如下:

  1. 字体为宋体粗斜体24磅;
  2. 单词边界为 2 ;
  3. 背景颜色为白色,背景图片为myImgs/whale_small.png
  4. 词云词频单词颜色一次为红、蓝、绿;
  5. 根据词频高低由中心往外散发,且单词横向摆置;
  6. 图片存储路径个名称为 imgs/wordcloud_render.png 。

测试输入: imgs/wordcloud_render.png step2/my_wordcloud_render.png

相关代码:

1.	package com.showdata;
2.	
3.	import java.awt.Color;
4.	import java.awt.Dimension;
5.	import java.io.IOException;
6.	import java.util.List;
7.	import com.kennycason.kumo.CollisionMode;
8.	import com.kennycason.kumo.WordCloud;
9.	import com.kennycason.kumo.WordFrequency;
10.	import com.kennycason.kumo.bg.PixelBoundryBackground;
11.	import com.kennycason.kumo.font.KumoFont;
12.	import com.kennycason.kumo.image.AngleGenerator;
13.	import com.kennycason.kumo.nlp.FrequencyAnalyzer;
14.	import com.kennycason.kumo.palette.ColorPalette;
15.	import com.kennycason.kumo.wordstart.CenterWordStart;
16.	import java.awt.Font;
17.	
18.	public class WordCloud_render {
19.	
20.	    public WordCloud get() throws IOException {
21.	        FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
22.	        frequencyAnalyzer.setWordFrequenciesToReturn(200);
23.	        List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("wordcloud.txt");
24.	        Dimension dimension = new Dimension(500, 312);
25.	        WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
26.	        /**********     Begin   **********/        
27.	        Font font = new Font("宋体", 3, 24);
28.	        wordCloud.setKumoFont(new KumoFont(font));
29.	        wordCloud.setPadding(2);
30.	        wordCloud.setBackgroundColor(Color.white);
31.	        wordCloud.setBackground(new PixelBoundryBackground("myImgs/whale_small.png"));
32.	        wordCloud.setColorPalette(new ColorPalette(Color.RED, Color.BLUE, Color.GREEN));
33.	        wordCloud.setWordStartStrategy(new CenterWordStart());
34.	        wordCloud.setAngleGenerator(new AngleGenerator(0));
35.	        /**********     End   **********/
36.	        wordCloud.build(wordFrequencies);
37.	        wordCloud.writeToFile("imgs/wordcloud_render.png");
38.	        return wordCloud;
39.	    }
40.	
41.	}

四、实验心得 

会使用KUMO框架绘制一个简单的词云

理解了数据分析渲染生成词云

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meteor.792

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值