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

segment

学習済みモデルを使用してテキストを単語に分割します。

使い方

echo "text" | litsea segment [OPTIONS] <MODEL_URI>

引数

ArgumentDescription
MODEL_URI学習済みモデルファイルのパスまたはURL。サポート形式: ローカルファイルパス, file://, http://, https://

オプション

OptionDefaultDescription
-l, --language <LANGUAGE>japanese文字タイプ分類に使用する言語。指定可能な値: japanese / ja, chinese / zh, korean / ko, english / en
--posoff品詞推定付き分割を有効にします。二段構成モデル(train --pos)が必要です
--threads <N>1バッチ分割のワーカースレッド数(issue #185)。既定値では従来どおりのシングルスレッド動作。N > 1 では入力行を並列に分割しつつ入力順で出力するため、出力はどちらでもバイト単位で同一です(--pos の有無を問わず使用可)。大きな入力の実時間はコア数に応じて短縮されますが、1 行あたりのレイテンシは変わりません

入力 / 出力

  • 入力: stdinから読み取り、1行に1文。空行はスキップされます。
  • 出力: stdoutに書き込み、スペース区切りのトークン、入力行ごとに1行。
  • パイプライン: 後段の処理がパイプを早期に閉じた場合(例: litsea segment model | head -1)、コマンドは正常終了します(終了コード0)。 そのため segment はシェルのパイプライン内で問題なく連携できます。

使用例

日本語:

echo "LitseaはTinySegmenterを参考に開発された。" \
  | litsea segment -l japanese ./models/RWCP.model
Litsea は TinySegmenter を 参考 に 開発 さ れ た 。

中国語:

echo "中文分词测试。" | litsea segment -l chinese ./models/chinese.model

韓国語:

echo "한국어 단어 분할 테스트입니다." \
  | litsea segment -l korean ./models/korean.model

英語:

echo "I don't know." | litsea segment -l english ./models/english.model

ファイルの処理:

cat input.txt | litsea segment -l japanese ./models/japanese.model > output.txt

URLからモデルを読み込み:

echo "テスト文です。" \
  | litsea segment -l japanese https://example.com/models/japanese.model

品詞推定付き分割(--pos

--pos フラグを指定すると、train --pos で作成した 二段構成モデルを 使って単語分割と品詞推定を一緒に行います。--pos に他の種類のモデルを 渡すと正確なエラーで失敗します(スタンドアロンの Averaged Perceptron ファイル — 削除された joint POS モデル形式 — は、train --pos での 再学習を促すヒント付きで拒否されます)。

使い方

echo "text" | litsea segment --pos [OPTIONS] <MODEL_URI>

出力形式

各単語が 単語/品詞 の形式で出力されます。品詞は UPOS タグセットに準拠します。

echo "今日はいい天気ですね。" \
  | litsea segment --pos -l japanese ./models/japanese_pos.model
今日/NOUN は/ADP いい/ADJ 天気/NOUN です/AUX ね/PART 。/PUNCT

ファイルの処理

cat input.txt | litsea segment --pos -l japanese ./models/japanese_pos.model > output.txt

バッチ分割の並列化(--threads

文どうしは独立なので、エンジンを変更することなくバッチスループットを コア数でスケールできます: 入力行をチャンク単位で読み込み、各チャンクを ワーカーへ分配し(各ワーカーは自分専用の再利用バッファを保持)、出力は 厳密に入力順で書き出します。

litsea segment --threads 8 -l japanese ./models/japanese.model < corpus.txt > segmented.txt

--threads 1(既定値)は従来の逐次ループそのものを使います。 なお cargo bench -- external_corpus はシングルスレッドのエンジン 計測のままです — CLI レベルのスレッドスケーリングとエンジンスループットは 別の数値であり、直接比較しないでください (ベンチマークを参照)。

注意事項

  • --language フラグは、モデルが学習された言語と一致する必要があります
  • CLIは非同期のURI APIを通じてモデルを読み込み、TLS(rustls)を使用したHTTP/HTTPSをサポートしています。ライブラリには同期的なローカル読み込み(load_model_from_path)も用意されています
  • モデルURIはファイルパスに限定されません – 有効なURLであれば使用可能です
  • --pos を使用する場合、モデルは train --pos で学習した二段構成モデルである必要があります