💡

WSLのUbuntuにMeCabをインストールする

2024/03/02に公開

こんにちは、$@(ダラ~っと)です(๑Ò﹃ Ó๑)ゝ

はじめに

WSLのUbuntuに形態素解析のMeCabをインストールした時のメモです。

何がわかる?

  • MeCabのインストール方法
  • mecab-ipadic-neologdのインストール
  • カスタム辞書登録

環境

  • windows 11 Pro
  • WSL:Ubuntu 22.04.2 LTS

MeCabのインストール

下記を実行して、MeCabをインストールします。

sudo apt update
sudo apt install -y mecab libmecab-dev mecab-ipadic-utf8

インストール後の確認。MeCabを起動して文字を入力してEnterキーを押下する。

$ mecab
今日はいい天気

こんな感じの結果が出てきたらOK

今日    名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
いい    形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
EOS

Ctrl + Cで抜けましょう。

mecab-ipadic-neologdのインストール

次に、システム辞書のmecab-ipadic-neologdをインストールしていきます。
mecab-ipadic-neologdは、Web上の新語を追加したMeCab用のシステム辞書です。

任意のディレクトリに移動して、下記を実行する。

git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
sudo bin/install-mecab-ipadic-neologd

/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologdにインストールされます。
ipadicの場所と異なるため、シンボリックリンクを貼っておく。

sudo ln -s /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /var/lib/mecab/dic

MeCabの辞書をmecab-ipadic-neologdに変更します。
MeCabの設定ファイルは、/etc/mecabrcにあります。

sudo vi /etc/mecabrc

dicdirを変更する。

; dicdir = /var/lib/mecab/dic/debian
dicdir = /var/lib/mecab/dic/mecab-ipadic-neologd

カスタム辞書登録

下記の手順で、MeCabのカスタム辞書を作成して使用するように設定します。

流れ

  1. CSVファイルにMeCabのフォーマットで用語を追加する
    • 単語の追加方法
      • エントリのフォーマット (活用しない語)
      • エントリのフォーマット (活用する語)
  2. CSVファイルをコンパイルして、dicファイルを作成する(コマンド)
  3. dicファイルのパスをMeCabの設定ファイル(/etc/mecabrc)のuserdicに設定する。

詳細

1. CSVファイルにMeCabのフォーマットで用語を追加する

CSVファイルの作成場所は、任意のディレクトリでOK。
ただし、後続手順でパスを登録するため、分かりやすい場所の方が良い。

辞書のフォーマットは、単語の追加方法の下記項目を参照

  • エントリのフォーマット (活用しない語)
  • エントリのフォーマット (活用する語)

フォーマット

表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
  • 左文脈IDと右文脈ID:その単語を左or右から見たときの内部状態IDです。空にしておくと mecab-dict-index が自動的に ID を付与してくれます。
  • コスト:数値が小さいほど、優先して使用する。

例えば、下記のような感じ。
(金だけだと、人名のキムさんが優先的に使用されるため、キンとして登録する←子供の勉強用にマイクラの用語をカタカナのみに変換した時に知った教訓)

金,,,10,名詞,一般,*,*,*,*,金,キン,キン

2. CSVファイルをコンパイルして、dicファイルを作成する(コマンド)

下記のコマンドで、カスタム辞書のコンパイルする

  • カレントディレクトリを、CSVファイルのディレクトリに変更しておく
  • mecab_custom_file_nameには、上記で作成したCSVファイルの拡張子なしのファイル名に書き換えて実行する
mecab_custom_file_name="custom"
/usr/lib/mecab/mecab-dict-index -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/ -u ${mecab_custom_file_name}.dic -f utf-8 -t utf-8 ${mecab_custom_file_name}.csv
  • -d システム辞書があるディレクトリを指定する
  • -u カスタム辞書のdicファイルを作成する
  • -f charset: CSVの文字コード
  • -t charset: バイナリ辞書の文字コード

カレントディレクトリ直下に、dicファイルが出来ていることを確認する。

3. dicファイルのパスをMeCabの設定ファイル(/etc/mecabrc)のuserdicに設定する。

MeCabの設定ファイルにカスタム辞書を設定する。

sudo vi /etc/mecabrc

userdicを上記2で生成したdicファイルパスに変更する。

userdic = /home/spluslat/mecab/custom.dic

おわりに

これで、カスタム辞書を使用したMeCabが使えるようになりました。
子供がマインクラフトにハマっているので、お勉強も兼ねてすべてひらがな表示、カタカナ表示にするリソースパックを作成する時にMeCabを使用しました。
形態素解析が簡単に使えてとても便利でしたが、カスタム辞書登録に詰まって苦労しました。。。

Discussion