Google Colaboratoryでの知識の共有
Google Colaboratoryが研究や教育に適しているということは「よくある質問」にも書かれている通りです。
Pythonプログラミング、あるいはそれを応用した機械学習に関する知識を共有するということにおいて、Colaboratoryは本当に強力なツールです。
ここではその強力さを、実際にColaboratoryを使ってある'知識'を共有することで、示していきたいと思います。
共有する'知識'
ここでは、「日本語の形態素解析をPythonで実行する方法」を共有したいと考えています。
形態素解析、は耳慣れない言葉かもしれませんが、簡単にいうと日本語の文章をコンピューターを使って品詞(名詞、動詞、助詞、など)のレベルに分解するというもので、機械学習を応用した自然言語処理において必要不可欠なプロセスです。
しかしながら、単語をスペースで区切る英語などと比べると、日本語は単語に分解すること自体が非常に難しいので、この形態素解析には複雑なプログラムが必要になります。
実はそのプログラム自体は、MeCabという非常に有名な日本語処理ライブラリで提供されていますので、ここではその形態素解析の中身に踏み込むのではなく「MeCabを使ってPythonで日本語形態素解析を行う方法」を紹介します。
形態素解析、あるいはMeCabに詳しくない人に、如何に簡単にそのノウハウを伝えられるか?という意味で良いサンプルではないかと思います。
Colaboratoryのnotebook
このノートでも書いた様に、Colaboratoryでは文章や画像などのコンテンツとPythonのコードを、notebookという形式で取り扱います。
notebookでは"セル"という単位で作成することができます。textのセルにはブログのエディターのような操作でテキストやリンク、画像を記述できます。また、codeのセルにはやはりブログエディターのコードブロックのような形で、Pythonのコードを書くことができます。
ここでは、MeCabとそのPython用ライブラリであるmecab-python3を紹介し、そのインストール方法を説明するnotebookを例として示します。
見た目はブログのページのようですが、最大の違いはcodeセルです。このセルでは左側にある円に右向き三角形のボタンをクリックすることで、Pythonのコマンドラインと全く同じように、セルに記述されたOS上のコマンドやPythonのコードを実行でき、その下にコンソールへの出力が表示されます。つまり文書の中にPythonのインタプリタが埋め込まれているわけです。
Pythonでの形態素解析を学びたい人はこのnotebookを読みながら、実際にプログラムを実行することで、理解を深めていくことができるわけです。
実際にMeCabを使うためには専用の日本語辞書が必要ですので、次のステップはその辞書とインストールのコマンドの説明になっています。
最後はMeCabを使った日本語の解析です。"今日もいい天気です"という日本語の文が、"今日"は名詞、"も"は助詞、という風に品詞に分解されているのがわかります。
これによって、このnotebookの読者はMeCabとはなにか、それをどの様に使えばPythonで形態素解析を行えるのか、を極めて短い時間で理解することができます。
これだけでも、まずPython の環境を用意して、次にブログを読んでコードをコピーし、Pythonのコマンドラインで実行して、という従来のやり方からすると学習効率という観点では十分強力といえます。
しかし、Colaboratoryが本当に強力なのはこれからで、それはnotebookの読者が自分の独自のコードも同じ様に実行できるという点です。
例えば、全く違う文章を入力して解析することができます。
また、mecab-python3の他のクラスやメソッドを使って、例えば文章の中から名詞だけを抜き出す、というプログラムを書くこともできます。
つまりnotebookの読者は、自分の目的にそったコードを書きながら理解を深めていき、その過程でわかったことや調べたことを、コードそのものと合わせてドキュメントに残していくことができる訳で、この点が書籍や非対話的なWebコンテンツでは実現できない、Colaboratoryが非常に強力な'知識の共有'の方法だと、考えている理由になります。
せっかくですのでこちらで使ったnotebookを共有しておきます。ご自身のGoogle Driveにコピーして使っていただくことができますので、興味のある方はぜひお試しください。
https://colab.research.google.com/drive/1jUhbqHJO1gbnFunv456zO8cWyngelrpv?usp=sharing