Skip to main content

full_scores/
full_scores.rs

1use kenlm::Model;
2use std::env;
3
4fn main() -> Result<(), kenlm::KenlmError> {
5    let mut args = env::args().skip(1);
6    let model_path = args.next().unwrap_or_else(|| "lm/test.arpa".to_string());
7    let sentence = args.collect::<Vec<_>>().join(" ");
8    let sentence = if sentence.is_empty() {
9        "looking on a little"
10    } else {
11        sentence.as_str()
12    };
13
14    let model = Model::new(model_path)?;
15    let scores = model.full_scores(sentence, true, true)?;
16
17    for (word, score) in sentence
18        .split_whitespace()
19        .chain(std::iter::once("</s>"))
20        .zip(scores)
21    {
22        println!(
23            "{word}\tlog10={:.6}\tngram_length={}\toov={}",
24            score.log_prob, score.ngram_length, score.oov
25        );
26    }
27
28    Ok(())
29}