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