1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac OS日本語入力の追加辞書をLLMで作成するためのjsonスキーマ

Posted at

私はMac OS標準の日本語入力を使って小説を書いています。かつて「ことえり」と呼ばれていた日本語入力は、ATOKなどの商用辞書やGoogle IMEのようなネットに強いとされるIMEに比べて辞書登録されている単語が少なく感じますが、逆に過変換されることもありません。素直なIMEとして愛用しています。

しかし単語が少ないのは辛いですね。例えば示現流で使う「猿叫」という単語は入っていません。「さるさけび」とタイプして「び」を消すようなことを繰り返していると、「さるさ――」と入力した瞬間に「猿叫び」が候補に出てくる過学習にも見舞われます。そして小説執筆は(特にSFやテック小説は)、IMEの想定とはちょっと違う単語を大量に使う業務なので、追加辞書は欠かせません。その追加辞書が使いやすいので、私はMac OSの標準日本語入力を使っています。

Mac OSの標準日本語入力の追加辞書は、カンマ区切りの.txtファイルを、設定.app > キーボード > 入力ソース[編集] > 日本語入力 > の下部にある「追加辞書」に読み込んで使います。

辞書を無効にするときは、リストを右クリックして「ゴミ箱に入れる」で無効化できます。無効にしてもメモリには残っているので「変換学習[リセット...]」を実行しなければなりません(ちなみにこのリセット、私は毎日のように行っています。自動的に学習されるよりも辞書登録した方がいいですからね)。

辞書の形式は「ことえり」時代と変わりません。["yomi", "word", "pos"]です。設定.appに登録すると、これらの品詞はMeCabのユーザー辞書に組み込まれて変換に使われます(Mac OSの日本語入力は現在、MeCabを用いた確率的なプロセスを用いています)。

でんき,電気,普通名詞
たかさ,高さ,普通名詞
ゆだ,ユダ,人名
たなか,田中,姓
いちろう,一郎,名
むらさきしきぶ,紫式部,その他の人名
かりふぉるにあ,カリフォルニア,単純地名
かりふぉるにあしゅう,カリフォルニア州,接尾語付き地名
あっぷる,アップル,組織名
...

この辞書、テキストなので検索置換もできるし、地名のような大量のデータ登録を行うのも容易です。辞書に含まれている単語でも追加辞書に入れておけば優先順位が上がるので、重みづけのつもりで入れておくこともあります。執筆中はこの辞書を別ウィンドウで小さく開いておいて、午前午後に一度ずつぐらい登録していくことにしています。

これがMac OS日本語入力の追加辞書です。前置きはここまで。このエントリーは、この追加辞書を、任意の文章からLLMで生成する方法について解説します。

プロンプトはこちら。

Mac OS用の日本語入力ユーザー辞書を作っています。このプロンプトで渡す日本語の文書から、
日本語入力IMEに登録した方がいい単語をcsvにまとめてください。csvの構造は、この文の直後
にあるjsonスキーマに基づいてください。

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "macOS 日本語入力ユーザー辞書 スキーマ",
  "type": "object",
  "description": "macOS 日本語入力(ことえり・日本語IM)ユーザー辞書を JSON 化するためのスキーマ",
  "properties": {
    "dictionaryName": {
      "type": "string",
      "description": "辞書名(任意)"
    },
    "description": {
      "type": "string",
      "description": "辞書の説明(任意)"
    },
    "entries": {
      "type": "array",
      "description": "ユーザー辞書エントリ一覧",
      "items": {
        "type": "object",
        "required": ["yomi", "word", "pos"],
        "properties": {
          "yomi": {
            "type": "string",
            "description": "入力するひらがな",
            "propertyOrder": 1,
            "examples": ["でんき", "たなか", "うつくしい"]
          },
          "word": {
            "type": "string",
            "description": "変換候補となる語(表記)",
            "propertyOrder": 2,
            "examples": ["電気", "田中", "美しい"]
          },
          "pos": {
            "type": "string",
            "description": "品詞(macOS 日本語入力プログラム用の品詞)。num のいずれか1つのみを指定すること。独自品詞や補助分類(例:外来語)は禁止。",
            "propertyOrder": 3,
            "enum": [
              "普通名詞",
              "人名",
              "姓",
              "名",
              "その他の人名",
              "単純地名",
              "接尾語付き地名",
              "組織名",
              "その他の固有名詞",
              "サ変名詞",
              "形動名詞",
              "連体詞",
              "副詞",
              "接続詞",
              "感動詞",
              "カ行五段",
              "サ行五段",
              "タ行五段",
              "ナ行五段",
              "マ行五段",
              "ラ行五段",
              "ワ行五段",
              "ガ行五段",
              "バ行五段",
              "五段動詞",
              "一段動詞",
              "サ変動詞",
              "ザ変動詞",
              "形容詞",
              "形容動詞",
              "数字列接頭語",
              "人名接尾語",
              "地名接尾語",
              "組織名接尾語",
              "成句",
              "無品詞"
            ]
          }
      }
    }
  },
  "required": ["entries"],
  "additionalProperties": false
}

===

<h3>プロローグ</h3>

 ジャングルの、朝もやの残る小径で降り積もる、落ち葉に拳ほどの大きさのくぼみが生まれた。
 くぼみの底には昨夜の雨が染みてくる。くぼみは増えた。一つ目のくぼみの一メートルほど奥に
 一つ、二メートルほど後ろに一つ。最後に、奥のくぼみの後ろにもう一つのくぼみが生まれた……

このプロンプトをChatGTPやGeminiに送信すると、辞書が作られます。例えば『マン・カインド』の冒頭を入れて作らせてみると、こんな感じになります。

了解です。
本文を読み、日本語入力(macOS 日本語IM)に登録しておくと変換効率が上がりそうな固有名詞・専門用語・造語を抽出しました。
下記は CSV形式 で、各行が
yomi,word,pos
の順になっています(= entries 配列の中身に相当)。

さこた,迫田,姓
じょうへい,城兵,名
おるがん,ORGAN,組織名
ますちふ,マスチフ,その他の固有名詞
すぺーすびじょん,スペースビジョン,その他の固有名詞
れいてぃくる,レティクル,普通名詞
すてあびゆれっと,ステア・ビユレツト,普通名詞
すてあ,ステア,普通名詞
びゆれっと,ビュレット,普通名詞
ぐっどふぇろーず,グッドフェローズ,組織名
こうがくめいさい,光学迷彩,普通名詞
がいこっかく,外骨格,普通名詞
たきゃくろーだー,多脚ローダー,普通名詞
しょうじゅんしゅ,照準手,普通名詞
こうせいせん,公正戦,普通名詞
きょくしゃだん,曲射弾,普通名詞
ゆうきえーえる,有機EL,普通名詞
でんしょうあるごりずむ,遺伝的アルゴリズム,普通名詞
れいちぇる,レイチェル,その他の人名
じぇいく,ジェイク,その他の人名
じゃすぱーじょーんず,ジャスパー・ジョーンズ,その他の人名
えーあーじゅうご,AR-15,その他の固有名詞
えふえーあーじゅうご,FAR-15,その他の固有名詞

いかがでしょう。小説だけでなく、ちょっとした仕事で専門用語を多用するときは便利になると思います。地名なんかもありがたい。いちいち読みを入力しなくていいですからね。

自然文から単語を拾う処理はアルゴリズムでも書けなくはありません。形態素解析して単語一つひとつのMeCab辞書スコアを参照し、決めた閾値を超えた単語を拾うことは可能です。しかし、うまくいく気がしません。一度しか出てこないようなマイナーな単語が大量に並ぶだけでしょう。しかし、ChatGPT 5.2やGemini3クラスのLLMならヒューリスティックな、納得できる結果を即座に出してくれます。ローカルLLMもそれなりに頑張ります(deepseek-r1:8bの推論モードあたりから実用域に入ります)。このような処理はLLMならではということでしょう。

そして今日も書いておきましょう。

スキーマによる処理は、LLMの可能性を改めて感じさせてくれます。今後LLMは、あらゆるサービスのバックエンドとして利用されるようになるでしょう。コンピューターの時刻をサーバー問い合わせで設定しているように、Google Mapsがどこの画面にも貼り付けられているように、LLMに問い合わせて情報を得るサービスが、私たちの生活に入り込んでくることは間違いありません。

だからこそお願いしたい。OpenAIやGoogle、meta、DeepSeek、NVIDIAは不正から離れていただきたい。より公正であってほしい。私はフェアユースや著作権法30-4による資料の利用を否定しません。しかし、不正にコピーされた資料や、性的加害を含む資料を用いたソフトウェア開発はやめていただきたい。もうやめたのなら、そう宣言してほしい。もはや海賊版に頼らなくてもいいはずだ。生成物が著作権を侵害しかねない時には警告していただきたいし(今のモデルなら可能でしょう?)、モデルの生成に用いた資料の検索や、調査を受け入れる体制も確立していただきたい。機会が失われていく職業への目配せやライセンスにも積極的に取り組んでいただきたい。今ならできるはずです。膨大な資本をほんの少し振り向けるだけでいいんですから。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?