【超簡単】WindowsのPythonとMeCabで形態素解析しようぜ!

当ページのリンクには広告が含まれています。

以前、こちらの記事でC#とMeCabを使った形態素解析の方法について紹介しました。

今回は、PythonとMeCabを使って形態素解析をする方法を解説します。

2022年5月時点において、本家のMeCabは32bit 版しかリリースされておらず、64bit版のPythonでは使うことが出来ません。

今回は、Windows10又は11 且つ Python 64bit版 環境で Mecab を動作させ、形態素解析と分かち書きが出来るまでの手順、ユーザー辞書の登録と利用方法について解説致します。

これからPythonでMeCabを利用されようとする方は、是非ご一読ください。

目次

Python64bit版でMecCab 64bit版を使うための手順

手順は次の通りです。

  • MeCab 64bit 版を入手
  • MeCab 64bit 版をインストール
  • mecab-python3をインストール
  • 辞書をインストール
  • 動作確認を行う

尚、MeCabのユーザー辞書を使ったり、コマンドプロンプトから直接MeCabを利用する場合は、MeCabのインストール先のbinフォルダをWindowsの環境変数に登録しておく方が便利です。

普通にインストールした場合は、下記にMeCabの実行ファイルが格納されていますので、これを環境変数に登録しておきましょう。

   C:\Program Files\MeCab\bin

MeCab 64bit 版を入手

インストーラーはこちらからダウンロードできます。

GitHub
Releases · ikegami-yukino/mecab This repository is for building Windows 64-bit MeCab binary and improving MeCab Python binding. - ikegami-yukino/mecab

2022年5月現在において、mecab-64-0.996.2.exe がダウンロードされます。

MeCab 64bit 版をインストール

インストーラを、ダブルクリックし、画面のメッセージに従ってインストールします。

この時、辞書の文字コード選択は「UTF-8」を選択しておくことがポイントです。

但し、Womdowsのコマンドプロンプト上で文字化けしますが、ここでは我慢しましょう。

もし、コマンドプロンプト上でしかMeCabを使わないのであれば、初期値(SHIFT-JIS)のままでも問題はありません。

mecab-python3をインストール

コマンドプロンプトを表示して、次のコマンドを実行します。

pip install mecab-python3

辞書をインストール

mecab-python3 のバージョンアップに伴い辞書ライブラリを個別にインストールしなければならないようです。

今回は、unidic という標準的な辞書をインストールしています。

pip install unidic

unidic には、小型軽量版の unidic-lite も存在するのですが、 軽量版は別の場所に辞書がインストールされるため、実行時にフォルダが見つからないとうエラーが発生します。

動作確認を行う

インストールが成功したら、Pythonを起動して次のプログラムを実行して下さい。

import MeCab
tagger = MeCab.Tagger()
result = tagger.parse('私が持っているクレジットカードはJCBとVISAです。')
print(result)

以下の様な結果が表示されればインストールは完了です。

MeCabの使い方

MeCabを使う場合、MeCabの import が必要ですので、下記1行を記述しておいてください。

MeCabで形態素解析を行う場合は、parse メソッド、もしくは parseToNode メソッドを使用します。

parseメソッド

parseメソッドは、形態素解析結果を1つの文字列として返します。  

解析結果は品詞ごとに改行コードで区切られているため、改行コードを使ってリストに分割することが可能です。

ただ、各情報はカンマ区切りなのに対して、品詞と種類の間はタブコード(\t) 区切りになっているため、分解する場合はそれも考慮する必要があります。

具体的には、正規表現モジュールを使って次の様に記述します。

Python Mecab の出力フォーマットを探したのですが、これと言ったものは見つかりませんでした。

公式ページにはコマンド実行時の出力フォーマットが掲載されていたので、Pythonの出力結果と対比しながら先頭の11項目について推測してみました。

 表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,原形発音,原型,表層形(別表現),表層形発音

項目名具体例1
(名詞)
具体例2
(名詞)
具体例3
(動詞)
具体例4
(動詞)
具体例5
(形容詞)
具体例6
(形容詞)
表層形渋谷データ働く図っ綺麗明るく
品詞名詞名詞動詞動詞形状詞形容詞
品詞細分類1固有名詞普通名詞一般一般一般一般
品詞細分類2地域一般
品詞細分類3一般
活用型五段-カ行五段-ラ行形容詞
活用形連体形-一般連用形-促音便連用形-一般
原形発音シブヤデータハタラクハカルキレイアカルイ
原形シブヤデータ働く図る奇麗明るい
表層形(別表現)渋谷-data働く図っ奇麗明るく
表層形発音シブヤデータハタラクハカッキレーアカルク

分かち書き

形態素解析結果を自然言語処理で利用する場合、分かち書きしたものを使うことが良くあります。

分かち書きは、それぞれの品詞の間に半角空白を挿入したもので、以下の形式になります。

分かち書きの結果が必要な場合は、Tagger メソッドの引数に '-Owakati' を指定するだけです。

parseToNode メソッド

先ほど、parseメソッドの結果に対して、改行、タブ、カンマを考慮しつつ分解する例を紹介しましたが、実はparseToNodeメソッドとループを組み合わせることで、簡単に分解することが可能です。

parseToNodeは、特定の種類の品詞のみを取り出したい場合に重宝します。

tagger.parseToNode メソッドで返されるオブジェクトのsurface プロパティには品詞が、feture プロパティには品詞の種類以降の情報が格納されています。

feture プロパティをカンマで分割すると、先頭の要素に品詞の種類が格納されているため、これを利用することで、例えば名詞だけを取り出す事が可能です。

ユーザー辞書について

MeCabにユーザー辞書を登録して使うことが可能です。

ユーザー辞書は単にテキストファイルを用意するだけではなく、バイナリ形式に変換して使いますので、ここではその方法と、作成済み辞書の指定方法について説明しておきます。

ユーザー辞書の使用方法

Tagger メソッドの引数にユーザー辞書を指定することで使用できるようになります。

MeCab.Tagger('-d システム辞書フォルダ, -u ユーザー辞書のフルパス')

例えば、MeCabのシステム辞書フォルダが 'C:/Program Files/MeCab/dic/ipadic' 、ユーザー辞書のフルパスが 'C:/Program Files/MeCab/dic/mydic/userdic.dic' の場合、次の様に記述します。

尚、Program Files の様にフォルダ名やフルパスに半角スペースが含まれている場合は、ダブルクォートで括らないとエラーになるのでご注意ください。

また、ちなみにパスの区切りはバックスラッシュではなく(\)、スラッシュ(/)を使わないとエラーになる場合があるのでご注意ください。

ユーザー辞書の作成方法

ユーザー辞書を作るには、次の手順が必要です。

  • CSV形式の辞書ファイルを作成する
  • mecab-dict-index.exe コマンドを使って辞書をバイナリ形式に変換する

ユーザー辞書は以下の様なフォーマットである必要があります。

詳細はこちらの公式ページにも記載されているので、併せてご参照下さい。

順番内容記述例説明
1表層形(形態素)似顔絵辞書に登録したい単語
2左文脈ID空白意味は不明だが、空白にすると自動連番される。
3右文脈ID空白意味は不明だが、空白にすると自動連番される。
4コスト10出現頻度を示す数値。
小さいほど出現頻度が高いとみなされる。
似たような単語が合った場合の優先順位として使われるようだが、
適当な値(10とか)で問題無し
5品詞名詞品詞で何か判定する必要があれば「動詞」「名詞」「形容詞」など。
特に必要なければ「名詞」でOK。
6品詞細分類1一般省略する場合は*を指定する。
7品詞細分類2省略する場合は*を指定する。
8品詞細分類3省略する場合は*を指定する。
9活用型省略する場合は*を指定する。
10活用形省略する場合は*を指定する。
11原形独自辞書何らかの文字を記述しておかないとエラーで辞書が作成できない
12読み空白省略する場合は空白にする
13発音空白省略する場合は空白にする

上記のルールでCSVを作成し、mecab-dict-index.exe を使ってバイナリ形式に変換します。

mecab-dict-index -d システム辞書フォルダ -u 辞書のフルパス -f utf-8 -t utf-8 CSVのフルパス

例えば、MeCabのシステム辞書フォルダが 'C:\Program Files\MeCab\dic\ipadic' で、Dドライブの直下にある mydic.csv を、システム辞書フォルダと同じ場所に mydic.dic という名前で作成する場合は次の様になります。

文字コードはUTF-8にしていますが、もしユーザー辞書のCSVをEXCELで作成する場合は必然的に shift-jis で保存されますので、 -f shift-jis と記述して下さい。

最後に、もしコマンドプロンプトでMeCabを利用する場合、C:\Program Files\MeCab\etc 直下にある mecabrc ファイルに対して、以下の要領でフルパスを指定すると、コマンドラインの MeCab でユーザー辞書が使えるようになります。

まとめ

今回は Windows上のPythonにおいて、64bit版のMecab を使うためのインストール方法と、MeCabを使った形態素解析の方法、ユーザー辞書の登録と使用について解説しました。

MeCabは形態素解析の老舗的存在であり様々な自然言語処理で利用されていますが、ネットにころがっているサンプルソースを実行してもMeCabがエラーとなり実行できないことがしばしばありました。

今回は、これらを整理する目的でAnaconda3-2021.11-Windows-x86_64.exe をゼロからインストールし、検証を行っています。

もし皆さんがMeCabのエラーに直面したら、この記事を思い出してもう一度チャレンジして頂ければと思います。

この記事が皆様のプログラミングのお役に立てれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次