Skip to content

Latest commit

 

History

History
43 lines (36 loc) · 2.81 KB

File metadata and controls

43 lines (36 loc) · 2.81 KB

Zenzai

ニューラルかな漢字変換エンジン「Zenzai」を有効化することで、高精度な変換を提供できます。利用するには変換オプションのzenzaiModeを設定します。

import KanaKanjiConverterModuleWithDefaultDictionary
let converter = KanaKanjiConverter.withDefaultDictionary()

let options = ConvertRequestOptions(
    // ...
    requireJapanesePrediction: .autoMix,
    requireEnglishPrediction: .disabled,
    keyboardLanguage: .ja_JP,
    learningType: .nothing,
    memoryDirectoryURL: documents,
    sharedContainerURL: documents,
    textReplacer: .withDefaultEmojiDictionary(),
    specialCandidateProviders: KanaKanjiConverter.defaultSpecialCandidateProviders,
    zenzaiMode: .on(
        weight: url,
        inferenceLimit: 1,
        versionDependentMode: .v3(.init(profile: "三輪/azooKeyの開発者", leftSideContext: "私の名前は"))
    ),
    metadata: .init(versionString: "Your App Version X")
)
  • weightにはgguf形式の重みファイルを指定します。重みファイルはHugging Faceからダウンロードできます。
  • inferenceLimitには推論回数の上限を指定します。通常1で十分ですが、低速でも高精度な変換を得たい場合は5程度の値にすることもできます。

動作環境

  • M1以上のスペックのあるmacOS環境が望ましいです。GPUを利用します。
  • モデルサイズに依存しますが、現状150MB程度のメモリを必要とします
  • Linux環境・Windows環境でもCUDAを用いて動作します。

仕組み

Zennのブログをお読みいただくのが最もわかりやすい解説です。

用語

  • Zenzai: ニューラルかな漢字変換システム
  • zenz-v1: Zenzaiで用いることのできるかな漢字変換モデル「zenz」の第1世代。\uEE00<input_katakana>\uEE01<output></s>というフォーマットでかな漢字変換タスクを行う機能に特化。
  • zenz-v2: Zenzaiで用いることのできるかな漢字変換モデル「zenz」の第2世代。第1世代の機能に加えて\uEE00<input_katakana>\uEE02<context>\uEE01<output></s>というフォーマットで、左文脈を読み込む機能を追加。
  • zenz-v3: Zenzaiで用いることのできるかな漢字変換モデル「zenz」の第3世代。第2世代と異なり、\uEE02<context>\uEE00<input_katakana>\uEE01<output></s>のようにコンテキストを前置する方式を推奨。また、\uEE03に続けて入力されたプロフィール情報を考慮する動作をネイティブに学習済み。このほか、実験的に\uEE04+トピック、\uEE05+スタイル、\uEE06+設定も考慮できるようになっています。