GoogleColaboratory上でMecab形態素解析


Python未経験でしたが、自然言語処理、形態素解析の話が業務で出たため会話できるようMecabでの分かち書きをやってみました。
JupyterNotebookでも可能でしたが、GoogleColaboratoryでの話を備忘録兼初心者の経験として残します。

GoogleColaboratoryとは

Googleが提供するサービスでGoogleアカウントさえあれば無料でPythonの実行がブラウザ上でできます。
Pythonってどうやって使うんだろう、環境設定で挫折しそう、そんな方でも手軽に試せます。
私のようなPythonに興味はあるけどあまり触れたことが無い人が初めて見るにはぴったりです。
プログラミングの学習は楽しさを見出さないと続かないもの、かくいう私も何度も学習を中断しています。
絶対続けるみたいな固い意志があればいいですが、少しの壁でも躓いちゃうと辞めちゃいます。
まず最初に簡単な環境で始めてみて面白さに気づけばよいと思います。

テキストデータの分析

どの言語でも最初は'HelloWorld'ですよね。
でも画面に文字を出すだけでは何もおもしろくないしif文やfor文での処理も他の言語でやったことある人にはつまらないです。
そこで私はテキストを分析してみたいという目的ありきで学習を始めました。

定量的なデータと違いテキストデータは貯まりはしても分析できない、ただ眺めて終わってしまいがちです。膨大な文字を分析して利用できたら今まで見過ごしていたことに気づけるかも⁉
そう思いテキストデータを分析するにはといろいろ調べてMecabでの形態素解析にチャレンジしました。

形態素解析とは

私たちが日々使っている日本語はかなり複雑です。英語であれば単語と単語の間はスペースで区切られていますし、使われる文字もアルファベット26文字だけです。ところが日本語ではひらがな、カタカナ、漢字と膨大な種類の文字が使われ、単語を認識することが困難です。
そこで形態素解析と呼ばれる分析で文章を単語で区切り、それぞれの単語の品詞を判定しテキストの分析ができるようにします。
そういわれてもいちから一人で形態素解析をするのは難しい。ところがこの便利な世の中、OSSとして日本語の解析器が公開されています。
その中の一つとして今回Mecabを利用しました。

Mecabを使ってみる

長々と書いてしまいましたが、さっそく使ってみましょう。
まずはMecabと辞書のインストールです。
GoogleColaboratory上で以下のコードを入力、実行しました。

!pip install mecab-python3
!pip install unidic
!python -m unidic download

pipというのはPythonのパッケージ(プログラムの塊のようなもの)の管理ツールで用意されているツールをインストールできます。
mecab-python3とunidicという辞書をインストールしました。

import MeCab
import unidic
mecab = MeCab.Tagger()
print(mecab.parse('私はPythonを学習しています。'))

続いてこのように入力すると以下のような結果が出ました。

私	代名詞,,,,,,ワタクシ,私-代名詞,私,ワタクシ,私,ワタクシ,和,"","","","","","",体,ワタクシ,ワタクシ,ワタクシ,ワタクシ,"0","","",11345327978324480,41274
は	助詞,係助詞,,,,,ハ,は,は,ワ,は,ワ,和,"","","","","","",係助,ハ,ハ,ハ,ハ,"","動詞%F2@0,名詞%F1,形容詞%F2@-1","",8059703733133824,29321
Python	名詞,普通名詞,一般,,,
を	助詞,格助詞,,,,,ヲ,を,を,オ,を,オ,和,"","","","","","",格助,ヲ,ヲ,ヲ,ヲ,"","動詞%F2@0,名詞%F1,形容詞%F2@-1","",11381878116459008,41407
学習	名詞,普通名詞,サ変可能,,,,ガクシュウ,学習,学習,ガクシュー,学習,ガクシュー,漢,"","","","","","",体,ガクシュウ,ガクシュウ,ガクシュウ,ガクシュウ,"0","C2","",2203704837153280,8017
し	動詞,非自立可能,,,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,"","","","","","",用,シ,スル,シ,スル,"0","C5","",5370298291593857,19537
て	助詞,接続助詞,,,,,テ,て,て,テ,て,テ,和,"","","","","","",接助,テ,テ,テ,テ,"","動詞%F1,形容詞%F2@-1","",6837321680953856,24874
い	動詞,非自立可能,,,上一段-ア行,連用形-一般,イル,居る,い,イ,いる,イル,和,"","","","","","",用,イ,イル,イ,イル,"0","C4","M4@1",710568013079169,2585
ます	助動詞,,,,助動詞-マス,終止形-一般,マス,ます,ます,マス,ます,マス,和,"","","","","","",助動,マス,マス,マス,マス,"","動詞%F4@1","",9812325267808939,35697
。	補助記号,句点,,,,,,。,。,,。,,記号,"","","","","","",補助,,,,,"","","",6880571302400,25
EOS

品詞や表記ゆれのパターンが出るのがうっとおしい方は以下のように書けば分かち書きだけができます。

コード

import MeCab
import unidic
mecab = MeCab.Tagger('-Owakati')
print(mecab.parse('私はPythonを学習しています。'))

結果

私 は Python を 学習 し て い ます 。

こうやって単語に区切ることによって例えば
アンケートでよく使われた単語は何だろう?単語と評価の関係はどうだろうのようなテキストから発見を得る段階に進むことができます。

まとめ

今回はテキストデータの分析の初歩をGoogleColaboratoryで実行してみました。
ここから私はGoogleDrive上のCSVファイルを読み込んで頻出名詞を求めたり、アンケートでのスコアと単語の関係を調べたり、文章の類似性を調べたりと進んでいきました。
インストールがどうだの、PandasやNumpyといった有名ライブラリを使っての分析だのと調べながらでしたが簡単なループ処理で終わるよりかなり楽しく学習できました。
Pythonに興味を持った初心者の参考になれば幸いです。

参考
https://atmarkit.itmedia.co.jp/ait/articles/2102/05/news027.html