Pythonで自然言語処理を行うためにまずは形態素解析からやってみます。
今回は日本語の形態素解析を行うライブラリであるMeCabの導入と実際に形態素解析をします。
Contents
形態素解析とは
文章をバラバラに
文章を形態素という最小単位に分割(トークン化)して、
最小単位の品詞を判別して単語の原型を取得するものです。
簡単に言えば「文章を単語単位でバラバラにして、各単語の品詞も分類するよ!」という感じ?
実際にやってみるとわかりやすい。
MeCabを使えるようにする
MeCab本体のインストール
$ git clone https://github.com/taku910/mecab.git
$ cd mecab/mecab
$ ./configure --enable-utf8-only
$ make
$ make check
$ sudo make install
辞書のインストール
辞書はいろいろありますので自分の目的にあったものを使用します。
本体にも入っているためまずはそのまま。
$ cd ../mecab-ipadic
$ ./configure --with-charset=utf8
$ make
$ sudo make install
MeCabを試してみる。
自由な文章を使って試してみましょう。
$ mecab
道内は局地的に強い雨が降っていて、大雨洪水警報が出ている札幌市では、南区など一部の地域に避難準備情報が出されています。
結果:
道内 名詞,一般,*,*,*,*,道内,ドウナイ,ドーナイ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
局地 名詞,一般,*,*,*,*,局地,キョクチ,キョクチ
的 名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
に 助詞,副詞化,*,*,*,*,に,ニ,ニ
強い 形容詞,自立,*,*,形容詞・アウオ段,基本形,強い,ツヨイ,ツヨイ
雨 名詞,一般,*,*,*,*,雨,アメ,アメ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
降っ 動詞,自立,*,*,五段・ラ行,連用タ接続,降る,フッ,フッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
大雨 名詞,一般,*,*,*,*,大雨,オオアメ,オーアメ
洪水 名詞,一般,*,*,*,*,洪水,コウズイ,コーズイ
警報 名詞,サ変接続,*,*,*,*,警報,ケイホウ,ケイホー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
出 動詞,自立,*,*,一段,連用形,出る,デ,デ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
札幌 名詞,固有名詞,地域,一般,*,*,札幌,サッポロ,サッポロ
市 名詞,接尾,地域,*,*,*,市,シ,シ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
、 記号,読点,*,*,*,*,、,、,、
南 名詞,固有名詞,地域,一般,*,*,南,ミナミ,ミナミ
区 名詞,接尾,地域,*,*,*,区,ク,ク
など 助詞,副助詞,*,*,*,*,など,ナド,ナド
一部 名詞,副詞可能,*,*,*,*,一部,イチブ,イチブ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
地域 名詞,一般,*,*,*,*,地域,チイキ,チイキ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
避難 名詞,サ変接続,*,*,*,*,避難,ヒナン,ヒナン
準備 名詞,サ変接続,*,*,*,*,準備,ジュンビ,ジュンビ
情報 名詞,一般,*,*,*,*,情報,ジョウホウ,ジョーホー
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
出さ 動詞,自立,*,*,五段・サ行,未然形,出す,ダサ,ダサ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。
ばらばら。
PythonからMeCabを使う
さてこのMeCabをPythonから使えるようにします。
mecab-python3を入れる
「mecab-python3」をさくっと入れてしまいましょう。
$ sudo pip install mecab-python3
使ってみる
1 2 3 4 | import MeCab mecab = MeCab.Tagger () print(mecab.parse ("増える「修学旅行の民泊」でトラブルや不安の声")) |
実行結果:
増える 動詞,自立,*,*,一段,基本形,増える,フエル,フエル
「 記号,括弧開,*,*,*,*,「,「,「
修学旅行 名詞,一般,*,*,*,*,修学旅行,シュウガクリョコウ,シューガクリョコー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
民泊 名詞,サ変接続,*,*,*,*,民泊,ミンパク,ミンパク
」 記号,括弧閉,*,*,*,*,」,」,」
で 助詞,格助詞,一般,*,*,*,で,デ,デ
トラブル 名詞,一般,*,*,*,*,トラブル,トラブル,トラブル
や 助詞,並立助詞,*,*,*,*,や,ヤ,ヤ
不安 名詞,形容動詞語幹,*,*,*,*,不安,フアン,フアン
の 助詞,連体化,*,*,*,*,の,ノ,ノ
声 名詞,一般,*,*,*,*,声,コエ,コエ
EOS
バッチリ!
モード
-Ochasen: (ChaSen 互換形式)
-Owakati: (分かち書きのみを出力)
-Oyomi: (読みのみを出力)
それぞれモードの切り替えができます。
1 2 3 4 | mecab = MeCab.Tagger ("-Ochasen") mecab = MeCab.Tagger ("-Ochasen") mecab = MeCab.Tagger ("-Owakati") mecab = MeCab.Tagger ("-Oyomi") |
まとめ
今回は形態素解析を行うためにMeCabの導入とPythonから使えるようにしました。
使い方は非常に簡単でしたね!
自然言語処理の一歩目でした。