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
を確認します.
例えば次のように記載されているはずです:
;; -*- 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
すると,
を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での日本語入力を快適にするために辞書を拡張する方法について紹介しました.
ネット上でもなかなか解説を見つけにくい内容なので,同様の課題に面した方の助けになれば幸いです.
Discussion