UniDic ユーザー向け辞書生成

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

ベースになる NEologd 辞書の準備

NEologd 辞書ファイルをダウンロード

In this section, we always work in the docker container we have just created.

WORKDIR=/path/to/your/work/dir
cd $WORKDIR # move to the working directory
git clone --depth 1 https://github.com/neologd/mecab-unidic-neologd/

NEologd 辞書ファイルの抽出と、パッチによる微修正

次に unxz コマンドで、NEologd の単語リスト(CSVファイル)を抽出します。

# if your system has the unxz command
unxz -k `ls mecab-unidic-neologd/seed/*.xz | tail -n 1`
# otherwise
docker run -v $(pwd):/root/workspace tdmelodic:latest \
    unxz -k `ls mecab-unidic-neologd/seed/*.xz | tail -n 1`

これにより、mecab-unidic-user-dict-seed.yyyymmdd.csv といったファイル名の CSV ファイルが生成されます。次に、ここで抽出した CSV ファイルにパッチを当てます。これにより /tmp ディレクトリ配下に neologd_modified.csv というファイルが作られます。

docker run -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-neologd-patch \
    --input `ls mecab-unidic-neologd/seed/mecab-unidic-user-dict-seed*.csv | tail -n 1` \
    --output /tmp/neologd_modified.csv

推論

注意:この処理はかなりの時間がかかります!(参考までに、筆者の MacBookPro では2時間半、Linux サーバーでは5時間かかりました。)

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

docker run -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-convert \
    --input /tmp/neologd_modified.csv \
    --output ${WORKDIR}/tdmelodic_original.csv
cp ${WORKDIR}/tdmelodic_original.csv ${WORKDIR}/tdmelodic.csv # backup

後処理

以下のスクリプトにより、単語生起確率(条件付確率場におけるユニグラム・コスト)の微修正などの後処理を行います。

cp ${WORKDIR}/tdmelodic.csv ${WORKDIR}/tdmelodic.csv.bak
docker run -v $(pwd):/root/workspace tdmelodic:latest \
    tdmelodic-modify-unigram-cost \
    -i tdmelodic.csv.bak \
    -o tdmelodic.csv