AI/深層学習の活用領域には「画像認識」「音声認識」「自然言語処理」などがあります。
「自然言語処理」とは、わたしたちが普段使用している自然言語をコンピューターに処理させるため一連の技術を指しますが、その中に「形態素解析」と呼ばれる技術があります。
今回の記事では、
- アンケート結果、口コミ、SNSなどのテキスト情報を分析してみたい
- 形態素解析について知りたい
という人に向けて、形態素解析を紹介していきます。
SNSや口コミデータの分析で使える形態素解析について

形態素解析とは?
形態素解析とは、ある言葉が変化・活用しない部分を最小単位の「素」と捉え、その「素」ごとに言葉を分解していく手法のことです。
形態素解析を行うことで、文章を名詞や助詞、動詞などの品詞ごとの小さい単位に分解することができます。
1.形態素解析の処理例
はじめに、形態素解析の処理例を見ていきます。
たとえば、下記のような文章があったとします。
私は昭和生まれの日本人です。
この文章に対して、形態素解析を行うと、次のような言葉に分解できます。
「私」「は」「昭和」「生まれ」「の」「日本人」「です」
文章が品詞ごとに分割されているのが分かると思います。
ちなみに、上記の例では、見やすくするために、言葉の区切りを「」で区切りました。しかし、一般的には、言葉の区切りは空白を挟んで記述します。また、この記述法をわかち書きと呼びます。
2.Pythonでの形態素解析の実行例
それでは、Pythonによる形態素解析の実行例を見ていきます。
次の言葉に対して形態素解析を行います。
すもももももももものうち
「スモモも桃も桃のうち」をすべてひらがなで書いた文章です。読みづらいです。
形態素解析で用いるライブラリを導入している前提で、Pythonでは次のように記述できます。
import MeCab m = MeCab.Tagger ("-Ochasen") print(m.parse ("すもももももももものうち"))
そして、実行すると、下記の通り表示されます(ChaSen形式の出力)。
すもも スモモ すもも 名詞-一般 も モ も 助詞-係助詞 もも モモ もも 名詞-一般 も モ も 助詞-係助詞 もも モモ もも 名詞-一般 の ノ の 助詞-連体化 うち ウチ うち 名詞-非自立-副詞可能 EOS
言葉の分解と、品詞の識別が正しく出来ていることが分かります。
3.形態素解析におけるユーザー辞書の必要性
形態素解析では、ユーザーが指定した言葉を辞書(ユーザー辞書)に登録することができます。
ここでは、どういった場合にユーザー辞書が必要となるかを見ていきます。
昨日は醸し人九平次を買った
この文章に対して、形態素解析を行うと、次のような言葉に分解されます。
「昨日」「は」「醸し」「人」「九平次」「を」「買っ」「た」
しかし、「醸し人九平次」は日本酒の銘柄であるため、ひとつの名詞として分解する必要があります。
形態素解析ツールでは、IPA辞書のような基本的な日本語の文法や単語を網羅した辞書を用いることができますが、今回の例のように特定の固有名詞や新しい単語はカバーしていない場合があります。
そのため、形態素解析ツールでは、指定した言葉(単語)を辞書に登録することができます。そして、作成した辞書を用いることで、適切な形態素解析結果を得ることができるようになります。
4.自然言語処理でも大活躍の正規表現
「データエンジニア必須スキルの正規表現のすすめ」では、正規表現について紹介しました。そして、正規表現は自然言語処理でも活用できることを書きました。
ここでは、自然言語処理における正規表現の活用法を、日本酒の口コミサイトより銘柄の特徴を分析するケースをもとに見ていきます。
たとえば、ある銘柄の口コミに対して、次の形態素解析結果が得られたとします。
「十四代」「は」「メロン」「の」「よう」「な」「フルーティー」「さ」「を」「感じる」「日本酒」「だ」
この形態素解析(分かち書き)後の文章を、クラスタ分析などの統計学的手法で分析することを考えた場合、「は」「の」「な」「さ」「を」のような助詞や助動詞は解析に使えない単語と言えます。
また、「日本酒」という単語は、日本酒の銘柄の特徴を分析する上では、役に立たない言葉となることが考えられます。
このように、分析から特定の言葉を除外させたい場合に正規表現が大活躍します。
具体的には、形態素解析により分割された言葉に対して「ひらがな1文字の単語を除外する」や「日本酒などの特定の単語を除外する」などの指定を正規表現で行うことができます。
正規表現を用いることで、少ない記述量で、自由度高く除外したい文字列を指定することができるため、除外する言葉を試行錯誤しながら指定することができるようになるため、分析をスムーズに行えるようになります。
Pythonで使える形態素解析ツール
最後に、Pythonで形態素解析を行う場合に使えるツールをいくつか紹介します。
- MeCab … 日本で開発された日本語対応の形態素解析ツール
- JUMAN … 同じく日本で開発された日本語対応の形態素解析ツール
- TREE TAGGER … 英語や英語以外の外国語に対応した形態素解析ツール
- NLTK … 英語対応の統計的自然言語処理のためのライブラリ
形態素解析ツールには日本語専用のツールと、英語などの外国語用のツールが存在します。
英語はひとつひとつの単語をスペースで区切って表現する言語であるのに対して、日本語は言葉をスペースで区切る言語では根本的な違いがあります。
そのため、日本語に対応した形態素解析ツールは独自の開発が進んできた経緯があったりします。
まとめ
本記事では、自然言語処理の技術のひとつの形態素解析を紹介していきました。
形態素解析とは「文章を名詞や動詞などの品詞ごとの小さい単位に分解していく手法」であり、口コミなどの自然言語に対して、クラスタ分析などの統計解析を行う際の前処理として使われる技術でs。
そして、アンケート結果やインターネット上の口コミなどの自然言語を分析するためには、この形態素解析が必要となります。
自然言語処理をやってみたいと考えている方は、Pythonによる形態素解析手法を学んでみてはいかがでしょうか?
じゃあ。