segment
学習済みモデルを使用してテキストを単語に分割します。
使い方
echo "text" | litsea segment [OPTIONS] <MODEL_URI>
引数
| Argument | Description |
|---|---|
MODEL_URI | 学習済みモデルファイルのパスまたはURL。サポート形式: ローカルファイルパス, file://, http://, https:// |
オプション
| Option | Default | Description |
|---|---|---|
-l, --language <LANGUAGE> | japanese | 文字タイプ分類に使用する言語。指定可能な値: japanese / ja, chinese / zh, korean / ko, english / en |
--pos | off | 品詞推定付き分割を有効にします。二段構成モデル(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で学習した二段構成モデルである必要があります