フォルシア サマーインターン 自然言語処理コースに参加しました！

先日、8/29~9/2までの5日間行われた[フォルシア株式会社](https://www.forcia.com/)の[Summer Internship 2022](https://www.forcia.com/jobs/summerinternship2022/index.html)に参加してきました。インターンとしての期間は短めですが、自分にとってとても濃密で有意義な体験だったので、備忘録として、また来年以降に参加する方の参考になればと思い、体験記を綴ってみようと思います。

## 参加のきっかけ
修士1年になると、周りの人たちの間でやれ就活だ、インターンだ...という機運が高まってきます。そんな中、たまたま同級生から[魔法のスプレッドシート](https://twitter.com/shota_kizawa/status/1512365580858576901)なるものを教えてもらい、ここでフォルシアのインターンを知りました。自然言語処理の知見がある人におすすめ...みたいなインターンはそれなりにあるのですが、「自然言語処理コース」で1個枠を取っているものは珍しかったので興味を持ち(給与が5日で10万円、交通費中食費宿泊費支給という太っ腹さにも惹かれ)、応募することになりました。

選考の内容はES審査とオンライン面接での審査です。面接では幸い「あなたを動物に例えると？」「このペンを私に売ってください」みたいなフワッとした質問とかはなく、ちゃんと自分の研究や開発経験など技術系の内容を尋ねられました。質問の時間に聞いてみたところどうやら80人近くの応募があったようで、自分のようなNLPの勉強始めたてのペーペーがこの狭き門を潜り抜けられるのかと不安でしたが、無事選考に通る事が出来ました。

## インターン全体の流れ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834675/0b5d0347-843e-a7ce-072c-17c9eef275f8.jpeg" width=100%>

オフィスはJR新宿駅直結の新宿ミライナタワーというビルの13階にあり、駅を降りてすぐなのでアクセスが最高に良くて、仕事場から新宿の全景を一望できます。スカイツリーや新宿御苑、遠くの方に東京タワーが見えたりと景色もまあ素晴らしく(特に夜景は得も言われぬほどエモい)、目の保養になりました。自分は田舎民で東京に来た経験も少なく、よく休憩室でウキウキしながら外を眺めていたので社員さんから怪しがられていたかもしれません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834675/399339e9-6626-606e-8637-a037ddaffa2a.jpeg" width=49%> 
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/834675/eb710b24-f2c9-fd55-19ec-d9dc5028971a.jpeg" width=49%> 

インターンの期間は5日間で、初日は書類の手続きとkick-off meetingを終えてランチを食べた後、午後から実務が始まります。同ターム中に来ていたあと３人のインターン生はみんな某有名な旧帝大・女子大の学生で初日から恐れ慄きましたが早めに打ち解けられました。3日目に中間発表(資料は作らなくていい)、最終日に最終発表会があり、作業にあたれた時間は実質3日半くらいでした。

## 業務内容
自然言語処理コースの内容はフォルシアが開発している**toB向け検索サービスに関する辞書改善**というもの。このサービスは専門性の高い文書が検索対象となっており、化学とか栄養学周りの専門用語が予め検索クエリとして用意されています。このクエリ内容を網羅した辞書データが用意されており、実際にこのサービスを使いながら自分で改良案を考え、既にある辞書を改良したり、新機能を実装するための新しい辞書を構築するといった課題を与えられました。

課題の内容としては、いかにNLPの技術を使うかという以前に、どんな改良案を提案するかという点に対する比重が大きかった印象です。私は何時間を頭を悩ませながらも初日で大まかな内容と実装法の案を決めてしまいましたが、メンターさんによるとこれに2日くらいかかる想定だったとのこと。<!--論文を書いたりハッカソンに取り組む時もそうですが、実務ではまず現時点でどんな問題が存在していて、どういう手法で解決策が見出せるのかという1本の道筋を見出すことが大切なようです。-->

技術的にはBERTの事前学習済みモデルでテキストをベクトル化しつつ類似度の比較やらクラスタリングをしてみたり、日本語WordNetというデータセットを使ってみたりしました。今回考えた改良案では何らかのモデルを一からトレーニングしたり大規模なコーディングをする必要性はなかったので、大きく実装に詰まることもなく、割とスムーズに作業を進める事が出来ました。むしろあまり高度なことをしなかったので本当にこのレベルで大丈夫なんだろうかと心配しながら作業していましたが、最終的にはそれなりに良い精度の結果を得ることができました。

最終日に軽いコードの整理をした後、スライドを作成して最終発表に臨みました。急ぎで作った資料で、練習する時間もなく、発表順が一発目だったためまあまあ緊張しましたが、結果的には皆さんからお褒めの言葉をたくさん頂くことができました。他のインターン生も各々短時間で上手く構成をまとめ上げて発表しており、感心しました。発表後は聴講した社員の皆さんからのフィードバックコメントを紙面上にまとめてプレゼントしていただきました。自分が頑張った点(スライドの構成や説明の仕方)を誉めていただいたり、改善できる点を優しく伝えていただけたので、とても有り難かったです。

## その他の時間
毎日ランチの後に座談会というインターン生２人と社員さん２人でトークする時間が設けられており、お互いのこれまでの経歴を話したり、フォルシアでの仕事についての踏み込んだ話を聞くことができました。

２日目の夜にはボードゲーム会が開かれ、たくさんの社員さんたちと和気藹々と交流しました。[「ito」というゲーム](https://nicobodo.com/archives/ito.html)をやった時は、「強い数式や公理」というお題が出たのですが、社員さんもインターン生も男女問わずみんな理系(数学科卒の社員さんが多いらしい)なのでオイラーの公式やド・モルガンの定理、フェルマーの小定理の中でどれが一番影響力が高いかみたいな理系トークが白熱して予想外に盛り上がりました。楽しかった...。あと語彙力を使う系のボドゲで善戦すると「さすが自然言語処理コース！」みたいな感じで弄られるので来年以降の参加者は覚悟してください。

## 感想
5日間通してタイムスケジュールが段取り良く組んでいただいたので作業を進める上での時間の管理がしやすく、また、わからないことを質問したりフィードバックを受けたりしやすい環境を用意していただきました。また、社員の皆さんはよく作業を行う上で困っていることや改善できる点がないかなど確認されていて、このインターンシップの質を上げることに相当注力していらっしゃることが伝わってきました。

自分にとってとても実りのある時間を過ごすことができた、あっという間の5日間でした。フォルシアの社員の皆さん、本当にありがとうございました。