📖

UbuntuにSKK辞書をインポートして日本語入力を強化する【ステップバイステップ】

に公開

はじめに

Ubuntuは無料で使えるOSであり,プログラム開発には便利なものですが,日本語入力(IME)に関してはMacやWindowsに大きく遅れを取っていると言わざるを得ません.
この記事では,SKK辞書をインポートしてユーザ辞書を拡張することで日本語の変換予測を改良する方法を紹介します.

テスト環境

この記事は2025年6月に以下の環境で実行した結果に基づいています:

  • デバイス: Lenovo Thinkbook 14 Gen 7 (CoreUltra5 125H)
  • OS: Ubuntu 24.04.2 LTS

SKK辞書とは

SKK辞書はかなを漢字に変換するSKKプログラム(Simple Kana to Kanji conversion program)で使われる変換辞書のことです.
シンプルなテキスト形式で記述されており,軽量でカスタマイズ性が高いことが特徴です.
https://skk-dev.github.io/dict/ で色々な辞書が公開されているので,ダウンロードしてシステムにインポートすることで,変換機能を拡張することができます.

導入手順

ダウンロード

SKK辞書のページにアクセスします.
サイズや内容でさまざまな辞書が用意されているので,所望のものを選択してgzファイルをダウンロードします.
ここでは,SKK-JISYO.L.unannotated.gzを例に取ります.
gzファイルのあるディレクトリに移動して,ターミナルで以下を実行してファイルを解凍します:

gunzip SKK-JISYO.L.unannotated.gz

インポートファイルの作成

辞書をシステムに読み込むためにインポートファイルを準備します.
日本語(Mozc)のシステムには,読み,単語,品詞がタブ区切りで記載されたファイルをインポートすることができます.

まず,解凍したファイルSKK-JISYO.L.unannotatedを確認します.
例えば次のように記載されているはずです:

SKK-JISYO.L.unannotated
;; -*- text -*-
;; SKK-JISYO.L.unannotated was generated automatically by unannotation.awk at Sun Jan 14 18:50:34 2024
;; -*- mode: fundamental; coding: euc-jp -*-
;; Large size dictionary for SKK system
;; Copyright (C) 1988-1995, 1997, 1999-2014

coding: euc-jpとあるようにEUC-JPでコーディングされているので,UTF-8に変換します.
ターミナルで以下を実行します:

iconv -f EUC-JP -t UTF-8 SKK-JISYO.L.unannotated > SKK-JISYO.L.unannotated.utf8

これでUTF-8でコーディングされたSKK-JISYO.L.unannotated.utf8というファイルが手に入りました.
このファイルの内容を所望の形式のテキストファイルに変換すればOKです.

注意点1

素朴な処理として以下のようなものを考えます:

awk 'BEGIN {FS = "/"}
     /^;/ {next}
     {
         yomi = $1
         for (i = 2; i <= NF; i++) {
             if ($i != "") {
                 print yomi "\t" $i "\t名詞"
             }
         }
     }' SKK-JISYO.L.unannotated.utf8 > mozc_dict.txt

すると,

mozc_dict.txt
をs 	惜	名詞
ゐr 	居	名詞
われらg 	我等	名詞
われしr 	我知	名詞

のようなファイルが得られます.
しかし,読みにひらがな以外を含んだ行はMozcのシステムに読み込まれません(しかも,辞書ファイルの大部分はこのような形式のエントリです).
従って,アルファベットを取り除く処理が必要になります.

注意点2

SKK辞書には

#か /#3日/#3価/#0日/#1日/#2日/#1価/#0価/#2価/#3顆/#1顆/#0顆/#2顆/#3架/#1架/#0架/#2架/#3荷/#1荷/#0荷/#2荷/

のような,数字の直後に変換される語句を定義するエントリがあります.
このようなエントリをそのまま処理すると,#3日のような単語が登録されてしまいます.

この問題を回避するために,#で始まる行については特別な取り扱いが必要です.

適切な処理方法

上記の注意点を考慮したコマンドが以下になります:

awk 'BEGIN {
    FS = "/"
    PROCINFO["RS"] = "\n"
}
/^;/ { next }  # コメント行をスキップ

{
    yomi = $1
    gsub(/[^ぁ-んー]/, "", yomi)  # 読みをひらがなのみに限定

    if (length(yomi) > 0) {
        for (i = 2; i <= NF; i++) {
            word = $i

            # ★「# で始まる行」なら、その候補から #数字 または # を削除
            if ($0 ~ /^#/) {
                gsub(/^#[0-9]+/, "", word)
                gsub(/^#/, "", word)
            }

            if (word != "") {
                print yomi "\t" word "\t名詞"
            }
        }
    }
}' SKK-JISYO.L.unannotated.utf8 > mozc_clean.txt

このコマンドで作成したファイルを使用することで,#を含んだエントリも適切に扱うことが可能になります[1][2]

awkのエンコードの問題により,変換後のファイルに文字化けが含まれている場合があります.
解決方法として,gawkを使う方法があります.

which gawkを実行してシステムにgawkがあるか確認します.
何も表示されない場合は,未インストールです.
その場合は,

sudo apt update
sudo apt install gawk

を実行して,インストールします.
gawkの準備ができたら,次を実行することで文字化けを回避してテキストファイルを作成できます:

gawk 'BEGIN {
   FS = "/"
   PROCINFO["RS"] = "\n"
}
/^;/ { next }  # コメント行をスキップ

{
   yomi = $1
   gsub(/[^ぁ-んー]/, "", yomi)  # 読みをひらがなのみに限定

   if (length(yomi) > 0) {
       for (i = 2; i <= NF; i++) {
           word = $i

           # ★「# で始まる行」なら、その候補から #数字 または # を削除
           if ($0 ~ /^#/) {
               gsub(/^#[0-9]+/, "", word)
               gsub(/^#/, "", word)
           }

           if (word != "") {
               print yomi "\t" word "\t名詞"
           }
       }
   }
}' SKK-JISYO.L.unannotated.utf8 > mozc_clean.txt

辞書データのインポート

作成したテキストファイルをMozcにインポートします.
ターミナルで

/usr/lib/mozc/mozc_tool --mode=dictionary_tool

を実行するか,GUIからMozcの設定アプリを起動辞書>ユーザー辞書の編集を選択して,辞書ツールを開きます.

GUIで操作する場合は下の画像を参考にしてください

開いた辞書ツールは次の画像のようになっています.

管理>新規辞書にインポートを選択します.
すると,ファイル辞書名フォーマットエンコードを入力する画面が開きます.

それぞれ以下のように設定します:

  • ファイル: 作成したテキストファイル
  • 辞書名: 自由に設定してください(例えば,SKK-JISYO.Lなどとします)
  • フォーマット: 自動判定またはGoogle
  • エンコード: 自動判定またはUTF-8

設定したら,インポートボタンをクリックします.
***エントリーをSKK-JISYO.Lにインポートしました。というメッセージが表示されれば成功です[3]
これでSKK辞書に含まれた単語の変換が可能になりました[4]

おわりに

この記事ではUbuntuでの日本語入力を快適にするために辞書を拡張する方法について紹介しました.
ネット上でもなかなか解説を見つけにくい内容なので,同様の課題に面した方の助けになれば幸いです.

脚注
  1. 簡単のため品詞は全て名詞としています.この部分はインポートのために必要ですが,辞書の挙動にはほとんど関係しないので実用上は気にする必要がありません. ↩︎

  2. 元のSKK辞書のエントリで想定されているような,数字後の変換はMozcに登録できないので留意してください. ↩︎

  3. 辞書ツールの画面上では一部の文字が文字化けして表示されることもありますが,インポートファイルが正しく準備できていれば入力は問題なくできます. ↩︎

  4. 例えば,私の環境では元々できなかったとつごう>突合という変換ができるようになりました. ↩︎

Discussion