crfsuite 0.2.0

Safe wrapper of crfsuite
Documentation
extern crate crfsuite;

use crfsuite::{Model, Attribute};

#[test]
fn test_open_model() {
    let model = Model::from_file("tests/model.crfsuite").unwrap();
    let tagger = model.tagger().unwrap();
    let _labels = tagger.labels().unwrap();
}

#[test]
fn test_tag() {
    let model = Model::from_file("tests/model.crfsuite").unwrap();
    let mut tagger = model.tagger().unwrap();
    let xseq = vec![
        vec![Attribute::new("walk", 1.0), Attribute::new("shop", 0.5)],
        vec![Attribute::new("walk", 1.0)],
        vec![Attribute::new("walk", 1.0), Attribute::new("clean", 0.5)],
        vec![Attribute::new("shop", 0.5), Attribute::new("clean", 0.5)],
        vec![Attribute::new("walk", 0.5), Attribute::new("clean", 1.0)],
        vec![Attribute::new("clean", 1.0), Attribute::new("shop", 0.1)],
        vec![Attribute::new("walk", 1.0), Attribute::new("shop", 0.5)],
        vec![],
        vec![Attribute::new("clean", 1.0)],
    ];
    let yseq = ["sunny", "sunny", "sunny", "rainy", "rainy", "rainy", "sunny", "sunny", "rainy"];
    let res = tagger.tag(&xseq).unwrap();
    assert_eq!(res, yseq);

    tagger.probability(&yseq).unwrap();
    tagger.marginal("sunny", 1i32).unwrap();
}