2023年のPythonアドカレ12/23ぶんです。
初Qiita記事&初アドカレなので、お見苦しい点ありましたらすみません
修正すべき点がありましたらご連絡ください。よろしくお願いいたします。
はじめに
WindowsにてPython/mecab-python3を使っており、そこでNEologd辞書をインストールして使おうとしたところ、インストールでmecab-configが見つからなくて詰んでしまいました(調べてみるとわりとよくある事象のようで…)。
あれこれもがいてみた結果、WLS(Windows10以上の環境上でLinuxを動作させる環境のこと。Windows Subsystem for Linux)を使ってみたらうまくいきました。
WSLの案内は、NEologd辞書の公式READMEにリンクがはられています。このおかげでこの解法を知ることができました。公式さんに感謝です。
以下、具体的にやってみた忘備録です。WindowsのPythonでテキストマイニングをやりたいどなたかのお役に立てれば。
やりかた紹介
Windows環境にWSLを構築し、LinuxにインストールしたmecabとNEologd辞書をWindowsに入れたPythonから使う方法
1. WSLのインストール
-
NEologd辞書のREADME
の「Windows 10 バージョン1607以降の場合」の、Bash on Ubuntu on Windows(beta)をインストールする。 -
PowerShellかコマンドプロンプトを管理者権限で立ち上げ、以下を実行
wsl --install
- 再起動の指示が出たら、以下を入力して実行。これは、Windowsをシャットダウンして自動的に再起動するためのコマンド。
shutdown /r
- Windowsが再起動すると、Ubuntuも自動的に起動する。それまでお茶でも淹れてじっと待つ。
- 起動したら、ここ を参考に、
Linuxのユーザ名とパスワードを設定する。
usernameとpasswordは、忘れないようどこかに情報を控えておく。
2. WSLへのmecabとNEologd辞書のインストール
- 再起動後にたちあがったUbuntuで以下を実行する(先頭の$は除く)
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get install make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file
$ sudo sed -i -e 's%/lib/mecab/dic%/share/mecab/dic%' /usr/bin/mecab-config
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n
- 完了までかなり時間がかかるので、お茶のお代わりを淹れてさらに待つ。
- しばらくすると、Do you want to install mecab-ipadic-NEologd? Type yes or no. と尋ねられるので、yesと入力する。
- インストールが完了し、NEologd辞書のパスが例えば以下のように示される。
Usage:
$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd ...
このパスは後で使うので、どこかに情報を控えておく。
- NEologd辞書が使えるかどうかを、mecabでNEologd辞書を指定してテストする。(-d 以下は自分の環境に置き換える)
$ echo "テスト" | mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd
- 形態素解析の結果が表示されればOK。
3. Windowsへのmecab-python3のインストール
$ cd ~
$ pip install mecab-python3
- pip..をしたらCommand 'pip' not found, but can be installed with:sudo apt install python3-pip と言われる場合は、以下を実行する。
$ sudo apt install python3-pip
- 途中でpassword(Windows PCにログインする時に使ってるパスワード)とY or N を尋ねられるのでY を入力する。
4. NEologd辞書を、mecab-python3で辞書指定して使う
- さっき保存したパス(例:/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd)を指定するのでは使えない(このパスはLinux上のものなので、WindowsのPythonからは参照できない)。
なので、WindowsからLinuxに入り、Linux上にある辞書までのパスを辿り、そのパスをコピーして使う必要がある。以下、やりかた。 - (やりかた)Windowsの検索窓に
\\wsl$
と入力し、Linuxシステムにアクセスする。
エクスプローラが開くので、さっき保存したパスを参考にしながらUbuntu内のmecab-ipadic-neologdフォルダまで行き、そこまでのパスをコピーする。パスは例えば以下のような感じになる。
\\wsl.localhost\Ubuntu\usr\lib\x86_64-linux-gnu\mecab\dic\mecab-ipadic-neologd
- このパスを、PythonのmecabでNEologd辞書を指定する際に使う。Pythonコードは例えば以下のようになる(-d 以降が辞書指定のためのパス)。
なお、もともとのパスのバックスラッシュは普通のスラッシュに修正すること(手入力でやればOK)。
import MeCab
mecab = MeCab.Tagger('-d //wsl.localhost/Ubuntu/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd')
result = mecab.parse("鬼滅の刃のコラボカフェはインスタ映えした。")
print(result)
- 「鬼滅の刃」や「コラボカフェ」「インスタ映え」などが分解されずに1つの複合語として出てきたでしょうか。mecabデフォルトの辞書での解析結果と比べてみましょう。
以上で、mecabとNEologd辞書をWSLにインストールし、それをWindowsに入れたPythonで使うことができました。
最後に、この記事のPythonは、Spyderから使うことを想定しています。Jupyter環境の場合はPythonのコードが少し変わると思いますので、適宜書き換えてください。それでは、よいテキストマイニングライフを。