DATAFLUCT Tech Blog

データ技術・データサイエンス・MLOps に関するトレンドを追いかけます

WordCloudの弱点と精度を高めるための形態素解析について

みなさん、こんにちは。DATAFLUCTのKazumiです。

前回の記事( WordCloudで小説の特徴を テキストマップ化してみた )でWordCloudを用いたテキストマップの作成を紹介しました。そこではWordCloudを使って、テキスト内でよく使われる単語を可視化できました。今回はその仕組みともっと良くするための方法について話していきます。

WordCloudにはできないことがある!

まず、WordCloudにはできないことについて説明します。

WordCloudを使って作った、次の2つのテキストマップを見比べてみてください。


これは青空文庫からとってきた宮沢賢治の「注文の多い料理店」の全文をテキストマップとして可視化したものです。

左のテキストマップの状態から、少しの工夫を入れるだけで右のテキストマップのような特徴がより分かる画像になりました。ここから、形態素解析をやった方が良い、ということがわかります。

同時に、WordCloudだけで文章の特徴を可視化することはとても困難な場合があることも判明しました。それではなぜ、困難なのでしょうか?

そもそも形態素解析というのは何か?

形態素への理解

「そもそも形態素って何か?」ですが、これは言語学と呼ばれる専門領域の内容になります。きちんと専門の方が説明をしている記事がありましたので、引用いたします。


言葉の最小単位とは何か?文節と単語と形態素(モルフィム)の関係 | TANTANの雑学と哲学の小部屋

リンク先記事内の画像を引用させていただきましたが、形態素と単語、文節の関係について、視覚的にはこのようになります。単語と形態素は非常に似通っていますが、言語学的には少し異なることになります。

形態素を解析する、とは

形態素とは何か、がわかったことで、「形態素を解析する」とはどういうことかを説明することができます。まず前提として、「その文(文章)の特徴を見つける」ことが最終的な目標です。これを実現するために「形態素を解析」するのです。

「形態素解析」には2つのステップがあります。まず「文章を分割」し、「品詞をつけ」ます。

①文章を分割する

文章を分割する際に、「どこまで分割すべきか?」というクエスチョンが出てきます。ただやみくもに分割しても「解析」ができません。

そんな時にすでに研究され見つけ出された法則」が使えます。それが言語学です。『文章をやみくもに分解する』のではなく、『言語学という専門領域で培われた法則をもとに分解する』のです。その結果が「形態素まで分割する」という答えです。なぜなら、形態素が「品詞をつけ」る最小単位だからです

②品詞をつける

文章を分割出来たら品詞をつけることができます。しかし、実は分け方や品詞の付け方は何通りもあります。


日本語形態素解析の裏側を覗く!MeCab はどのように形態素解析しているか - クックパッド開発者ブログ

CookPadの開発者のブログが紹介してくださっているように、「東京都に住む」という文だけでも分け方や品詞の付け方は何通りもあります。そこで登場するのが2つのアイテムです。一つは辞書、もう一つは形態素解析ツールです。ブログ内で紹介されていますが、3つのステップがあります。

①候補となりえるすべての単語を辞書から取得する。

②形態素解析ツール内にあるモデル(MeCabはCRFを使っている)を使い、生起コストと連接コストというものを決定する。

③累積コストを最小にする組み合わせを求めることで、適切な品詞を求める。

このようにして、その文(文章)の特徴を見つけることができます。

WordCloudの弱点と応用

WordCloudの形態素解析が粗い理由

WordCloudの取扱説明書を読むと。regexpコマンドで『正規表現』を使って文章を分割しています。これは最も原始的な分け方です。WordCloudのドキュメントによれば、regexpコマンドは次のような特徴を持ちます。

WordCloudは私たちの知っている、英語とか日本語とかのような言語を理解しているのではなく、コンピューター上で定義されている「文字コード」とか「文字集合」で「分割するかしないか」の意思決定を機械的にしています。

つまり、WordCloudはコンピュータの世界の言語をもとに認識し、regexpで指定されたルールに従って解析をしています。だから各言語のルールに応じて解析をしておらず、形態素解析が粗くなるのは当然のことです。

WordCloudをうまく扱うには

それでもテキストマップを生成するWordCloudはとても便利なツールです。そのためWordCloudをうまく応用することが求められます。具体的には、

①形態素解析をMeCabのようなツールを使って上手に分割する、

②WordCloudで使いたい品詞の形態素or単語を選ぶ

③その形態素or単語を格納する(ここで形態素or単語と形態素or単語の間に半角空白等を入れる)

④WordCloudにかける

ということを行えば精度高く、見栄えもよく、便利に使うことができます。

おわりに

本記事では「形態素解析」という概念を使って、WordCloudの弱点やより良くするための方法について話していきました。

工夫を少し施すだけで、やりたい分析を楽しく、より面白く、そして早くできるようになります。WordCloudと形態素解析について学んだことで、ある程度は文章の解析を自信をもってできるようになっていただければ、これ以上嬉しいことはありません。

読んだ後はぜひMeCabなどの形態素解析ツールを上手に扱ってWordCloudでテキストマップを作ろう!と思ってくださると嬉しいです。

参考文献