はじめに
NEologdをwindowsに入れてPythonで動かすまでに時間がかかってしまったので備忘録です。
MeCabを導入してみたので、今回は辞書を入れて形態素解析の精度を上げてみたいと思います。
辞書データを入れることで分割されて、思うように認識されない単語も1単語として認識されるようになります。
NEologdとは
NEologdはMeCab用のシステム辞書です。
新しい単語や独自に認識させたい単語を登録することで形態素解析が可能となります。
まだ、MeCabを導入していない場合はこちらの記事から実装してみてください。
NEologdの導入手順
MeCabが動いたら次のステップを進めていきます。
NEologdのインストール
※ここではgitにあるmecab-user-dict-seed.20200910.csvというファイル取得が目的です。直接取得できれば次のステップに進んでください。
適当な作業ディレクトリに移動した後、以下のコマンドでgit cloneします。
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
git cloneができたら以下の階層を確認してください。
mecab-ipadic-neologd/seed/
seed配下のファイルを7zipを使って展開します。
私はコマンド打っても展開しなかったので、直接エクスプローラーから展開しました。
展開して、mecab-user-dict-seed.20200910.csvというファイルが見つかればOKです。
次はそのファイルがある階層に移動します。
cd ~\mecab-ipadic-neologd\seed
辞書のコンパイル
私はここの作業が全く進みませんでした。
mecab-dict-index.exeを使ってバイナリの辞書に変換します。
mecab-dict-index -d 辞書のフォルダ -u 辞書名 -f utf-8 -t utf-8 csv名
私の場合は以下のコマンドを実施しました。
mecab-dict-index -d "c:\Program Files\MeCab\dic\ipadic" -u NEologd.20200910-u.dic -f utf-8 -t utf-8 mecab-user-dict-seed.20200910.csv
うまくいくと画像のように 「 done! 」 と表示されます!
ファイルの移動
ここのステップは飛ばしてもらっても大丈夫です。
いろんなサイトを参考にしていた時に作業しただけです。
以下のコマンドでフォルダを作成し、辞書ファイルを移動させます。
mkdir "C:\Program Files\MeCab\dic\NEologd"
move NEologd.20200910-u.dic "C:\Program Files\MeCab\dic\NEologd"
mecabrcの編集
PythonでNEologdを使うためにファイルを変更します。
以下の配下に「mecabrc」というファイルがあると思います。
C:\Program Files\MeCab\etc
mecabrcファイルの以下のようになっている部分を、
; userdic = /home/foo/bar/user.dic
下記のように書き換えて保存します。
; userdic = C:\Program Files\MeCab\dic\NEologd\NEologd.20200910-u.dicc
これでNEologdの導入作業の完了です!
PythonでNEologdを動かしてみる
MeCab導入時に作成したmecab.pyに変更を加えます。
Taggerでパスを指定して形態素解析をするときに辞書を反映させます。
import MeCab
# mecab = MeCab.Tagger()
mecab = MeCab.Tagger(r'-d "C:\\Program Files\\MeCab\\dic\\ipadic" -u "C:\\Program Files\\MeCab\\dic\\NEologd\\NEologd.20200910-u.dic"')
str = '鬼滅の刃は週刊少年ジャンプの看板作品だったが、今では呪術廻戦が人気だ!'
print(mecab.parse(str))
strには適当な文章をいれて、実行すれば確認完了です。
制度を比較してみたらすごかった
NEologdを使った時の違いを比べてみようと思います。
こちらの文章で試してみます!
「鬼滅の刃は週刊少年ジャンプの看板作品だったが、今では呪術廻戦が人気だ!」
まずは辞書を使わない場合(前回の記事の状態)
なるほど、「鬼滅の刃」「呪術廻戦」が分解されてしまっています。
「週刊少年ジャンプ」も「週刊」「少年」「ジャンプ」ですね。
これは間違ってはいませんが注目部分です。
次にTaggerに辞書のパスを指定して、同じ文章を検証します。
すごい!!!
「鬼滅の刃」「呪術廻戦」「週刊少年ジャンプ」が分解されずに形態素解析されています!
NEologdを導入しただけで、ここまで変わるとは驚きですね。
一般的な文章でもそれなりに精度がいい印象でしたが、NEologdでさらに上がっています。
今回はNEologdをWindowsに入れてPythonで簡単に動作検証までしてみました。
参考になれば嬉しいです