1
2

More than 5 years have passed since last update.

【準備編】Pythonで形態素解析を行う

Last updated at Posted at 2017-12-01

こんにちは、ディレクターの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日目終了!それでは!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2