🥗

MeCabを入れてサクッと形態素解析をしてみる

2022/09/11に公開

形態素解析とは

そもそも形態素とは

意味を有する最小の言語単位。すなわち,一定の音形と意義の連合した言語形式のうち最小の単位をさす。

引用元: コトバンク

形態素解析では文章を形態素単位の単語に分割してくれます。

原文

吾輩は猫である。

形態素解析後

吾輩	名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
猫	名詞,一般,*,*,*,*,猫,ネコ,ネコ
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。	記号,句点,*,*,*,*,。,。,。

日本語の形態素解析ツール

日本語の形態素解析エンジンはいくつか存在しますが、今回はMeCabを使ってみます。
http://taku910.github.io/mecab/

手順

辞書とMeCabのインストール

MeCabをインストールする前に辞書をインストールする必要があります。
辞書もいくつか存在しますが、推奨されているIPA辞書をインストールします。

brew install mecab-ipadic

MeCabインストール

brew install mecab

ターミナルでmecabと入力するとMeCabが起動します。
(終了させるときは control + C

mecab

試しに「メロスは激怒した。」という文章を入力すると、以下のように解析結果が出力されます。

メロス	名詞,一般,*,*,*,*,*
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
激怒	名詞,サ変接続,*,*,*,*,激怒,ゲキド,ゲキド
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

少しみにくいですが、出力フォーマットは以下のようになっています。

表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音

対象のテキストをファイルごと解析させたい場合は mecab {入力ファイルのパス} っとファイルパスを指定すればできます。
-o オプションで解析結果をファイルに出力することもできます。

macab {入力ファイルのパス} -o {出力先のバス}

辞書を拡張する

解析の精度は辞書に左右されることが多く、辞書が知らない言葉はうまく解析されません。
例えば 今週の呪術廻戦やばかった というテキストを解析すると、

今週	名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
呪術	名詞,一般,*,*,*,*,呪術,ジュジュツ,ジュジュツ
廻	名詞,固有名詞,地域,一般,*,*,廻,マワリ,マワリ
戦	名詞,接尾,一般,*,*,*,戦,セン,セン
やばかっ	形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,やばい,ヤバカッ,ヤバカッ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS

となり、「呪術廻戦」が1つの固有名詞として認識されていません。

最初にインストールした辞書(ipadic)は全ての日本語を網羅しているわけではないので、最近認知されるようになった固有名詞などには対応していないためです。
なのでmecab-ipadic-NEologdを入れてみます。
mecab-ipadic-NEologdipadic-2.7.0 で解析した際に、「複数の語に分割された」、「語の境界で正しく分割されたが読み仮名が付与されなかった」などの条件に当てはまるものを収録しています。
1週間に2回更新されるので、比較的最近の言葉も登録されています。

ipadic と併用することが推奨されているので、mecab-ipadic-NEologd も入れてみます。
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md#mecab-ipadic-neologd-をインストールする準備

mecab-ipadic-NEologd のリポジトリをクローン

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

クローンしたリポジトリに移動

cd mecab-ipadic-neologd

以下コマンド実行してインストール

./bin/install-mecab-ipadic-neologd -n

インストール先を確認

echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

これでインストールできました。
-d オプションで使用する辞書を指定してMeCabを起動できます。

mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ 

早速さっき試した 今週の呪術廻戦やばかった というテキストを解析してみます。

今週	名詞,副詞可能,*,*,*,*,今週,コンシュウ,コンシュー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
呪術廻戦	名詞,固有名詞,一般,*,*,*,呪術廻戦,ジュジュツカイセン,ジュジュツカイセン
やばかっ	形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,やばい,ヤバカッ,ヤバカッ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS

「呪術廻戦」が固有名詞として認識されました。

デフォルトの辞書を変更する

mecab-ipadic-NEologd を使用する際に毎回 /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ を指定するのは面倒です。
デフォルトの辞書に mecab-ipadic-NEologd を登録します。

念の為デフォルトの辞書のパスを確認

mecab -D

実行結果

filename:	/usr/local/lib/mecab/dic/ipadic/sys.dic
version:	102
charset:	utf8
type:	0
size:	392126
left size:	1316
right size:	1316

filenameに /usr/local/lib/mecab/dic/ipadic/sys.dic が設定されているのでipadicがデフォルト辞書です。
これを /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ に変更するために設定ファイルを編集します。

open /usr/local/etc/mecabrc

設定ファイル(mecabrc)の中身

;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir =  /usr/local/lib/mecab/dic/ipadic

; userdic = /home/foo/bar/user.dic

; output-format-type = wakati
; input-buffer-size = 8192

; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n


diff mecabrc
dicdirのパスがデフォルト辞書のパスになるので、/usr/local/lib/mecab/dic/mecab-ipadic-neologd/ に変更して保存します。

;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
- dicdir =  /usr/local/lib/mecab/dic/ipadic
+ dicdir =  /usr/local/lib/mecab/dic/mecab-ipadic-neologd/

; userdic = /home/foo/bar/user.dic

; output-format-type = wakati
; input-buffer-size = 8192

; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n


辞書のパスを確認

mecab -D

設定変更されてそう

filename:	/usr/local/lib/mecab/dic/mecab-ipadic-neologd/sys.dic
version:	102
charset:	UTF8
type:	0
size:	4668394
left size:	1316
right size:	1316

所感

mecabをインストールして試すこと自体は簡単にできました。
形態素解析結果を利用して、頻出度を出したりNgram解析をしてデータとして別の何かに生かすことが本来の目的です。
フロントでやるならkuromoji.jsとか試してみたいですね。

参考文献

https://101010.fun/programming/mecab-mac.html
https://zenn.dev/sinozu/articles/44f58dddb25c03f8f05e
https://qiita.com/ichi_zamurai/items/6311614f83fc30dd28d2
https://qiita.com/Haruka-Ogawa/items/f261b8b03320f2fba9f2

Discussion