日本語の自然言語処理は形態素解析から!ーWebアプリ制作日記その9

AIアプリ制作
日本語のツールの命名は和風!(詳細は本文)

日本語は、
英語のように、単語間に空白がある言語と違い、
ひらがな、カタカナと漢字等が平等に一文字ずつ並ぶ構造になっている。
(膠着語(こうちゃくご)と呼ばれる)

したがって、
日本語の自然言語処理の第一段階は、
入力文字列を単語に切り分ける作業となる。

これを「形態素解析」という。

たとえば、

彼女と国立新美術館へ行った

は、

彼女 と 国立 新 美術館 へ 行っ た 。

となる(*1)

Python でこの形態素解析を行う主要なツールは3種類ある。

1.「MeCab」(名前の由来は「和布蕪(めかぶ)」)

最もよく使われているエンジン。

開発者の好物という和布蕪

キカガク長期コースでも、これを利用。(*2)

非常に大規模な辞書が含まれるのが特徴。(*3)

3.「Janome」(名前の由来は「蛇の目」)

janome公式サイトより

Pythonの形態素解析ツールで、
pipコマンドで簡単にインストールできる。(*4)

数少ない日本語の自然言語処理の本、
『機械学習・深層学習による自然言語処理入門〜scikit-learnとTensorFlow を使った実践プログラミングでは、

字が小さい。ドンピシャの内容がなく参考程度に。

いちばんお手軽な「Janome」を使って形態素解析を説明している。

今回、わたしは「MeCab」を利用。
さっそく
スクレイピングした俳句データの前処理を始めたい。

まずは、

brew install mecab libmecab-dev mecab-ipadic-utf8 git curl xz

で、Mecabをインストールし(*5)

!pip install mecab-python3
import MeCab

で、PythonからMecabを利用できるようにする。

併せて、
データの前処理に必要なライブラリ、
numpy, pandas, matplotlib, seaborn、tensorflow(kerasが含まれている)
もインポート。

さて、準備はここまで。

「4.データの前処理・ラベル付け」

に進みたい。(つづく)

*1 本来なら「国立新美術館」がひとつの固まり(単語)だが、各ツールの使用している辞書の関係で、固有名詞も分かち書きされる場合がある。なお、多くの新語を含む辞書「NEologd」を使うと「国立新美術館」がひとつの名詞として分割される。
*2 言語や辞書、またデータベース化された言語資料であるコーパスに依存しない、汎用的な設計が特徴。使用できる言語はC、C#、C++、Java、Perl、Python、Ruby、Rと多い。さまざまな辞書と連結させることもできるため、日本語の形態素解析エンジンの中では最も良く使われている。
*3 京都大学大学院情報学研究科知能情報学専攻の黒橋・河原研究室が開発した「juman」の後継機(バージョンアップ版)。RNN(recurrent neural network)に基づく言語モデルを利用しており、基本語彙辞書(約3万語)のほかに、Wikipedia辞書約83万語)など、非常に大規模な辞書が含まれるのが特徴。そのためMeCabよりも単語の意味分類を細かく実施できるともいわれる。
*4 Pythonの形態素解析ツールで、pipコマンドで簡単にインストールできることが魅力。Janomejumanと同じように、辞書がはじめから内包されている(mecabと同じIPA辞書)。
*5 実際は、キカガク長期コースのテキスト通り、Linuxaptコマンドを使用して、Mecabをインストールした。

Follow me!