15 个版本

0.1.14 2023年5月1日
0.1.13 2023年2月7日
0.1.11 2023年1月22日
0.1.6 2022年12月27日

#119 in 可视化

Download history 5/week @ 2024-03-09 1/week @ 2024-03-16 48/week @ 2024-03-30 1/week @ 2024-04-06 18/week @ 2024-04-20 191/week @ 2024-04-27 2/week @ 2024-05-25

81 每月下载量

Unlicense

285KB
627 代码行

wordcloud-rs

一个从文本和图像生成词云的 Rust 库!

示例

代码

use std::collections::HashMap;
use std::fs;
use lazy_static::lazy_static;
use regex::Regex;
use wordcloud_rs::*;

lazy_static! {
    static ref RE_TOKEN: Regex = Regex::new(r"\w+").unwrap();
}

fn tokenize(text: String) -> Vec<(Token, f32)> {
    let mut counts: HashMap<String, usize> = HashMap::new();
    for token in RE_TOKEN.find_iter(&text) {
        *counts.entry(token.as_str().to_string()).or_default() += 1;
    }
    counts.into_iter().map(|(k, v)| (Token::Text(k), v as f32)).collect()
}

fn main() {
    // Prepare the tokens
    let text = fs::read_to_string("assets/sample_text.txt").unwrap();
    let mut tokens = tokenize(text);
    tokens.push((Token::from("assets/alan_turing.jpg"), 15.));
    tokens.push((Token::from("assets/turing_statue_bletchley.jpg"), 20.));
    tokens.push((Token::Text("💻".to_string()), 20.));
    // Generate the word-cloud
    let wc = WordCloud::new().generate(tokens);
    // Save it
    wc.save("sample_cloud.png").unwrap();
}

输出

word_cloud_demo

依赖

~23MB
~181K SLoC