辞書管理

Lindera Python は、形態素解析で使用する辞書の読み込み、ビルド、管理のための関数を提供します。

辞書の読み込み

システム辞書

load_dictionary(uri) を使用してシステム辞書を読み込みます。

埋め込み辞書(対応する embed-* feature が必要):

from lindera import load_dictionary

dictionary = load_dictionary("embedded://ipadic")

外部辞書(ディスク上のディレクトリから読み込み):

dictionary = load_dictionary("/path/to/dictionary")

ユーザー辞書

ユーザー辞書はシステム辞書にカスタム語彙を追加します。

from lindera import load_user_dictionary, Metadata

metadata = Metadata()
user_dict = load_user_dictionary("/path/to/user_dictionary", metadata)

トークナイザーのビルド時にユーザー辞書を渡します:

from lindera import Tokenizer, load_dictionary, load_user_dictionary, Metadata

dictionary = load_dictionary("embedded://ipadic")
metadata = Metadata()
user_dict = load_user_dictionary("/path/to/user_dictionary", metadata)

tokenizer = Tokenizer(dictionary, mode="normal", user_dictionary=user_dict)

または、ビルダー経由で設定します:

from lindera import TokenizerBuilder

tokenizer = (
    TokenizerBuilder()
    .set_dictionary("embedded://ipadic")
    .set_user_dictionary("/path/to/user_dictionary")
    .build()
)

辞書のビルド

システム辞書のビルド

ソースファイルからシステム辞書をビルドします:

from lindera import build_dictionary, Metadata

metadata = Metadata(name="custom", encoding="UTF-8")
build_dictionary("/path/to/input_dir", "/path/to/output_dir", metadata)

入力ディレクトリには辞書のソースファイル(CSV レキシコン、matrix.def など)が含まれている必要があります。

ユーザー辞書のビルド

CSV ファイルからユーザー辞書をビルドします:

from lindera import build_user_dictionary, Metadata

metadata = Metadata()
build_user_dictionary("ipadic", "user_words.csv", "/path/to/output_dir", metadata)

metadata パラメータは省略可能です。省略した場合はデフォルトのメタデータ値が使用されます:

build_user_dictionary("ipadic", "user_words.csv", "/path/to/output_dir")

Metadata

Metadata クラスは辞書のパラメータを設定します。

Metadata の作成

from lindera import Metadata, CompressionAlgorithm

# デフォルトのメタデータ
metadata = Metadata()

# カスタムメタデータ
metadata = Metadata(
    name="my_dictionary",
    encoding="UTF-8",
    compress_algorithm=CompressionAlgorithm.Deflate,
    default_word_cost=-10000,
)

JSON からの読み込み

metadata = Metadata.from_json_file("metadata.json")

プロパティ

プロパティデフォルト説明
namestr"default"辞書名
encodingstr"UTF-8"文字エンコーディング
compress_algorithmCompressionAlgorithmDeflate圧縮アルゴリズム
default_word_costint-10000未知語のデフォルトコスト
default_left_context_idint1288デフォルトの左文脈 ID
default_right_context_idint1288デフォルトの右文脈 ID
default_field_valuestr"*"欠損フィールドのデフォルト値
flexible_csvboolFalse柔軟な CSV パースを許可
skip_invalid_cost_or_idboolFalse無効なコストまたは ID のエントリーをスキップ
normalize_detailsboolFalse形態素の詳細情報を正規化
dictionary_schemaSchemaIPADIC スキーマメイン辞書のスキーマ
user_dictionary_schemaSchema最小スキーマユーザー辞書のスキーマ

すべてのプロパティは取得と設定の両方をサポートしています:

metadata = Metadata()
metadata.name = "custom_dict"
metadata.encoding = "EUC-JP"
print(metadata.name)  # "custom_dict"

to_dict()

メタデータの辞書表現を返します:

metadata = Metadata(name="test")
print(metadata.to_dict())

CompressionAlgorithm

利用可能な圧縮アルゴリズム:

説明
CompressionAlgorithm.DeflateDEFLATE 圧縮(デフォルト)
CompressionAlgorithm.ZlibZlib 圧縮
CompressionAlgorithm.GzipGzip 圧縮
CompressionAlgorithm.Raw圧縮なし