形態素解析とは



ソフトウェア

公開日:2021/9/11          

前提知識
python


■形態素解析とは
形態素解析とは、自然言語で書かれた文章を意味のある最小の言語単位(形態素という)に分け、品詞に分類する、単語分割手法のことです。

なお単語分割の手法には形態素解析の他にもNgramという手法があります。Ngramは、文章を機械的に何文字ずつかに分割する手法です。

例えば、"私は東京都に住んでいる"という文章は形態素解析とNgramでは以下となります。

<形態素解析の場合>
私 / は / 東京都 / に / 住ん / で / いる

なお形態素解析において、分割された単語と単語の間に空白を含めて書くことを、分かち書きといいます。(上記はスラッシュで区切っているため、分かち書きではない)

<Ngramの場合:バイグラム(2文字分割)>
私は / は東 / 東京 / 京都 / に住 / 住ん / んで / でい / いる

<メリット、デメリット>
形態素解析は、品詞の種類が載っている辞書が別途必要となり、辞書の性能差が生じてしまいますが、性能の良い辞書を使えばノイズも少なく良い解析結果を得ることができます。 一方Ngramは辞書が不要なので言語に関係なく解析できますが、ノイズも多く含まれてしまいます。例えば上記例では本来は東京都という単語を得たかった筈が、京都という単語も含まれてしまいます。

■pythonによる実装例。Mecabを使用
MeCabというライブラリを使用します。ライブラリのインストール方法はこちら。ファイルを読み込む時点でエラーが出る場合は、エンコード方式をほかの形式(utf-8やshift-JISなど)に変えてみてください。

import MeCab

text = '今日は天気が悪いのでtaxiで東京都に行った'

tagger = MeCab.Tagger("-Owakati")

wakachi = tagger.parse(text) # 分かち書きに変換
wakachi_list = wakachi.split(' ') # 単語をリスト化

print(wakachi)

   ⇒ 今日 は 天気 が 悪い の で taxi で 東京 都 に 行っ た

print(wakachi_list)

   ⇒ ['今日', 'は', '天気', 'が', '悪い', 'の', 'で', 'taxi', 'で', '東京', '都', 'に', '行っ', 'た', '\n']












サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



ソフトウェア