こんにちは、ディレクターのJackです。
昨日の告知記事に引き続き、LIG Advent Calendar 2日目の記事を担当します!
https://qiita.com/advent-calendar/2017/lig
本日、明日でPythonで形態素解析を行うスクリプトを開発したいと思います。本日は準備編ということで、下記内容をお話できればと思います。
- 形態素解析とは?
- 必要ライブラリのインストールに関して
- Pythonインタプリタでの実行
形態素解析とは?
はじめに、形態素解析について簡単に整理します。形態素解析とは、自然言語処理の分野のひとつで、自然言語によって構成された文章から、文法や単語の品詞等が登録された辞書データに基づき「形態素」に分割し、各形態素の品詞を判別することです。
自然言語って何それ?と思った方もいるかと思いますが、難しく考える必要はありません。普段我々が日常に利用している言語、そう英語や日本語のことを自然言語と呼びます。また、形態素とは、言語で意味を持つ最小単位となります。
形態素解析の例
さっそくですが、形態素解析の例を下記に記載します。言葉での説明よりも、実際にコマンドを叩いて結果を見た方が分かりやすいですよね。
今回は、みんな大好きなMeCabを利用したいと思います。
MeCabとは?
あまりに有名すぎて説明不要かもしれませんが、MeCabとは日本語形態素解析システムです。
詳細は、下記リンクに記載されています!
▼形態素解析システム MeCab
https://www.mlab.im.dendai.ac.jp/~yamada/ir/MorphologicalAnalyzer/MeCab.html
早速、試してみる
例えば、「LIG Advent Calendar 2日目です!」という文字列を形態素解析システムMeCabにかけると下記のような結果が出力されます。
% mecab
LIG Advent Calendar 2日目です!
LIG 名詞,固有名詞,組織,*,*,*,*
Advent 名詞,一般,*,*,*,*,*
Calendar 名詞,一般,*,*,*,*,*
2 名詞,数,*,*,*,*,*
日 名詞,接尾,助数詞,*,*,*,日,ニチ,ニチ
目 名詞,接尾,一般,*,*,*,目,メ,メ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
! 記号,一般,*,*,*,*,!,!,!
EOS
「LIG」という形態素は「名詞」と判別され、「です」という形態素は「助動詞」と判別されています。
さて、ここまでざっくりではありますが、形態素解析の簡単な説明をさせていただきました。
次に、Pythonで形態素解析を行う際に必要なライブラリのインストールを行いたいと思います。
必要ライブラリをインストールする
今回は、上述ではありまが、MeCabを利用して形態素解析を行いたいと思います。
MeCabをインストールする
brewを利用しインストールします。下記コマンドで簡単にインストールする事ができます。
% brew install mecab-ipadic
これで、mecab
コマンドを利用できるようになりました。改めてコマンドを実行してみましょう。
「今日は良い天気ですね!」という文字列を入力してみます。
% mecab
今日は良い天気ですね!
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
! 記号,一般,*,*,*,*,!,!,!
EOS
次に、PythonでMeCabを利用できるようにします。
mecab-python3をインストールする
mecab-python3
ですが、pip
コマンドでインストールする事ができます。
% pip install mecab-python3
実際にPythonインタプリタ上でMeCabを実行してみましょう。
% python
Python 3.6.1 |Anaconda 4.4.0 (x86_64)| (default, May 11 2017, 13:04:09)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
>>> m = MeCab.Tagger()
>>> text = "今日は良い天気ですね!"
>>> print(m.parse(text))
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
! 記号,一般,*,*,*,*,!,!,!
EOS
>>>
text
という変数に文字列「今日は良い天気ですね!」を代入し、形態素解析を実行したスクリプトを記載しました。
Pythonでも簡単にMeCabを実行する事ができました。
次回は、もう少し踏み込んで、LIGブログの特定記事の形態素解析を行ってみたいと思います。
2日目終了!それでは!