LoginSignup
3
3

More than 3 years have passed since last update.

Windows10 64bit環境で最近の単語を含む文章を形態素解析する

Last updated at Posted at 2019-11-01

問題

Windows10 64bit環境のPythonでMeCabを使おうとする際、
主に下記の5点で躓いて画面を割りたい気持ちでいっぱいになったので体系的にまとめました。

問題1:pip installのみではMeCabが入らない
問題2:インストールできたものの形態素解析がうまくいかない
問題3:NEologd辞書を用いることで固有表現の抽出が上手くいくらしいが
    Windows環境ではインストールが難しい
問題4:インストールしようとするとPATHを通すのだがPATHの概念がよくわからない
問題5:DOSコマンドが通らない

目次

①64bit向けの非公式版の.exeからMeCabをインストール
②PythonでMeCabを扱うためのライブラリをインストール
③形態素解析をより精緻に行うために
 NEologdをgitからクローンしてコマンドプロンプトからコンパイル
※参考記事は各項にて記載

①64bit向けの非公式版の.exeからMeCabをインストール

参考:https://qiita.com/wanko5296/items/eeb7865ee71a7b9f1a3a

公式では32bit版しかサポートされていないので、
有志でビルドされている64bit版をインストールする方がbetter。

実行ファイルは下記のgitで公開されている。
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996

実行ファイルをインストールする際に文字コードを選択するのだが、
自分が形態素解析を行いたい対象のテキストファイルの文字コードに合わせて選択する。
こだわりが無いのであれば、UTF-8を選択する。
(※デフォルトはSHIFT-JIS)

②PythonでMeCabを扱うためのライブラリをインストール

参考:https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43

cmdやAnaconda promptで  

pip install sys
pip install MeCab

を実行。
上記の64-bit版MeCabをインストールしていれば上記のpipで通る。

jupyter notebookなどで


import MeCab

でインストールできているか検証。

エラーが発生しないようであればこの段階で形態素解析は可能な状態となっている。
試しにやってみたい方は、

import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("すもももももももものうち"))

と実行すると形態素解析ができているのが分かる。

ただ、最近の単語を含むワード(i.g. マイナンバー、欅坂46など)は
マイ/ナンバー、欅/坂/46のようになってしまう。

これを防ぐために、最近のKWリストを含むNEologd辞書をインストールすると良い。

③形態素解析をより精緻に行うためにNEologdをgitからクローンしてコマンドプロンプトからコンパイル

・準備編

参考:https://qiita.com/zincjp/items/c61c441426b9482b5a48
(基本的に上記の記事をPATHやDOSコマンドが分からない人向けに記載しました。)

必要なものとして64-bitのgitと7-zipをインストールしておく。
インストール方法に関してはここでは省略する。
・git
 参考:https://eng-entrance.com/git-install
・7-zip
 公式サイト:https://sevenzip.osdn.jp/

7-zipに環境変数を設定する必要がある。

C:\Program Files\7-Zip

さて、この環境変数というものを簡易的に紹介すると、
アプリケーションをcmdで簡易的に実行する設定のことで、PATHを通すとも言われる。

設定方法としてはコントロールパネル画面などで"環境変数"と検索すれば設定画面が出現する。
image.png

上記イメージの環境変数を編集を選択するとこのような画面になる。
image.png
青塗のPathという部分を選択して編集>新規
7-zipのインストール先である下記を追加してOKを選択。
再掲になるが、インストール先は人によって異なり、デフォルトでは下記の通り。

C:\Program Files\7-Zip

これでいわゆるPATHが通った状態となる。

ここからNEologd辞書をインストールしていく。

・NEologd辞書をインストール&コンパイル

管理者権限でコマンドプロンプトを立ち上げ

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

必要な辞書ファイルなどをダウンロード。
続いてダウンロードしたファイルのディレクトリに移動し、dirでダウンロードされているか確認する。
dir実行時にneologd~系のファイルが目視できれば問題ない。
seedフォルダが見当たらずエラーが出る場合は、
C:\Users(ユーザー名)\mecab-ipadic-neologd\seedから記載すればディレクトリに移動する。

cd mecab-ipadic-neologd\seed
dir

ちなみにmecab-ipadic-neologd\seedというディレクトリを読みに行くという意。

7-zipによる解凍が必要なので
下記コマンドを実行。
.xzファイルを7-zipで解答するの意。

7z X *.xz

続いて下記コマンドで辞書をコンパイルする。(MeCabで読める辞書形式に変える)
ただし、注意点がある。

①NEologdは日々更新されているので、以降の20191024はすべて実際に
 自分がクローンした際にDLしたファイル名についている日付を選択する

②C:\Program Files\MeCab\bin\mecab-dict-indexは自分のMeCabのインストール先に合わせる
③本稿のmecabのインストール方法ではUTF-8を選択していたが、
 SHIFT-JIS環境でインストールしている場合は”-t utf-8”を”-t shift-jis”に変更する

"C:\Program Files\MeCab\bin\mecab-dict-index" -d "C:\Program Files\MeCab\dic\ipadic" -u NEologd.20191024.dic -f utf-8 -t utf-8 mecab-user-dict-seed.20191024.csv

mkdir "C:\Program Files\MeCab\dic\NEologd"

move NEologd.20191024.dic "C:\Program Files\MeCab\dic\NEologd"

ちなみに、意味としては
C:\Program Files\MeCab\binにあるmecab-dict-index.exeを実行し、
cdの移動先である現在のディレクトリに存在する
mecab-user-dict-seed.20191024.csvをUTF-8形式で
NEologd.20191024.dicという名前でコンパイルする。
その後、C:\Program Files\MeCab\dicの中に、NEologdを作成し、その中にコンパイルしたものを移動する。

ここまでくれば、あとはもうほぼ終わりで
C:\Program Files\MeCab\etcに存在しているmecabrcをメモ帳で開いて
userdic =の部分をC:\Program Files\MeCab\dic\NEologd\Neologd.20191024.dic
に変更して上書き保存する。
権限によっては上書き保存できない場合もあるので、
別フォルダに一旦mecabrcを保存して元のところに保存すればよい。
その際に.txtを消すのを忘れずに。

実際にNEologdが適用されているか確認するには、jupyterなどで実際に形態素解析をした際に、
固有名詞として欅坂46が名詞認識されていればよい。

import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("欅坂46が赤いきつねを食べている。"))

おわり

より形態素解析の精度をあげていくためには、
一般的に公開されている日本語のストップワードリストを読み込んだり、
読み込む対象に特有の単語を地道にユーザー辞書として設定したり、
不要なものは地道にNGしていくことで精度があがっていくはずである。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3