Metadata-Version: 2.4
Name: bikkuri
Version: 0.2.0rc37
Summary: Calculate the surprisal of words in texts.
Author-email: "J. Nathanael Philipp" <jnathanael@philipp.land>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/jnphilipp/bikkuri
Project-URL: Bug Tracker, http://github.com/jnphilipp/bikkuri/issues
Keywords: surprisal
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Bikkuri

Calculate the surprisal of words in texts.

![Tests](https://github.com/jnphilipp/bikkuri/actions/workflows/tests.yml/badge.svg)
[![PyPI Version](https://img.shields.io/pypi/v/bikkuri.svg?logo=pypi&logoColor=white)](https://pypi.org/project/bikkuri/)
[![crates.io Version](https://img.shields.io/crates/v/bikkuri.svg?logo=rust&logoColor=white)](https://crates.io/project/bikkuri/)

## Usage

### Python
```python
from bikkuri.ngram import NGramSurprisal


unigram_surprisal = NGramSurprisal(1)
unigram_surprisal.fit([
    ["lorem", "ipsum", "dolor", "sit", "amet", ...],
    ["convallis", "fringilla", "dignissim", "massa", ...],
    ...
])

unigram_surprisal.surprisal([["lorem", "ipsum", "dolor"]])
```

### Rust
```rust
extern crate bikkuri;
use bikkuri::ngram::NGramSurprisal;

let mut unigram_surprisal = NGramSurprisal::new(1);
unigram_surprisal.fit(&vec![
    vec!["lorem", "ipsum", "dolor", "sit", "amet", ...],
    vec!["convallis", "fringilla", "dignissim", "massa", ...],
    ...
]);
unigram_surprisal.surprisal(&vec![vec!["lorem", "ipsum", "dolor"]]);
```
