アーキテクチャ

Linderaは複数のクレートで構成されるCargo workspaceとして構成されています。各クレートは、低レベルのCRF計算から高レベルのCLIや言語バインディングまで、それぞれ明確な責務を持っています。

クレート依存関係図

graph TB
    CRF["lindera-crf\n(CRF Engine)"]
    DICT["lindera-dictionary\n(Dictionary Base)"]
    IPADIC["lindera-ipadic"]
    UNIDIC["lindera-unidic"]
    KODIC["lindera-ko-dic"]
    CCCEDICT["lindera-cc-cedict"]
    JIEBA["lindera-jieba"]
    NEOLOGD["lindera-ipadic-neologd"]
    LIB["lindera\n(Core Library)"]
    CLI["lindera-cli\n(CLI)"]
    PY["lindera-python\n(Python)"]
    WASM["lindera-wasm\n(WebAssembly)"]

    CRF --> DICT
    DICT --> IPADIC
    DICT --> UNIDIC
    DICT --> KODIC
    DICT --> CCCEDICT
    DICT --> JIEBA
    DICT --> NEOLOGD
    DICT --> LIB
    IPADIC --> LIB
    UNIDIC --> LIB
    KODIC --> LIB
    CCCEDICT --> LIB
    JIEBA --> LIB
    NEOLOGD --> LIB
    LIB --> CLI
    LIB --> PY
    LIB --> WASM

クレート一覧

クレート種類説明
lindera-crfコアPure RustによるCRF(条件付き確率場)実装。no_stdサポート。シリアライゼーションにrkyvを使用。
lindera-dictionaryコア辞書ベースライブラリ。辞書の読み込み、ビルド、学習機能(train featureで有効化)を提供。
linderaコアメインの形態素解析ライブラリ。辞書、セグメンター、キャラクターフィルター、トークンフィルターを統合。
lindera-cliアプリケーショントークナイズ、辞書ビルド、CRF学習のためのコマンドラインインターフェース。
lindera-ipadic辞書IPADICベースの日本語辞書。
lindera-ipadic-neologd辞書IPADIC NEologdベースの日本語辞書(新語対応)。
lindera-unidic辞書UniDicベースの日本語辞書。
lindera-ko-dic辞書ko-dicベースの韓国語辞書。
lindera-cc-cedict辞書CC-CEDICTベースの中国語辞書。
lindera-jieba辞書Jiebaベースの中国語辞書。
lindera-pythonバインディングPyO3を利用したPythonバインディング。
lindera-wasmバインディングwasm-bindgenを利用したWebAssemblyバインディング。

トークナイズパイプライン

Linderaは複数段階のパイプラインでテキストを処理します:

Input Text
  |
  v
Character Filters    -- Normalize characters (e.g., Unicode normalization, mapping)
  |
  v
Segmenter            -- Segment text into tokens using a dictionary and the Viterbi algorithm
  |
  v
Token Filters        -- Transform tokens (e.g., POS filtering, stop words, stemming)
  |
  v
Output Tokens

Segmenterがコアコンポーネントです。辞書から候補トークンのラティスを構築し、Viterbiアルゴリズムを適用して最小コストのパスを見つけ、最も適切な分割結果を生成します。

Featureフラグ

Feature説明デフォルト
compress辞書の圧縮サポート有効
mmap辞書読み込みのためのメモリマップドファイルサポート有効
trainCRFベースの辞書学習機能(lindera-crfに依存)CLIのみ
embed-ipadicIPADIC辞書をバイナリに埋め込み無効
embed-cjkIPADIC + ko-dic + Jieba辞書を埋め込み無効
embed-cjk2UniDic + ko-dic + Jieba辞書を埋め込み無効
embed-cjk3IPADIC NEologd + ko-dic + Jieba辞書を埋め込み無効

詳細