ここでは、Pythonで行える形態素解析の概要についてまとめています。
この記事の対象
形態素解析とは
形態素解析(Morphological Analysis)とは文章を形態素に分割して品詞を解析するものです。
形態素とは意味を持つ最小の単位という意味です。
機械翻訳やかな漢字変換、テキストマイニングなどの分野に利用されています。
日本語で形態素解析を行う方法には文法規則による方法と確率的言語モデルを用いる方法の2種類があります。両方とも品詞辞書や文法辞書を基に解析を行います。
ライブラリの種類
Pythonで形態素解析を行う際、以下のライブラリがあります。リンク先では各ライブラリについてまとめています。
項目 | 内容 |
Mecab | 「Mecab」は形態素解析の定番ツールの1つです。CRF(Conditional Random Fields)を用いたパラメータ推定による形態素解析エンジンです。Janomeと比べると実行速度が速い特徴があります。 |
Janome | 「Janome」はPythonのみで記述されており、外部エンジンが使用されていません。Mecabに比べると実行速度が遅い特徴があります。 |
Gensim | 「Gensim」は自然言語処理のライブラリです。Word2Vecという語句をベクトルに変換することができる特徴があります。 |
形態素解析の一例
形態素解析では、文章・文字列の品詞分けやWord Cloudによる可視化などが可能です。
文字列の品詞分け
import sys
import MeCab
#1---オブジェクト生成
mecab = MeCab.Tagger("-Ochasen")
#2---形態素解析
m_out = mecab.parse("吾輩は猫である。名前はまだ無い。")
print(m_out)
上記のプログラムはMecabを用いた形態素解析です。
結果は以下の通りです。
詳しい解説はこちらを参照下さい。
Word Cloudによる可視化
import matplotlib.pyplot as plt
from wordcloud import WordCloud
#1---テキスト読込
text = open("test.txt").read()
#2---wordcloudにテキストを代入
wordcloud = WordCloud(max_font_size=40).generate(text)
#3---matplotlibで画像生成
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.savefig("wordcloud.png")
Word Cloudを用いてテキストに書かれている単語を可視化するプログラムです。
結果は以下の通りです。
詳しい解説はこちらを参照下さい。
その他、形態素解析を用いた使用例
以下では、品詞分け、Word Cloudによる可視化以外の形態素解析の使用例を紹介しています。
項目 | 内容 |
レーベンシュタイン距離を求めるプログラム | 2つの文字列がどの程度異なるかを示すのがレーベンシュタイン距離です。リンク先ではレーベンシュタイン距離の算出プログラムについて解説しています。 |
N-gramを用いた類似度算出プログラム | リンク先ではN-gramを用いた任意の文字列同士の類似度を算出するプログラムについて解説しています。 |
マルコフ連鎖を用いた文章の生成 | 確率過程を用いて文章を生成する方法にマルコフ連鎖というものがあります。リンク先ではサンプルコードを用いてマルコフ連鎖について解説しています。 |
おすすめの書籍
1.形態素解析の理論と実装
専門書ですが、これから形態素解析を行う人にはおすすめの書籍です。形態素解析の概要がわかり易くまとめられています。
2.すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応
文章を単語に分割する方法からマルコフ連鎖まで学ぶことができます。他にも文章のスパム判定など実践的な内容なので、手を動かしながら学べるのがおすすめです。
3.実践力をつけるPythonの教科書
形態素解析は解説されていないですが、文字の取扱いについて基礎から学びたい方におすすめの1冊です。解説が分かりやすく、独学で読み進めることが可能です。
おすすめのオンラインスクール
「Aidemy」はAIの学習に特化したプログラミングスクールです。「3ヶ月でAI人材になる」を売りにしており、メンターに相談できる環境が整っているのでおすすめです。独学では物足りない方におすすめです。