MeCabを入れてサクッと形態素解析をしてみる
形態素解析とは
そもそも形態素とは
意味を有する最小の言語単位。すなわち,一定の音形と意義の連合した言語形式のうち最小の単位をさす。
引用元: コトバンク
形態素解析では文章を形態素単位の単語に分割してくれます。
原文
吾輩は猫である。
形態素解析後
吾輩 名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
猫 名詞,一般,*,*,*,*,猫,ネコ,ネコ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。
日本語の形態素解析ツール
日本語の形態素解析エンジンはいくつか存在しますが、今回は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-NEologd
は ipadic-2.7.0
で解析した際に、「複数の語に分割された」、「語の境界で正しく分割されたが読み仮名が付与されなかった」などの条件に当てはまるものを収録しています。
1週間に2回更新されるので、比較的最近の言葉も登録されています。
ipadic
と併用することが推奨されているので、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とか試してみたいですね。
参考文献
Discussion