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 在 文本处理
每月 394 次下载
用于 5 个 Crates (4 个直接使用)
26KB
461 行
markov
Rust 中通用 马尔可夫链 实现。它支持实现 Eq
、Hash
和 Clone
的所有类型,并为处理 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