株式会社スマレジの開発部でスマレジのサーバサイドを作っています

チケットの見える化にチャレンジしてみる(2-1: 準備編 形態素解析)

こんにちは!株式会社スマレジ 開発部のmasaです。 緊急事態宣言が明けて、大阪支社のある本町〜心斎橋は少し活気が戻ってきた感じがあります。 ワクチン摂取も始まったので、コロナ禍が収束することをただただ願うばかりです。

さて、今回は前回の続きで、まずはpythonを使って形態素解析をしていみます。

形態素解析とは

平たく言えば、文章を品詞(形態素)で分解する自然言語の解析・・・というかデータの前処理です。

私たちがこうして普段使っている日本語は、国文法で定められた品詞に分解することができます。 例えば、「masaamazonpythonの入門書を購入した」という文章は、 「masa/は/amazon/で/python/の/入門書/を/購入し/た」という風に分けることができ、それぞれが

  • masa ... 名詞
  • は ... 助詞
  • amazon ... 名詞
  • で ... 助詞
  • python ... 名詞
  • の ... 助詞
  • 入門書 ... 名詞
  • を ... 助詞
  • 購入し ... 動詞
  • た ... 助詞

という品詞に分解できます。小〜中学校の国語の時間に勉強したという方が多いのではないでしょうか。

余談ですが、この「国文法」は実は何人かの言語学者が文法を挙げており、学校で教えるのは橋本進吉という言語学者が作った橋本文法がベースになっています。 興味のある方はググってみてください。

形態素解析ライブラリ Janome

形態素解析を人間ではなく、ソフトウェアで行う場合は使用する言語の辞書をあらかじめソフトウェアにインストールしておく必要があります。辞書と解析を別々にした解析ソフトはmecabchasenが有名で、これらは実績もあり多くのAIや自然言語を扱うソフトウェアで利用されています。

しかし、現代では次々に新しい言葉が生まれてきており、辞書自体も定期的にアップデートしてあげる必要があります。 それはつまり、ソフトウェアの保守作業に「辞書のアップデート」が追加されることを意味し、保守手順を1つ増やすことを意味します。

出来る限りそういった手間はかけたくないので、今回は辞書と解析ツールが一体となっているライブラリであるjanomeを利用します。

mocobeta.github.io

こうすることで、pythonライブラリのアップデートのみで辞書の更新も対応できるようになります。 ただし、辞書一体型は基本ライブラリ提供側がライブラリの更新をしない限り、いつまでも同じ辞書を使うことになります。 そのため、商用のソフトを開発するのであれば、辞書分離型のライブラリを利用する方が良いとmasa的には思います。 よく使われる辞書分離型形態素解析ツールであるMeCabは下記からダウンロードできます。

taku910.github.io

このほかにもAPI形態素解析を行うサービスやJavaScriptで作成されている解析ツールもあるので、 用途と環境に応じて適切な解析ツールを選ぶことが大事になります。

また、Janomeを利用した形態素解析の実施方法については、下記の記事が参考になりました。

qiita.com

今回もコーディングがないですが、次回も多分ないです汗 (次回は多分、数学のお話)