ultra-nlp 0.8.0

A NLP library.
Documentation
use criterion::{criterion_group, criterion_main, Criterion, black_box};
use ultra_nlp::{daachorse, cedarwood, hashmap, BehaviorForUnmatched};

criterion_group!(benches, bench_segment_fully);
criterion_main!(benches);

fn bench_segment_fully(c: &mut Criterion) {
    let mut group = c.benchmark_group("segment_fully");

    let patterns: Vec<&str> = vec!["南京", "南京市", "市长", "长江", "大桥", "你好世界"];
    let text = " 南京市长江大桥, hello world ";

    group.bench_function("daachorse", |b| {
        let dict = daachorse::StandardDictionary::new(
            patterns.clone()
        ).unwrap();

        b.iter(|| {
            daachorse::segment_fully(
                black_box(text),
                black_box(&dict),
                black_box(BehaviorForUnmatched::Ignore),
            )
        });
    });

    group.bench_function("cedarwood", |b| {
        let dict = cedarwood::ForwardDictionary::new(
            patterns.clone()
        ).unwrap();

        b.iter(|| {
            cedarwood::segment_fully(
                black_box(text),
                black_box(&dict),
                black_box(BehaviorForUnmatched::Ignore),
            );
        });
    });

    group.bench_function("hashmap", |b| {
        let dict = hashmap::Dictionary::new(
            patterns.clone()
        ).unwrap();

        b.iter(|| {
            hashmap::segment_fully(
                black_box(text),
                black_box(&dict),
                black_box(BehaviorForUnmatched::Ignore),
            )
        });
    });

    group.finish();
}