在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:kennycason/kumo开源软件地址:https://github.com/kennycason/kumo开源编程语言:Java 99.7%开源软件介绍:KumoKumo's goal is to create a powerful and user friendly Word Cloud API in Java. Kumo directly generates an image file without the need to create an applet as many other libraries do. Please feel free to jump in and help improve Kumo! There are many places for performance optimization in Kumo! Current Features
CLI Install via Brew (NEW!)
Available from Maven Central<dependency>
<groupId>com.kennycason</groupId>
<artifactId>kumo-core</artifactId>
<version>1.28</version>
</dependency> Include <dependency>
<groupId>com.kennycason</groupId>
<artifactId>kumo-tokenizers</artifactId>
<version>1.28</version>
</dependency> ScreenshotsExamplesExample to generate a Word Cloud on top of an image. final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(300);
frequencyAnalyzer.setMinWordLength(4);
frequencyAnalyzer.setStopWords(loadStopWords());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/datarank.txt");
final Dimension dimension = new Dimension(500, 312);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(2);
wordCloud.setBackground(new PixelBoundryBackground("backgrounds/whale_small.png"));
wordCloud.setColorPalette(new ColorPalette(new Color(0x4055F1), new Color(0x408DF1), new Color(0x40AAF1), new Color(0x40C5F1), new Color(0x40D3F1), new Color(0xFFFFFF)));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("kumo-core/output/whale_wordcloud_small.png"); Example to generate a circular Word Cloud. final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/my_text_file.txt");
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(2);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setColorPalette(new ColorPalette(new Color(0x4055F1), new Color(0x408DF1), new Color(0x40AAF1), new Color(0x40C5F1), new Color(0x40D3F1), new Color(0xFFFFFF)));
wordCloud.setFontScalar(new SqrtFontScalar(10, 40));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("kumo-core/output/datarank_wordcloud_circle_sqrt_font.png"); Example to generate a rectangle Word Cloud final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/my_text_file.txt");
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setBackground(new RectangleBackground(dimension));
wordCloud.setColorPalette(new ColorPalette(Color.RED, Color.GREEN, Color.YELLOW, Color.BLUE));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("kumo-core/output/wordcloud_rectangle.png"); Example using Linear Color Gradients final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(500);
frequencyAnalyzer.setMinWordLength(4);
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/my_text_file.txt");
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(2);
wordCloud.setBackground(new CircleBackground(300));
// colors followed by and steps between
wordCloud.setColorPalette(new LinearGradientColorPalette(Color.RED, Color.BLUE, Color.GREEN, 30, 30));
wordCloud.setFontScalar( new SqrtFontScalar(10, 40));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("kumo-core/output/wordcloud_gradient_redbluegreen.png"); Example of tokenizing chinese text into a circle final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(600);
frequencyAnalyzer.setMinWordLength(2);
frequencyAnalyzer.setWordTokenizer(new ChineseWordTokenizer());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/chinese_language.txt");
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(2);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setColorPalette(new ColorPalette(new Color(0xD5CFFA), new Color(0xBBB1FA), new Color(0x9A8CF5), new Color(0x806EF5)));
wordCloud.setFontScalar(new SqrtFontScalar(12, 45));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("kumo-core/output/chinese_language_circle.png"); Create a polarity word cloud to contrast two datasets final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.setMinWordLength(4);
frequencyAnalyzer.setStopWords(loadStopWords());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/new_york_positive.txt");
final List<WordFrequency> wordFrequencies2 = frequencyAnalyzer.load("text/new_york_negative.txt");
final Dimension dimension = new Dimension(600, 600);
final PolarWordCloud wordCloud = new PolarWordCloud(dimension, CollisionMode.PIXEL_PERFECT, PolarBlendMode.BLUR);
wordCloud.setPadding(2);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setFontScalar(new SqrtFontScalar(10, 40));
wordCloud.build(wordFrequencies, wordFrequencies2);
wordCloud.writeToFile("kumo-core/output/polar_newyork_circle_blur_sqrt_font.png"); Create a Layered Word Cloud from two images/two word sets final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(300);
frequencyAnalyzer.setMinWordLength(5);
frequencyAnalyzer.setStopWords(loadStopWords());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load("text/new_york_positive.txt");
final List<WordFrequency> wordFrequencies2 = frequencyAnalyzer.load("text/new_york_negative.txt");
final Dimension dimension = new Dimension(600, 386);
final LayeredWordCloud layeredWordCloud = new LayeredWordCloud(2, dimension, CollisionMode.PIXEL_PERFECT);
layeredWordCloud.setPadding(0, 1);
layeredWordCloud.setPadding(1, 1);
layeredWordCloud.setFontOptions(0, new KumoFont("LICENSE PLATE", FontWeight.BOLD));
layeredWordCloud.setFontOptions(1, new KumoFont("Comic Sans MS", FontWeight.BOLD));
layeredWordCloud.setBackground(0, new PixelBoundryBackground("backgrounds/cloud_bg.bmp"));
layeredWordCloud.setBackground(1, new PixelBoundryBackground("backgrounds/cloud_fg.bmp"));
layeredWordCloud.setColorPalette(0, new ColorPalette(new Color(0xABEDFF), new Color(0x82E4FF), new Color(0x55D6FA)));
layeredWordCloud.setColorPalette(1, new ColorPalette(new Color(0xFFFFFF), new Color(0xDCDDDE), new Color(0xCCCCCC)));
layeredWordCloud.setFontScalar(0, new SqrtFontScalar(10, 40));
layeredWordCloud.setFontScalar(1, new SqrtFontScalar(10, 40));
layeredWordCloud.build(0, wordFrequencies);
layeredWordCloud.build(1, wordFrequencies2);
layeredWordCloud.writeToFile("kumo-core/output/layered_word_cloud.png"); Create a ParallelLayeredWordCloud using 4 distinct Rectangles. final Dimension dimension = new Dimension(2000, 2000);
ParallelLayeredWordCloud parallelLayeredWordCloud = new ParallelLayeredWordCloud(4, dimension, CollisionMode.PIXEL_PERFECT);
// Setup parts for word clouds
final Normalizer[] NORMALIZERS = new Normalizer[] {
new UpperCaseNormalizer(),
new LowerCaseNormalizer(),
new BubbleTextNormalizer(),
new StringToHexNormalizer()
};
final Font[] FONTS = new Font[] {
new Font("Lucida Sans", Font.PLAIN, 10),
new Font("Comic Sans", Font.PLAIN, 10),
new Font("Yu Gothic Light", Font.PLAIN, 10),
new Font("Meiryo", Font.PLAIN, 10)
};
final List<List<WordFrequency>> listOfWordFrequencies = new ArrayList<>();
final Point[] positions = new Point][] { new Point(0, 0), new Point(0, 1000), new Point(1000, 0), new Point(1000, 1000) };
final Color[] colors = new Color[] { Color.RED, Color.WHITE, new Color(0x008080)/* TEAL */, Color.GREEN };
// set up word clouds
for (int i = 0; i < lwc.getLayers(); i++) {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setMinWordLength(3);
frequencyAnalyzer.setNormalizer(NORMALIZERS[i]);
frequencyAnalyzer.setWordFrequenciesToReturn(1000);
listOfWordFrequencies.add(frequencyAnalyzer.load("text/english_tide.txt"));
final WordCloud worldCloud = parallelLayeredWordCloud.getAt(i);
worldCloud.setAngleGenerator(new AngleGenerator(0));
worldCloud.setPadding(3);
worldCloud.setWordStartStrategy(new CenterWordStart());
worldCloud.setKumoFont(new KumoFont(FONTS[i]));
worldCloud.setColorPalette(new ColorPalette(colors[i]));
worldCloud.setBackground(new RectangleBackground(positions[i], dimension));
worldCloud.setFontScalar(new LinearFontScalar(10, 40));
}
// start building
for (int i = 0; i < lwc.getLayers(); i++) {
parallelLayeredWordCloud.build(i, listOfWordFreqs.get(i));
}
parallelLayeredWordCloud.writeToFile("parallelBubbleText.png"); Refer to JPanelDemo.java for an example integrating into a JPanel. Word Frequency File / AnalyzerThe most common way to generate word frequencies is to pass a String of text directly to Sometimes the word counts and word frequencies are already known and a consumer would like to load them directly into Kumo.
To do so, you can manually construct the
Order does not matter as the TokenizersTokenizers are the code that splits a sentence/text into a list of words. Currently only two tokenizers are built into Kumo.
To add your own just create a class that override the
FiltersAfter tokenization, filters are applied to each word to determine whether or not should be omitted from the word list. To add set the filter, call
NormalizersAfter word tokenization and filtering has occurred you can further transform each word via a normalizer.
The default normalizer ia To add set the normalizer, call
Command Line Interface (CLI)Kumo can now be accessed via CLI. It is not quite as flexible as the programmatic interface yet but should support most of the common needs. The CLI Documentation can be found here. The below examples assume you have the jar installed under the name of "kumo". To install via Brew run the following command.
Examples: Create a standard word cloud.
Create a standard word cloud excluding stop words.
Create a standard word cloud with a limited word count.
Create a standard word cloud with a custom width and height.
Create a standard word cloud with custom font configuration.
Create a standard word cloud with a custom shape.
Create a standard word cloud with a custom color palette.
Create a standard word cloud using a Chinese tokenizer
Create a polar word cloud
Create a layered word cloud 全部评论
专题导读
上一篇:PacktPublishing/Java-Coding-Problems: Java Coding Problems, published by Packt发布时间:2022-06-23下一篇:qos-ch/logback: The reliable, generic, fast and flexible logging framework for J ...发布时间:2022-06-23热门推荐
热门话题
阅读排行榜
|
请发表评论