https://github.com/retroscepter/fast-markov
A high-performance Markov string chain for Node.js written in Rust.
https://github.com/retroscepter/fast-markov
markov-chain napi-rs native-module rust string-generation
Last synced: 9 months ago
JSON representation
A high-performance Markov string chain for Node.js written in Rust.
- Host: GitHub
- URL: https://github.com/retroscepter/fast-markov
- Owner: retroscepter
- Created: 2024-11-03T09:29:28.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-04T01:54:51.000Z (about 1 year ago)
- Last Synced: 2024-12-10T19:21:28.091Z (about 1 year ago)
- Topics: markov-chain, napi-rs, native-module, rust, string-generation
- Language: JavaScript
- Homepage:
- Size: 80.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fast-markov
A high-performance Markov string chain for Node.js written in Rust.
## Installation
```bash
npm install fast-markov
# or
yarn add fast-markov
# or
pnpm add fast-markov
```
## Usage
### Basic Example
```javascript
const { MarkovChain } = require("fast-markov");
// Create a new chain
const chain = new MarkovChain();
// Add some training text
chain.addText("the quick brown fox jumps over the lazy dog");
chain.addText("the lazy cat sleeps all day long");
// Generate new text (10 words)
console.log(chain.generate(null, 10));
```
### With Custom Start Word
```javascript
const { MarkovChain } = require("fast-markov");
const chain = new MarkovChain();
chain.addText("the quick brown fox jumps over the lazy dog");
// Generate text starting with 'the'
console.log(chain.generate("the", 5));
```
### Saving and Loading Chain State
```javascript
const { MarkovChain } = require("fast-markov");
// Create and train chain
const chain = new MarkovChain();
chain.addText("some training text here");
// Export chain state
const exported = chain.exportCorpus();
// Create new chain and import state
const newChain = new MarkovChain();
newChain.importCorpus(exported);
```
### With Custom Initial Capacity
```javascript
const { MarkovChain } = require("fast-markov");
// Create chain with larger initial capacity for better performance
// when training with large datasets
const chain = new MarkovChain({ initialCapacity: 10000 });
```
## API Reference
### `new MarkovChain(options?: MarkovChainOptions)`
Creates a new Markov chain instance.
- `options.initialCapacity?: number` - Initial capacity for the internal hash map (default: 1000)
### `addText(text: string): void`
Adds training text to the chain.
### `generate(startWord: string | null, length: number): string`
Generates new text based on the trained patterns.
- `startWord` - Optional word to start generation with
- `length` - Number of words to generate
- Returns generated text string
### `getWordCount(): number`
Returns the total number of words in the chain.
### `exportCorpus(): string`
Exports the chain state as a JSON string.
### `importCorpus(json: string): void`
Imports a previously exported chain state.
## Supported Platforms
Pre-built binaries are available for the following platforms:
- Windows (x64, arm64)
- macOS (x64, arm64)
- Linux (x64, arm64)
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.