# Windows環境上のAnacondaにMecabのユーザー辞書とNEologd辞書のインストール | LittleVoice-g-string

LittleVoice-g-string

苦しむために生きないであなた自身を愛してくれ

Windows環境上のAnacondaにMecabのユーザー辞書とNEologd辞書のインストール

本記事では、MeCabとは、公式サイトからダウンロードしてきたMeCabのことを言う、Anaconda上のMeCabはAnaconda上でダウンロードしてきたMeCabを指します。

1)ネット上色々記事を参考してましたが、ほぼBoW環境をもとに紹介されています。
2)Windows環境+Anaconda(Python3.7)上では、下記記事の記載されている通り実行したらうまく行けましたので、メモとして残したいと思います。

WindowsでMeCab+NEologdをインストールする



1.MeCabをインストールする

1)Jupyter上でpip install mecab-python3ではなく、公式サイトからMeCabをダウンロード、インストールすることです。
2)公式サイト:Mecab/download
3)自分はBinary package for MS-Windowsをダウンロードしております。

4)インストーラの案内通りでインストールを行えばいいですが、辞書の文字コードの選び(自分はutf-8)とインストーラ先の指定(自分はC:\Program Files (x86)\MeCab)は後ほど参考になるので、一旦覚えといたほうがいいと思います。
5)インストールしたら、C:\Program Files (x86)\MeCab\dic\ipadicにchar.bin、dicrc、matrix.bin、sys.dic、unk.dicというファイルが有れば問題がないかと思います。

2.環境変数のPATHに追加

C:\Program Files (x86)\MeCab\binを環境変数のPATHに追加します。

3.Anaconda jupyter上のmecabをインストールする

以下いくつかの方法どれでも行けると思います。

pip install mecab
pip install mecab-python-windows(python3.7&以前のバージョン)
pip install mecab-python3(python3.8のバージョン)

4.libmecab.dll(必須ではないかも)

1)MeCabのインストール先のlibmecab.dll(自分はC:\Program Files (x86)\MeCab\bin\libmecab.dll)を(Anacondaのインストール先)/Lib/site-packages(自分のはD:\anaconda\envs\mecab\Lib\site-packages)にコピーする
2)ただ偶然にsite-packages内のlibmecab.dllを削除したとしても、特にエラー生じてなかったので、このステップいらないかもしれないですね。

5.NEologd辞書の登録

A.NEologdのダウンロード

1)NEologd
2)ダウンロードできたNEologdに(\mecab-ipadic-neologd\seed)いくつかのcsv圧縮ファイルがあります。
3)csvの圧縮ファイルを解凍します。

csvファイルの解凍は色々方法がありますが、自分は以下の方法で行いました。

import lzma
import shutil
import os

files = []
for root,dirs,file in os.walk(r'〇〇\MeCab\mecab-ipadic-neologd\seed'): #csv.xz所在しているファイルのディレクトリ
    files.append(file)
for i in files[0]:
input_file = './mecab-ipadic-neologd/seed/'+i
destination_dir = 'C:/Users/jorey/python/'
with lzma.open(input_file,'rb') as readfile:
    with open(destination_dir+i.split('.xz')[0],'wb') as writefile:
        data = readfile.read()
        while data:
            writefile.write(data)
            data = readfile.read()

B.NEologd辞書の登録

1)Anaconda Promptを開き、>activate mecab(mecabはAnaconda上で使用している環境の名前です。)を打って、Anaconda環境に入る
2)csvファイル所在しているフォルダに移動(自分のはC:\Users\〇〇Desktop\MeCab\dic\mecab-ipadic-neologd\seedです)
3)以下のコードを打つと、csvファイルをdic辞書に作成する

1_:C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exeはdic辞書を作成するためのtool
2_:C:\Program Files (x86)\MeCab\dic\ipadicはMecab上インストールしたらデフォルトあるファルダ
3_:〇〇.dic 〇〇.csvはどういうcsvファイルをdic辞書に作成するかを指定する
4_:-f utf-8 はcsvファイルの文字コード (NEologd辞書のcsvを解凍したらutf-8になるので、ここもutf-8に指定しました)
5_:-t utf-8 は辞書ファイルの文字コード(Mecabインストールするとき自分はutf-8を選んだので、ここutf-8に指定しました)
6_:簡単にまとめていうと、【mecab-dict-index -f <csvファイルの文字コード> -t <辞書ファイルの文字コード>】のイメージですね

"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d “C:\Program Files (x86)\MeCab\dic\ipadic” -u 〇〇.dic -f utf-8 -t utf-8 〇〇.csv

4)C:\Program Files (x86)\MeCab\dicの下にNEologdのフォルダを作成する。
上記作成できた〇〇.dic辞書(例:mecab-user-dict-seed.20200910.dic)をC:\Program Files (x86)\MeCab\dic\NEologdに入れる。

C.mecabrcを修正

1)C:\Program Files (x86)\MeCab\etc内のmecabrcを開き、以下2行を追加します。(;と空白なし)
2)デフォルトのあるdicdirとuserdicの2行を消すか、行頭に;を消せればいいと思います。
3)userdic複数追加したい場合、’,’を使って複数追加すれば大丈夫です。

; dicdir =  $(rcpath)\..\dic\ipadic
; userdic = /home/foo/bar/user.dic
dicdir = C:\Program Files (x86)\MeCab\dic\ipadic 
userdic = C:\Program Files (x86)\MeCab\dic\NEologd\mecab-user-dict-seed.20200910.dic #生成したdicファイルのディレクトリ
#複数追加したい場合
userdic = C:\Program Files (x86)\MeCab\dic\NEologd\mecab-user-dict-seed.20200910.dic,C:\Program Files (x86)\MeCab\dic\NEologd\neologd-adjective-exp-dict-seed.20151126.dic

D.AnacondaでJupyter Notebookを開き、確認

MeCab.Tagger()に”-r C:\Program Files (x86)\MeCab\etc\mecabrc”そのまま入力したら機能しません。

①\はエスケープ文字に認識されてしまうらしいので、\を/または\\に変更する必要あります。
②MeCabはディレクトリ内空白が入ってしまうと認識しません.Program Files (x86)Ni空白入ってしまってるので、ここmecabrcをdesktopに移動したら、機能しました。

import MeCab
tagger = MeCab.Tagger('-r C:/Users/jorey/Desktop/mecabrc')
print(tagger.parse('中島裕翔'))
##中島裕翔    名詞,固有名詞,人名,一般,*,*,中島裕翔,ナカジマユウト,ナカジマユウト
EOS

6.ユーザー辞書の登録

A.ユーザー辞書の作成

ユーザー辞書の作成に関しては、こちらの記事では細かく記載しましたので、結構参考になりました。

エントリのフォーマット (活用しない語)
Windows環境でMeCabのユーザ辞書に単語を追加する

表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
#自分の:
何度も,*,*,20,名詞,固有名詞,名詞,*,*,*,何度も,ナンドモ,ナンドモ
風息,*,*,20,名詞,固有名詞,人名,一般,*,*,風息,フーシー,フーシー

保存するとき、文字コードの選びは後ほどdict作成するとき必要があるので、メモしといたほうがいいと思います。

B.ユーザー辞書csvからユーザー辞書dicに作成する

やり方は5.NEologd辞書の登録>B.NEologd辞書の登録と一緒です。

"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d “C:\Program Files (x86)\MeCab\dic\ipadic” -u foo.dic -f utf-8 -t utf-8 foo.csv

C.mecabrcにパス追加

やり方は5.NEologd辞書の登録>C.mecabrcを修正と一緒です。

; dicdir =  $(rcpath)\..\dic\ipadic
; userdic = /home/foo/bar/user.dic

dicdir = C:\Program Files (x86)\MeCab\dic\ipadic-utf8
userdic = C:\Program Files (x86)\MeCab\dic\NEologd\mecab-user-dict-seed.20200910.dic,C:\Program Files (x86)\MeCab\dic\userdic\foo.dic

7.Anacondaで確認

こうしてAnaconda上でも登録したNEologd辞書とユーザー辞書が反映されたと確認できました。
こちらを用いて、色々の自然言語処理にて活用したいと思います。

Welcome to my other publishing channels