第1关:词云的绘制

package com.showdata;

import java.awt.Dimension;
import java.io.IOException;
import java.util.List;
import com.kennycason.kumo.CollisionMode;
import com.kennycason.kumo.WordCloud;
import com.kennycason.kumo.WordFrequency;
import com.kennycason.kumo.nlp.FrequencyAnalyzer;

public class WordCloud_img {
    
	public WordCloud get() throws IOException  {
        /**********     Begin   **********/
        //1.为实例化词云做准备
        FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
        frequencyAnalyzer.setWordFrequenciesToReturn(200);
        List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("wordcloud.txt");
        Dimension dimension = new Dimension(500, 312);
        //2.修改词云的实例化
        WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);        
        //3.生成词云并写入图片
        wordCloud.build(wordFrequencies);
        wordCloud.writeToFile("imgs/wordcloud_img.png");
        /**********     End   **********/        
        return wordCloud;
    }
	
}

第2关:词云的渲染

package com.showdata;

import java.awt.Color;
import java.awt.Dimension;
import java.io.IOException;
import java.util.List;
import com.kennycason.kumo.CollisionMode;
import com.kennycason.kumo.WordCloud;
import com.kennycason.kumo.WordFrequency;
import com.kennycason.kumo.bg.PixelBoundryBackground;
import com.kennycason.kumo.font.KumoFont;
import com.kennycason.kumo.image.AngleGenerator;
import com.kennycason.kumo.nlp.FrequencyAnalyzer;
import com.kennycason.kumo.palette.ColorPalette;
import com.kennycason.kumo.wordstart.CenterWordStart;
import java.awt.Font;

public class WordCloud_render {
	
	public WordCloud get() throws IOException {
		FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
        frequencyAnalyzer.setWordFrequenciesToReturn(200);
        List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("wordcloud.txt");
        Dimension dimension = new Dimension(500, 312);
        WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
		/**********     Begin   **********/        
        Font font = new Font("宋体", 3, 24);
        wordCloud.setKumoFont(new KumoFont(font));
        wordCloud.setPadding(2);
        wordCloud.setBackgroundColor(Color.white);
        wordCloud.setBackground(new PixelBoundryBackground("myImgs/whale_small.png"));
        wordCloud.setColorPalette(new ColorPalette(Color.RED, Color.BLUE, Color.GREEN));
        wordCloud.setWordStartStrategy(new CenterWordStart());
        wordCloud.setAngleGenerator(new AngleGenerator(0));
        /**********     End   **********/
        wordCloud.build(wordFrequencies);
        wordCloud.writeToFile("imgs/wordcloud_render.png");
        return wordCloud;
	}
	
}

第3关:获取酒店评论数据生成词云

package com.showdata;

import com.kennycason.kumo.CollisionMode;
import com.kennycason.kumo.WordCloud;
import com.kennycason.kumo.WordFrequency;
import com.kennycason.kumo.bg.PixelBoundryBackground;
import com.kennycason.kumo.font.KumoFont;
import com.kennycason.kumo.image.AngleGenerator;
import com.kennycason.kumo.palette.LinearGradientColorPalette;
import com.kennycason.kumo.wordstart.CenterWordStart;
import com.util.HBaseUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
import java.awt.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 词云
 */
public class CommentWordCloud {

      public WordCloud get() throws IOException {
          Connection conn=HBaseUtil.getConnection();
          /**********     Begin   **********/
            //1.读取Hbase表中数据显示
            TableName tableName = TableName.valueOf(Bytes.toBytes("comment_word_count"));
            Table table = conn.getTable(tableName);
            Scan scan = new Scan();
            ResultScanner scanner = table.getScanner(scan);
            List<WordFrequency> words = new ArrayList<>();
            for (Result result : scanner) {
            String word = new String(result.getRow(), "utf-8");
            int count = Bytes.toInt(result.getValue("word_info".getBytes(),"count".getBytes()));
            WordFrequency wordFrequency = new WordFrequency(word,count);
            if(count>10){
                words.add(wordFrequency);
            }
        }
          
          
          
          //2.生成并渲染图片
            Dimension dimension = new Dimension(500,312);
            WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
            wordCloud.setPadding(2);
            Font font = new Font("宋体", 2, 24);
            wordCloud.setKumoFont(new KumoFont(font));
            wordCloud.setColorPalette(new LinearGradientColorPalette(Color.RED, Color.BLUE, Color.GREEN, 30, 30));
            wordCloud.setBackgroundColor(Color.WHITE);
            wordCloud.setBackground(new PixelBoundryBackground("myImgs/whale_small.png"));
            wordCloud.setWordStartStrategy(new CenterWordStart());
            wordCloud.setAngleGenerator(new AngleGenerator(0));
            wordCloud.build(words);
          /**********     End   **********/
          wordCloud.writeToFile("imgs/wordcloud_comment.png");
          return wordCloud;
    }
}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐