「言語処理100本ノック勉強会」こんにちは。R&Dグループの高橋寛治です。「新卒R&D研究員によるテックレポート」というテーマで、これから連載を担当することとなりました。自然言語処理の研究に取り組んでいました。Sansanには2017年4月に新卒入社し、大学・大学院で学んだ技術を生かした研究開発に取り組んでいます。本連載では、Sansanに関係する技術イベントや勉強会などについて、自分なりの視点から紹介したいと思っています。記念すべき第1回目は、私が主催している勉強会「言語処理100本ノック勉強会」についてお伝えします。スタンディングで作業していることが多いです。人が使う自然言語をコンピュータ処理することです。機械翻訳やかな漢字変換には自然言語処理技術が使われています。Pythonやシェルは自然言語処理に取り組む上で、重要な技術となります。これらを勉強することで、自然言語処理に取り組むことができるようになります。ここで一つ、社内制度の紹介となりますが、実は社内のエンジニア同士がイベントを実施する場合、Sansanでは一人当たり1000円を上限にした費用補助がなされます。この制度を活用し、社内ではお昼休みに昼食を食べながらの勉強会や意見交換会が盛んに行われています。それでは、実際にこの勉強会でどういったことをしているのか、ご紹介したいと思います。モグモグモクモクコーディングお弁当をモグモグと食べながら、100本ノックの課題にモクモクと挑戦します。下の写真をご覧ください。みなさん真剣なまなざしで、パソコンに向き合って課題を解いています。今回の取り組んでいる課題は、「UNIXコマンドの基礎」という題目で、ある処理をPythonおよびUnixコマンドにより実現します。思われた方も多いかもしれませんが、それに関しては、後ほど技術小話で言及します。課題に真剣に取り組むメンバー。各部署からテーマに興味のある人が集まります。お披露目レビューモクモクとコーディングを45分ほどした後、みんなで自分の書いたコードを見せ合い、互いにレビューします。いうような気付きを得て、互いにコーディング力を刺激し合います。以下は、勉強会参加者が書いたコード例です。このように記録を残すことで、それぞれの成長が実感できます。コード1コード2コード3技術小話Unixコマンドは便利なんです自然言語処理では、単語の頻度や種類数を数え上げたり、置換したりする機会が非常に多くあります。それをプログラミング言語で実現することも可能ですが、いちいちプログラムを書くことは意外と時間を要するものです。そんなとき、実はUnixコマンドを用いると、なんとたったの1行で終わることもあるのです。Unixコマンドに興味が湧いてきたのではないでしょうか?いくつか例を挙げてみましょう。Pythonだと以下のように書けるかと思います。number_of_linesどれも数え上げることができますが、line_count1メソッドの場合は、小さいサイズのテキストであれば大丈夫ですが、大きいサイズになるとfin.readlines()が実行された際に、多くのメモリーを消費します。line_count2ですと、iterableにlenが評価されますが、多少のメモリー消費があります。line_count3は、メモリー消費が少ないですが、書くコードが多少増えます。ここで、Unixコマンドを用いると以下の1行で終わります。メモリー消費量は、line_count3の半分ほど(約18MB)です。./hightemp.txt・・・たったのこれだけで実現できてしまいます。した実装であるため、メモリーの利用率なども考える必要がありません。本連載では、このようなイベントや勉強会を紹介しつつも、少し技術に踏み込んだ話も併せて書いていきたいと思っています。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。現在はキーワード抽出など自然言語処理を活かした研究に取り組んでいる。Members誰も思いつかないやり方を考え抜く。Sansanエンジニアであることの面白さ。