Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ライブラリ API 概要

litsea クレートは、単語分割、モデル学習、特徴量抽出のための Rust API を提供します。

インストール

[dependencies]
litsea = "0.13.0"

ローカルファイルからのモデル読み込みは同期 API(load_model_from_path)で行えるため、tokio などの非同期ランタイムは不要です。HTTP(S) からのリモートモデル取得など async API(load_model)を使う場合のみ、非同期ランタイムを追加してください(例えば TwoStageLearner::load_model も常に同じ非同期経路でモデル URI を解決するため、これに該当します)。

モジュール構成

graph LR
    A["litsea::segmenter"] --- B["Segmenter"]
    C["litsea::adaboost"] --- D["AdaBoost"]
    E["litsea::language"] --- F["Language"]
    G["litsea::extractor"] --- H["Extractor"]
    I["litsea::trainer"] --- J["Trainer, PerceptronTrainer, TwoStageTrainer, TwoStageMetrics"]
    K["litsea::error"] --- L["LitseaError, Result"]
    M["litsea::perceptron"] --- N["AveragedPerceptron"]
    O["litsea::upos"] --- P["Upos, SegmentLabel"]
    Q["litsea::metrics"] --- R["BinaryMetrics, MulticlassMetrics"]
    S["litsea::evaluation"] --- T["PosMetrics, SegmentationMetrics"]
    U["litsea::two_stage"] --- V["ModelKind, TwoStageFeatureSet, TwoStageLearner"]
モジュール主要な型用途
litsea::segmenterSegmenter, SegmentBuffer単語分割(所有出力またはアロケーションフリー出力)、二段構成の品詞推定付き分割
litsea::adaboostAdaBoost二値分類、モデルの入出力
litsea::perceptronAveragedPerceptron多クラス分類(二段構成の学習)、モデルの入出力
litsea::uposUpos, SegmentLabelUPOS 品詞タグ、セグメントラベル
litsea::languageLanguage言語定義、文字分類
litsea::extractorExtractorコーパスからの特徴量抽出
litsea::trainerTrainer, PerceptronTrainer, TwoStageTrainer, TwoStageMetrics学習パイプラインの制御
litsea::errorLitseaError, Resultエラー型と Result エイリアス
litsea::metricsBinaryMetrics, MulticlassMetrics学習結果の評価指標(in-sample)
litsea::evaluationPosMetrics, SegmentationMetricsgold コーパスに対する held-out 評価
litsea::two_stageModelKind, TwoStageFeatureSet, TwoStageLearner二段構成モデルのコンテナとモデル種別の判定
litsea::model_ioread_model_bytesモデル URI(パス・file://http(s)://)をバイト列へ解決する

主要な型はすべてクレートルートから再エクスポートされているため、use litsea::Segmenter;use litsea::segmenter::Segmenter; の短縮形として使えます。

各学習器は自身で URI を解決するため、model_io::read_model_bytes を直接使う場面はほとんどありません。これが公開されているのは、学習器を選ぶ前にモデルの中身を確認する必要がある呼び出し側のためです。litsea-binding-core はこれでバイト列を 1 度読み、ModelKind::detect で種別を判定し、同じバイト列を load_model_from_reader に渡すことで、リモートモデルを 2 回ダウンロードすることを避けています。

クイックスタート

use std::path::Path;

use litsea::adaboost::AdaBoost;
use litsea::language::Language;
use litsea::segmenter::Segmenter;

fn main() -> litsea::Result<()> {
    let mut learner = AdaBoost::new(0.01, 100);
    learner.load_model_from_path(Path::new("./models/RWCP.model"))?;

    let segmenter = Segmenter::with_learner(Language::Japanese, learner);
    let tokens = segmenter.segment("これはテストです。");

    assert_eq!(tokens, vec!["これ", "は", "テスト", "です", "。"]);
    Ok(())
}

クイックスタート(品詞推定)

use std::path::Path;

use litsea::language::Language;
use litsea::segmenter::Segmenter;
use litsea::two_stage::TwoStageLearner;

fn main() -> litsea::Result<()> {
    let mut learner = TwoStageLearner::new();
    learner.load_model_from_path(Path::new("./models/japanese_pos.model"))?;

    let segmenter = Segmenter::with_two_stage_learner(Language::Japanese, learner);
    let tokens = segmenter.segment_with_pos("これはテストです。")?;

    for (word, pos) in &tokens {
        print!("{}/{} ", word, pos);
    }
    println!();

    Ok(())
}

完全な API ドキュメントは docs.rs/litsea で参照できます。