#马尔可夫链 # #概率

bin+lib markov

Rust 中通用的马尔可夫链实现

35 个版本 (6 个稳定版)

使用旧的 Rust 2015

1.1.0 2020年7月20日
1.0.3 2020年1月27日
1.0.2 2018年5月3日
1.0.1 2018年3月3日
0.0.8 2014年12月23日

#600文本处理

Download history 66/week @ 2024-03-24 201/week @ 2024-03-31 55/week @ 2024-04-07 72/week @ 2024-04-14 80/week @ 2024-04-21 72/week @ 2024-04-28 64/week @ 2024-05-05 56/week @ 2024-05-12 82/week @ 2024-05-19 60/week @ 2024-05-26 69/week @ 2024-06-02 39/week @ 2024-06-09 89/week @ 2024-06-16 75/week @ 2024-06-23 200/week @ 2024-06-30 21/week @ 2024-07-07

每月 394 次下载
用于 5 个 Crates (4 个直接使用)

CC0 许可

26KB
461

markov 构建状态 Crates.io 文档 使用 Spacemacs 构建

Rust 中通用 马尔可夫链 实现。它支持实现 EqHashClone 的所有类型,并为处理 String 提供了一些特定助手,因为文本生成是最可能的使用场景。您可以在 docs.rs 上找到最新、可供使用的文档。

注意:`markov` 处于被动维护模式。对于其预期用途(主要是文本生成,尤其是在聊天机器人等场景中),它应该运行良好,但可能不会扩展到任何其他用途。如果它不能广泛满足您的需求,您可能需要将其分叉或开发一个更专门定制的库。尽管如此,仍然会对错误报告进行分类和修复。

示例

使用字符串

extern crate markov;

use markov::Chain;

fn main() {
    let mut chain = Chain::new();
    chain.feed_str("I like cats and I like dogs.");
    println!("{:?}", chain.generate_str());
}

使用整数

extern crate markov;

use markov::Chain;

fn main() {
    let mut chain = Chain::new();
    chain.feed(vec![1u8, 2, 3, 5]).feed([3u8, 9, 2]);
    println!("{:?}", chain.generate());
}

链有迭代器(无限和有界!)

extern crate markov;

use markov::Chain;

fn main() {
    let mut chain = Chain::new();
    chain.feed_str("I like cats and I like dogs.");
    for line in chain.iter_for(5) {
        println!("{:?}", line);
    }
}

链可以是高阶的

extern crate markov;

use markov::Chain;

fn main() {
    let mut chain = Chain::of_order(2);
    chain.feed_str("I like cats and I like dogs.");
    for line in chain.iter_for(5) {
        println!("{:?}", line);
    }
}

贡献

对这个库的贡献将受到极大的欢迎。应注意的是,由于这是一个公共领域项目,因此任何贡献都将同样释放到公共领域。

依赖项

~0.9–2.3MB
~45K SLoC