#nlp #http-request #key-value-database #button #processing #natural #language

zoea

Zoea 是专为新手 Rustaceans 开发的一个 crate。它包含了像 HTTP GET 请求、键值数据库持久化和自然语言处理等常见功能的“简易”按钮。

10 个版本

0.1.0 2021年5月14日
0.0.9 2020年5月31日

#1910数据库接口

每月 35 次下载
shibboleth 中使用

Apache-2.0

22KB
230

zoea

Zoea 是一个 crate,旨在帮助新手 Rustaceans 入门。

它包含了像 HTTP GET 请求、键值数据库持久化和自然语言处理等常见功能的“简易”按钮。

你管螃蟹的幼虫叫什么?没错!你叫它 Zoea。Zoea 是一个面向新手 Rustaceans 的包,由一个新手 Rustacean 编写。

也许编程对你来说只是兼职。也许你已经学过 Python,想尝试 Rust,因为你听说了很多关于它的炒作。但当你花了两个小时尝试发送一个简单的 HTTP 请求并读取响应后,你可能会想,“!$!@$!@#,Rust 太难了。”

如果你有这种感觉,Zoea 就是你需要的。

Zoea

把 Zoea 视为一组狡猾的、有些脆弱的“简易”按钮。

Zoea 做了许多不同的事情,优先考虑效率和简单性,而不是健壮性和灵活性。它帮助你构建一些东西,实现 "概念证明",然后成熟为一个更本地的 Rustacean 方法。Zoea 中各个模块之间的唯一共同点是,它们都是作者曾经努力或尝试实现的事情。

新版本 0.1.0

底层已将 get_url 功能更改为使用 ureq 而不是 curl。这是一种更纯粹的 Rust 方法,而不是继承自 C 代码。该方法还应用了一个错误包装器。

简易 HTTP 请求

use zoea::web::get_url;
fn main() {
    let url: String = String::from("http://dummy.restapiexample.com/api/v1/employees"); // can be &str or &String
    let resp_str: String = get_url(&url).unwrap();
    println!("url={}, response={}", &url, &resp_str);
}

简易矩阵运算

Zoea 的 ::mtx 模块在 nalgebra 的周围添加了一些语法糖,以便轻松创建可变大小和类型的矩阵。矩阵乘法和线性代数变得简单。

use zoea::mtx;
// Create a 3x1000 f32 random matrix with values between -1 and 1
// Create a 1000x4 f32 random matrix with values between 5 and 25
let a = mtx::new_f32_random(3, 1000, -1f32, 1f32); //type = mtx::DMatrix \< f32>
let b = mtx::new_f32_random(1000, 4, 5f32, 25f32); // type = mtx::DMatrix \< f32>
// multiply a and b and print the result
let c = a * b;
println!("{}", c);
// take one of the values and assign it to a float
let select_element: f32 = c[(1,3)];

键值数据库持久化

Zoea 的 kv_database (键值) 使用 sqlite 作为后端进行简单操作。

use zoea::kv_database;
fn main() {
    let db = "MyTestDatabase"; // can be &str or &String
    let key = "Key1"; // can be &str or &String
    let value = "Value you want to insert"; // can be &str or &String

    // SET the value of key in database db
    kv_database::set(&db, &key, &value);
    // GET the value of key in database db
    let same_value = kv_database::get(&db, &key);
    println!("returned value = {}", same_value);
    // LIST keys in database db
    let keys = kv_database::list_keys(&db);
    // GETting an empty key returns an empty string
    let non_key = "KeyThatDoesNotExist";
    let non_value = kv_database::get(&db, &non_key); // returns String::new();
    // DELETE a key in database db
    kv_database::delete(&db, &key);
}

自然语言处理 (NLP)

use zoea::nlp;
fn main() {
    let sentence = String::from("Today I walked slowly to the garden in San Diego."); 
    let tokenized_bigrams = nlp::text_token_bigrams(&sentence);
    for bigram in tokenized_bigrams {
        println!("bigram= {}", bigram);
    }
}
新版本 0.0.8+:porter 词干提取
use zoea::nlp;
let port_stems = nlp::porter_stems("Totally dude!");
assert_eq!(port_stems[0], "total");

哈希

use zoea::hash;
fn main() {
    let mystring = String::from("Here is some string to hash"); // can be &str or &String
    let myhash = hash::hash_string(&mystring);
    println!("the hash is = {}", myhash);
}

依赖项

~10MB
~197K SLoC