Mecabとmecab-ipadic-NEologdで文章を意味のある言葉に分類する
ある文章を意味のある言葉まで自動的に分類する手法を形態素解析といいます。例えばTwitterの文章を形態素解析することで、どのような言葉が多用されているか解析することができます。このような、いわゆるエゴドキュメントを集計することで当時の世相を分析する手法としても活用されるようになりました。
今回はMeCabというオープンソースの形態素解析エンジンを使います。こちらに週2回以上更新更新され、新語・固有表現に強く、語彙数が多く、しかもオープンソース・ソフトウェアであるmecab-ipadic-NEologdをMeCab用の辞書として使います。
(1) 設定に必要な環境
MeCab本体
mecab-ipadic-NEologdのコンパイル環境(WSL2/Ubuntu Linux)
Pythonの実行環境
プログラムエディター
(2) MeCab本体
MeCab本体は以下のサイトからダウンロードします。今回ダウンロードするのは「Binary package for MS-Windows」にあります「mecab-0.996.exe」です。
ダウンロードしたmecab-0.996.exeをダブルクリックしてインストーラーを起動します。辞書の文字コードは「Shift-JIS」を選択してください。またインストール途中に出てくるウィンドウには「はい」を選択してください。
Windows内で後述のmecab-opadic-NEologdの辞書ファイルを作成すると、MeCabにそのほかの設定を行う必要がありますが、今回の環境設定ではMeCabの環境はこちらで終わりです。
(3) mecab-ipadic-NEologdのコンパイル環境(WSL2/Ubuntu Linux)
mecab-ipadic-NEologdを使うためにはcsvファイルをdictファイル(辞書ファイル)にコンパイルする必要があります。今回はWSL (Windows Subsystem for Linux) を使ってWindows上にLinuxを動作させ、こちらでdictファイルを作成します。
今回はWSL2を使用しますので、Windows10か11を使ってください。またWindows10の場合には最新状態でないとWSL2に対応していない可能性がありますのでWindows Updateを行ってください。
1. WSLの有効化
WindowsのWSLを有効にします。Windows + Rで「ファイル名を指定して実行」のウィンドウを表示し、optionalfeaturesと入力してOKボタンを押します。
立ち上がった画面の「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」にチェックを入れてOKボタンを押し、パソコンを再起動します。
2. Ubuntu Linuxのインストール
Microsoft Storeを立ち上げて、Ubuntuのキーワードで検索します。インストールしていない状態であれば「入手」となっていますので、これをクリックしてUbuntu Linuxをインストールします。
インストールが完了しましたら「開く」をクリックしてUbuntu Linuxしますとセットアップが開始します。Ubuntuのなかでユーザー名とパスワードを新たに設定する画面がありますので、こちらを適当に設定してください。Windowsと同じ内容にする必要はありません。
3. MeCabと必要パッケージのインストール
立ち上がったUbuntu LinuxにMeCabと関連するパッケージ合わせて8個を以下のコマンドを入力してインストールします。
sudo apt install mecab mecab-ipadic-utf8 libmecab-dev git make curl xz-utils file
4. mecab-ipadic-NEologdの取得とコンパイル
WindowsのCドライブ直下にmecabフォルダー、dicフォルダーを新しく作成します。その後にUbuntu Linuxでmecabフォルダに移動します。
cd /mnt/c/mecab
移動したフォルダでmecab-ipadic-NEologdをgitからクローンします。
sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
完了しますとmecabフォルダ内にmecab-ipadic-neologdフォルダが作られますのでフォルダ内に移動します。
cd mecab-ipadic-neologd
mecab-ipadic-NEologdをコンパイルします。コンパイルした辞書ファイルは
Ubuntu Linuxの「/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/」に生成されます。
sudo ./bin/install-mecab-ipadic-neologd -n
コンパイルされた辞書ファイルをCドライブのdicフォルダーにコピーします
cp /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/* /mnt/c/dic
(4) Python実行環境
Python言語で書かれたプログラムを動作するときに必要な環境です。
2022/10/13時点の最新版はv3.10.8です。自身はPython v3.9.8を使っています。
ダウンロードしたインストーラーをダブルクリックしてInstall Nowを押せば良いのですが、以下の部分だけチェックを入れて環境変数PATHを自動登録しておきます。
今回のプログラムでは以下のPythonライブラリーを追加で導入します。Python実行環境をインストールした後にコマンドプロンプトかWindows Power Shellから以下のコマンドを順番に実行してください。
pip install MeCab
(5) プログラム・エディター
プログラムの記述はメモ帳で行えますが、動作確認することを考えますとプログラム・エディターを使用した方が良いと思います。PythonであればPyScripter / Visual Studio / Visual Studio Code / Atomがあります。自身は使い慣れているPyScripterを使っています。
(6) MeCabとmeca-ipadic-Neologdの動作確認
簡単なPythonコードで動くかWindowsのPython環境で確認します。MeCab.Taggerの後に書かれているパスがmecab-ipadic-NEologdの辞書ファイルが置かれているパスです。tagger.parceに形態素解析したい文章を指定します。
import MeCab
import re
from pprint import pprint
tagger = MeCab.Tagger('-d C:\dic')
result = tagger.parse("高橋留美子さんの人気マンガ「うる星やつら」の完全新作となる\
テレビアニメの第1話「かけめぐる青春/絶体絶命」がフジテレビの\
深夜アニメ枠「ノイタミナ」で10月13日に放送された。")
result = [re.split('[,\t]',x) for x in result.splitlines()]
pprint(result)
出力結果は以下のとおりです。
[['高橋留美子', '名詞', '固有名詞', '人名', '一般', '*', '*', '高橋留美子', 'タカハシルミコ', 'タカハシルミコ'],
['さん', '名詞', '接尾', '人名', '*', '*', '*', 'さん', 'サン', 'サン'],
['の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ'],
['人気', '名詞', '一般', '*', '*', '*', '*', '人気', 'ニンキ', 'ニンキ'],
['マンガ', '名詞', '一般', '*', '*', '*', '*', 'マンガ', 'マンガ', 'マンガ'],
['「', '記号', '括弧開', '*', '*', '*', '*', '「', '「', '「'],
['うる星やつら', '名詞', '固有名詞', '一般', '*', '*', '*', 'うる星やつら', 'ウルセイヤツラ', 'ウルセイヤツラ'],
['」', '記号', '括弧閉', '*', '*', '*', '*', '」', '」', '」'],
['の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ'],
['完全', '名詞', '形容動詞語幹', '*', '*', '*', '*', '完全', 'カンゼン', 'カンゼン'],
['新作', '名詞', 'サ変接続', '*', '*', '*', '*', '新作', 'シンサク', 'シンサク'],
['と', '助詞', '格助詞', '一般', '*', '*', '*', 'と', 'ト', 'ト'],
['なる', '動詞', '自立', '*', '*', '五段・ラ行', '基本形', 'なる', 'ナル', 'ナル'],
['テレビアニメ', '名詞', '固有名詞', '一般', '*', '*', '*', 'TVアニメ', 'テレビアニメ', 'テレビアニメ'],
['の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ'],
['第1話', '名詞', '固有名詞', '一般', '*', '*', '*', '第1話', 'ダイイチワ', 'ダイイチワ'],
['「', '記号', '括弧開', '*', '*', '*', '*', '「', '「', '「'],
['かけめぐる青春', '名詞', '固有名詞', '一般', '*', '*', '*', 'かけめぐる青春', 'カケメグルセイシュン', 'カケメグルセイシュン'],
['/', '記号', '一般', '*', '*', '*', '*', '/', '/', '/'],
['絶体絶命', '名詞', '一般', '*', '*', '*', '*', '絶体絶命', 'ゼッタイゼツメイ', 'ゼッタイゼツメイ'],
['」', '記号', '括弧閉', '*', '*', '*', '*', '」', '」', '」'],
['が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ'],
['フジテレビ', '名詞', '固有名詞', '組織', '*', '*', '*', 'フジテレビ', 'フジテレビ', 'フジテレビ'],
['の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ'],
['深夜アニメ', '名詞', '固有名詞', '一般', '*', '*', '*', '深夜アニメ', 'シンヤアニメ', 'シンヤアニメ'],
['枠', '名詞', '接尾', '一般', '*', '*', '*', '枠', 'ワク', 'ワク'],
['「', '記号', '括弧開', '*', '*', '*', '*', '「', '「', '「'],
['ノイタミナ', '名詞', '固有名詞', '一般', '*', '*', '*', 'noitaminA', 'ノイタミナ', 'ノイタミナ'],
['」', '記号', '括弧閉', '*', '*', '*', '*', '」', '」', '」'],
['で', '助詞', '格助詞', '一般', '*', '*', '*', 'で', 'デ', 'デ'],
['10月13日', '名詞', '固有名詞', '一般', '*', '*', '*', '10月13日', 'ジュウガツジュウサンニチ', 'ジューガツジュウサンニチ'],
['に', '助詞', '格助詞', '一般', '*', '*', '*', 'に', 'ニ', 'ニ'],
['放送', '名詞', 'サ変接続', '*', '*', '*', '*', '放送', 'ホウソウ', 'ホーソー'],
['さ', '動詞', '自立', '*', '*', 'サ変・スル', '未然レル接続', 'する', 'サ', 'サ'],
['れ', '動詞', '接尾', '*', '*', '一段', '連用形', 'れる', 'レ', 'レ'],
['た', '助動詞', '*', '*', '*', '特殊・タ', '基本形', 'た', 'タ', 'タ'],
['。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。'],
['EOS']]
これでmecab-ipadic-NEologdを辞書ファイルとした形態素解析ができるようになりました。mecab-ipadic-NEologdは更新頻度が高いので、定期的にgitからクローンして辞書ファイルをコンパイルするようにしてください。
この記事が気に入ったらサポートをしてみませんか?