IPADIC ユーザー向け辞書生成

注意:この作業は数時間から数日かかる可能性があります。

ベースになる辞書の準備

IPADIC のダウンロード

はじめに、https://taku910.github.io/mecab からIPADICをダウンロードしてください。

WORKDIR=/path/to/your/work/dir
cd $WORKDIR # move to the working directory
cp /path/to/your/download/dir/mecab-ipadic-2.7.0-XXXX.tar.gz $WORKDIR
tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz

ダウンロードした圧縮ファイルを展開して得られたディレクトリの中を ls などのコマンドで見てみると、多数の CSV ファイルと設定ファイルがあるのが確認できます。これらの辞書ファイルの文字コードは EUC-JP になっていますが、これを以下のコマンドにより UTF-8 に変換します。もし nkf コマンドがある場合は以下のコマンドを実行してください。

find ./mecab-ipadic-2.7.0-* -type f -name "*.csv" | xargs -I{} nkf -w --overwrite {}

もし nkf がない場合は Docker を使って以下のようなコマンドで変換できます。

docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
    find ./mecab-ipadic-2.7.0-* -type f -name "*.csv" | xargs -I{} nkf -w --overwrite {}

NEologd のダウンロード

同様に、NEologdの辞書ファイルをダウンロードしてください。

cd $WORKDIR # move to the working directory
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd/

次に unxz コマンドで、NEologd の単語リスト(CSVファイル)を抽出します。もし unxz コマンドがインストールされている場合は以下のようなコマンドを実行してください。

find ./mecab-ipadic-neologd/seed/ -type f -name "*.xz" | xargs -I{} unxz -k {}

unxzがない場合は、dockerを使用して以下のコマンドで同様のことができます。

find ./mecab-ipadic-neologd/seed/ -type f -name "*.xz" | xargs -I{} \
   docker run --rm -v $(pwd):/root/workspace tdmelodic:latest unxz -k {}

この処理により、多数のCSVファイルが ./mecab-ipadic-neologd/seed/ 配下に生成されます。

推論

注意: この処理はかなりの時間がかかります!

では、アクセント辞書を生成しましょう。ここでは、NEologd の辞書ファイルに掲載されている全ての単語について、機械学習ベースの手法により、アクセント情報を推定します。以下のコマンドにより、各単語にアクセント情報を付与した新しい辞書が生成されます。

IPADIC

find ./mecab-ipadic-2.7.0-*/ -type f -name "*.csv" | xargs -I{} \
    docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
        tdmelodic-convert -m ipadic --input {} --output {}.accent

もしくは、以下のコマンドでも同様に辞書を生成できます。

cat ./mecab-ipadic-2.7.0-*/*.csv > ipadic_all.csv
docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-convert -m ipadic \
        --input ipadic_all.csv \
        --output ipadic_all.csv.accent

NEologd

まず、もし必要であれば以下のコマンドで前処理を行ってください。(-h により前処理のオプションを表示できます。)

find ./mecab-ipadic-neologd/seed/ -type f -name "*.csv" | xargs -I{} \
    docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
        tdmelodic-neologd-preprocess -m ipadic --input {} --output {}.preprocessed

次に、以下のコマンドによりアクセントを推定します。

find ./mecab-ipadic-neologd/seed/ -type f -name "*.csv" | xargs -I{} \
    docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
        tdmelodic-convert -m ipadic --input {}.preprocessed --output {}.accent

以上の作業により、アクセント情報が付与された辞書ファイル *.csv.accent が得られます。

もしくは、以下のようなコマンドでも辞書ファイルが得られます。

cat ./mecab-ipadic-neologd/seed/*.csv > neologd_all.csv

docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-neologd-preprocess -m ipadic \
        --input neologd_all.csv \
        --output neologd_all.csv.preprocessed

docker run --rm -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-convert -m ipadic \
        --input neologd_all.csv.preprocessed \
        --output neologd_all.csv.accent