#markov-chain #markov #chain #generation #probability

markov_rs

Rust中简单快速的马尔可夫链生成器

3个版本

0.1.2 2021年12月13日
0.1.1 2021年11月11日
0.1.0 2021年11月10日

#1880 in 算法

MIT/Apache

70KB
134

markov_rs

markov_rs Crates.io docs.rs Crates.io

Rust中简单快速的马尔可夫链生成器。

通过使用Walker的别名方法(WAM),一种加权随机抽样算法,该模型可以快速生成元素。关于WAM的详细信息,请参阅ichi-h / weighted_rand

基准测试

此crate和马尔可夫链使用累积分布函数(CDF)的基准测试如下。

环境

  • OS: Windows 11 Home Insider Preview
  • CPU: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
  • RAM: 16.0 GB
  • Rust版本: rustc 1.56.1
  • 源代码: benchmark.rs

创建马尔可夫链模型

从100、500和1000个词的虚拟文本创建马尔可夫链模型所需的时间。

create_model

对于这两个模型,随着文本中单词数量的增加,生成时间也会增加,但WAM的时间斜率更大。

生成元素

从上述模型生成10个元素所需的时间。

generate_elements

随着文本中单词数量的增加,CDF生成元素的速度较慢,但WAM仍然很快。

用法

将其添加到您的Cargo.toml中

[dependencies]
markov_rs = "0.1"

示例

use markov_rs::MarkovChain;

fn main() {
    let text = [
        "I", "think", "that", "that", "that", "that", "that", "boy", "wrote", "is", "wrong",
    ];
    let mut model = MarkovChain::from(&text);
    for _ in 0..20 {
        print!("{} ", model.next());
    }
}

计划中

  • 提高模型构建性能。
  • 支持N阶马尔可夫链。

许可证

根据您选择的以下许可证之一授予许可

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,均应根据上述许可双许可,而无需任何额外的条款或条件。

依赖项

~0.7–1.3MB
~28K SLoC