かばやん's だいありー

かばやん's だいありー

学んだことをゆるゆるアウトプットしていきたいです。

「自然言語処理の勉強をしたい人」を対象に登壇した話

はじめに

この記事は、自然言語処理 Advent Calendar 2019 - Qiita の3日目の記事 兼 サポーターズCoLab Advent Calendar 2019 - Adventar 3日目の記事です。

qiita.com

自然言語処理 Advent Calendarは、自然言語処理に関するテーマであれば何でもOKとあったので、このタイトルで記事を書くことにしたのですが、クオリティの高い技術系の記事ばかり出て来そうな雰囲気を感じているので、ちょっとドキドキしながら書きました。

本記事では、自然言語処理を勉強したい人向けに、サポーターズCoLabで講師をした際に得た気づきを共有したいと思います。

アドベントカレンダー2つ兼用と欲張りな感じにしてしまいましたが(実は会社の同期アドベントカレンダーとも兼用)、以下のように考えています。

  • サポーターズCoLab講師の方やサポーターズ講師をしてみたいと考えている方、自然言語処理を勉強する人に対してアドバイスをすることに関心ののある方には、知見をお伝えしたい!
  • 自然言語処理界隈のプロの皆様にはオススメの勉強法があれば教えて欲しい!
  • 自然言語処理を勉強したいと考えている方には、発表資料+私のオススメする理由を読んで欲しい!

軽く自己紹介

サポーターズCoLabとは

supporterzcolab.com

supporterz-seminar.connpass.com

ざっくり一言でいうと、株式会社サポーターズが若手エンジニア向けに勉強会やミートアップを開催しているコミュニティです。

追記(2020/04/07):
サポーターズCoLabは2020/04/16にてサービス終了です。

私が講師をした勉強会

supporterzcolab.com

「はじめてみよう!自然言語処理」という名前の勉強会で、自然言語処理の概要と勉強方法についてお話しいたしました。 講師と書かれていますが、形式としては登壇の方が近いと感じました。

発表資料

発表当時はうさぎのアイコンを使っていました。デフォルメ似顔絵アイコンに変えたのは最近です。

講師をすることになった背景

  • サポーターズCoLabの方に、「講師やってみない?」と聞かれ、特に話したい内容は決めていなかったが「やってみたいです!」と即答した結果、決まった
  • サポーターズCoLabの方に、「機械学習自然言語処理あたりで何か話せればと考えています〜」と話した結果、「自然言語処理の勉強法とか需要ありそう」とアドバイスをいただいたので、そのままその案を採用

初心者向け勉強会は、機械学習やデータ分析がテーマのものは見聞きしますが、自然言語処理のものはあまり見聞きしない上に単発のものが多い印象です。私が知らないだけである可能性は大いにあるので、ご存じの方はぜひ教えて下さい!

こういった勉強会の需要はあるのか

講師をする前
私「正直な話、自然言語処理の勉強法は、小町先生のページに全てまとまっているし、私に話せることなんて存在するのか?」

cl.sd.tmu.ac.jp

cl.sd.tmu.ac.jp

自然言語処理を勉強した方々、あるいはこれからしようと考えている方々はおそらく一度とは言わず何度も見たことのあるページかと思います。 学び方が多くあって人それぞれである分野は多いと思うのですが、自然言語処理においてはそんなに人によって勉強法に差が無いのかなと感じました。

講師をした後

  • 「検索すれば出てくるような内容しか無かった」という意見と「検索しただけではよくわからなかったので参考になった」という意見があった
  • そもそもこの勉強会の対象者は「検索したけどよくわからない」という人向けのつもりだった
  • 各勉強教材の感想を生で聞きたいという需要はありそうだったので、こういった勉強会の需要はあると感じた

どんな人が勉強会に参加していたか

非エンジニアから自然言語処理エンジニアに、といった方には私の記憶が正しければお会いしませんでした。

本当にこの勉強法が初学者にとっていいのか?

基本的には、私が実際に勉強する際に使用していた教材を紹介しています。登壇の直前に読んで良いと思って紹介したものもあります。自分が使用していないものは紹介することができないので、それは当然かもしれません。「この書籍良いらしいよ」と語っても、自分の言葉では無いので刺さりません。

私自身のスライドではDeep Learningの話はしていないのですが、『ゼロから作るDeep Learning ❷ ―自然言語処理編』をオススメしている方もお見かけしたことがあります。『ゼロから作るDeep Learning ❷ ―自然言語処理編』は、『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』を読んだ上で読んだ方がいいと思うので、初学者にオススメして自然言語処理編までたどり着かない場合もありそうだなと思い、スライドでは取り上げませんでした。 取り上げなかった一番の理由は、私自身が読み込めていないからです。

私のスライドは、勉強例のうちの1つくらいに思っていただければと思います。新しい書籍もどんどん出ていますし、私がまだ読めていない書籍もたくさんありますので、正直紹介できてないものも多いです。

オススメした教材と、紹介した背景

言語処理100本ノック

www.cl.ecei.tohoku.ac.jp

学生時代にPython 2.7でやったので、Python 3でコードも綺麗に書くようにしてやり直したいとずっと思いつつ、まだできていません。 自然言語処理に関する基本的な実装がカバーされていて無駄がないこと、他の人のコードと比較できること、取り掛かりやすいこと、がオススメ理由です。

追記(2020/04/07):
言語処理100本ノック 2020が最新です。 nlp100.github.io

NLP プログラミングチュートリアル

www.phontron.com 3周しました。 研究室のゼミで教わる側として1回、教える側として1回行いました。 社会人になってから、会社の同期勉強会で自然言語処理を勉強したいとの声があったので、本教材を選んで輪講を行いました。 参加者は、エンジニアあるいはCS専攻出身のPDMだったので、擬似コードがあったり演習が付いていたりする本教材は良かったように思います。 プログラミングから理解するタイプの人にはオススメですが、数式から理解する方が好きな人には他の教材の方が良かったかもとは思いました。

長岡技術科学大学 自然言語処理研究室

www.youtube.com

あまりこのチャンネルの話を他の人としたことがないのですが、チャンネル登録者数が1,000人以上いるので、結構人気のあるチャンネルだと感じています。初学者はなかなかこのチャンネルにたどり着けそうだなと思って紹介しました。文献紹介の動画がたくさん上がっていて、素晴らしいチャンネルだと思っています。初学者向きなのは「3年勉強会」だと思ってスライドにはそう書いています。

追記(2020/04/07):
2020年3月に研究室閉鎖とのことなので、おそらく今後の更新はないと思われます。チャンネル自体は残っており、動画の閲覧は可能です。

『言語処理のための機械学習入門』

books.rakuten.co.jp

口頭で紹介しました。研究室ゼミで3周しました。勉強しやすい良書ですが、数式に苦手意識があるとキツいかもと判断した上でスライドには載せていませんでした。

Kaggle

www.kaggle.com

Kaggle は、機械学習コンペティションのプラットフォームです。 Kaggleについては、以下のスライド資料の説明がわかりやすいと思います。

Kaggleは教材としてオススメしたというよりは、勉強を始めてどんどん実装して見たいとなった時に、挑戦する場としては良いと思うという話をしました。ほぼ口頭で話してしまったので、もう少しKaggle自体の説明やどうやって取り組めば良さそうかといったこともスライドに含めた方が良かったかもしれません。私はテーブルコンペにしかsubmitしたことがないNovice*1なので、これは私の経験に基づく提案ではありません。
発表数日前にちょうど目にした以下の転職エントリに感動して、どうしてもKaggleの話を入れたくなって入れました。

kaeru-nantoka.hatenablog.com

今の私から当時の私へ一言「この転職エントリ記事自体を紹介すべきだったと思う」

機械学習エンジニアになりたい人のための本』

books.rakuten.co.jp

実はこの登壇の前に読んだ本です。勉強教材ではなくて、タイトル通りどうやったら機械学習エンジニアになれるかという内容です。

おわりに

登壇した上で一番実感したことは、体験をともなわないアドバイスはできないということです。 また、勉強法はベースは変わらないにしろ、新しい本が出るのでどんどん読んでいかないと、比較した上でアドバイスをするのは難しいと感じました。 登壇駆動で何冊か新たに本を読んだので、良い機会になったと思います。 個人的には、今度はハンズオンをしてみたいなと思っています。まずはネタを考えるところからですけどね!

*1:Kaggleにはランクが5つあり、上からGrand Master, Master, Expert, Contributor, Noviceです。Competitions, Datasets, Kernels, Discussionそれぞれにおいてランクがつきます。