自然言語処理(NLP)の一種である形態素解析は、言語をある種の単位(=形態素)ごとに細かく分けて判別することを指します。これができるようになると、文字列の解析や単語の抽出が可能になるため、テキストデータの加工や分析に役立ちます。
形態素解析とは
今回はPythonで形態素解析を可能にするMeCabを利用する方法を紹介します。
以下のコマンドでmecab-python3
とunidic-lite
をインストールしましょう。
unidic
はMeCabで使える辞書です。もともと推奨されているのはipadic
という辞書ですが、mecab-ipadic-neologd
のリポジトリを見ると更新が止まっているようなのでunidic
を使います。
symbol not found
が出る場合macOSを使っている場合、ここで確認を入れてください。
以下のようなエラーが出てきたら修正が必要です。
これはかなり沼にハマりました。macOSでHomebrewを使っていることや動的ライブラリの持ち方が変わったおかげでこういったエラーが発生するようです。
これについて調べると以下のQiitaの記事がヒットします。
しかし、当方の環境ではこれで解決しませんでした。公式リポジトリを調べていくと、以下のIssueで解決法が説明されていました。
まずは、homebrew
でmecab
をソースからビルドするオプションをつけてインストール(または再インストール)します。
※インストールはinstall
、再インストールはreinstall
その後、フラグを付けつつバージョン指定した形でmecab-python3
をインストールします。(先にpip uninstall mecab-python3
しておきましょう)
これで再度python -c 'import MeCab'
するとエラーが表示されなくなります。
今回は例として、長めのMarkdownドキュメントから一般名詞である単語を抽出してみましょう。
すでにmecab-python3
とunidic-lite
はインストールされている前提で進めます。
Markdownドキュメントは手持ちのドキュメントか、ChatGPTなどを駆使して適度な長さの文章を用意しましょう。
mecab_sample.py
を作って、今回使うドキュメントの大きさを測ってみると以下のようになりました。
なかなかのサイズです。
先ほど作ったmecab_sample.py
に加筆していきましょう。
こちらを実行すると以下のように20分の1程度までサイズが圧縮され、一般名詞の単語が重複排除された状態で抽出されました。
実際に抽出した単語例
macOSだとややインストールに手間がかかりましたが、MeCabなら比較的手軽に形態素解析を導入できます。
Pythonを使ってちょっとした分析をしたいときには導入しましょう。
形態素解析は特に音声認識技術やAIといった最新の技術でよく使われるので、スキルセットとして持っておいて損はありません。