#text-generation #text #language #parser #text-input

markovish

Simple Markov chain implementation for text generation

7 releases

0.2.1 Oct 7, 2024
0.2.0 Feb 26, 2024
0.1.4 Feb 25, 2024

#877 in Text processing


Used in pandoras_pot

MPL-2.0 license

36KB
554 lines

⛓️markovish💬

Dead simple Markov chain text generation

Static Badge Crates.io (markovish) GitHub License GitHub Actions Workflow Status docs.rs

Super simple (and fast) Markov chains in Rust.

use markovish::Chain;

let fortune = r#"
This is a test of the Emergency Broadcast System.  If this had been an
actual emergency, do you really think we'd stick around to tell you?
"#;

let chain = Chain::from_text(fortune).unwrap();
let new_fortune = chain.generate_str(&mut rand::thread_rng(), 300);

This project is mostly for my personal use in pandoras_pot, but PRs and issues are welcome.

This crate is aimed to be very simple, and the current aim is to do the following well:

  1. Take some input text.
  2. Parse it.
  3. Generate an infinite string of new text using that.

More information about usage and the like can be found in the crate docs and in the examples.

If you want to save a chain, you can enable the serde feature and serialize it.

Support

I do not accept any donations. If you however find any software I write for fun useful, please consider donating to an efficient charity that save or improve lives the most per $CURRENCY.

GiveWell.org is an excellent website that can help you donate to the world's most efficient charities. Alternatives listing the current best charities for helping our planet is Founders Pledge, and for animal welfare Animal Charity Evaluators.

  • Residents of Sweden can do tax-deductable donations to GiveWell via Ge Effektivt
  • Residents of Norway can do the same via Gi Effektivt

This list is not exhaustive; your country may have an equivalent.

Dependencies

~2.5MB
~46K SLoC