本記事ではPythonで形態素解析する方法を解説します。
形態素解析とは?
形態素解析というのは以下の通りです。
形態素解析とは、自然言語で書かれた文を言語上の最小単位である形態素に分割し、それぞれの品詞や変化などを割り出すこと。
https://e-words.jp/w/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90.html
例えば、「Pythonを学ぶ」という文は「Python(名詞)」「を(助詞)」「学ぶ(動詞)」に分割することを形態素解析と言います。
形態素解析ライブラリの準備
形態素解析にはライブラリのインストールする必要があります。形態素解析ライブラリは数多くあります。例えば、
MeCab
MeCabは京都大学情報学研究科が開発した形態素解析エンジンです。
MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。
https://taku910.github.io/mecab/
Sudachi
株式会社ワークスアプリケーションズが開発した形態素解析エンジンです。
Sponsor this project WorksApplications Works Applications
https://github.com/WorksApplications/Sudachi
janome
janomeは依存ライブラリなしで簡単にインストールできることを売りにしている形態素解析エンジンです。
依存ライブラリなしで簡単にインストールでき,アプリケーションに組み込みやすいシンプルな API を備える形態素解析ライブラリを目指しています。
https://mocobeta.github.io/janome/#janome
形態素解析の実施
今回は上記の中でMeCabを使って形態素解析を実行する例を紹介します。
まずは下記コマンドでMeCabをインストールします。
pip install mecab-python3 unidic-lite
上記でmecab-python3はPythonをMeCabを使うためのライブラリです。
unidic-liteは形態素解析するための辞書です。一緒にインストールする必要があります。
import MeCab
tagger = MeCab.Tagger()
node = tagger.parseToNode("Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。")
while node:
print(node.surface, node.feature)
node = node.next

また、名詞だけを取り出したい場合は下記のコードで可能です。
import MeCab
tagger = MeCab.Tagger()
node = tagger.parseToNode("Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。")
while node:
if node.feature.split(",")[0] == '名詞':
print(node.surface)
node = node.next

