Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

DSOC R&Dにて4名の長期インターン生を受け入れました

こんにちは、DSOC R&Dグループ研究員の奥田です。学会原稿に追われて年末も会社に来て仕事をしていました。Sansanには休日出勤すると別日に休みを振替できる制度があるので、1月後半は少しのんびりしようと思います。

さて、昨年2019年の11月から12月にかけて、私が所属している部署であるDSOCにて4名の長期インターン生を受け入れましたので、その紹介をしたいと思います。

DSOC R&Dの長期インターンについて

DSOCでは2種類のインターンがあり、夏に短期集中で開催するサマーインターンシップと、不定期に受け入れている長期インターンに分けられます。サマーインターンシップが2週間の集中したプログラムなのに対し、長期インターンシップは学生の学業の都合に合わせて週2、3日程度で2ヶ月ほど実施する形となっています。長期インターンシップはその期間の中でR&Dの社員1名がメンターとなり、実際の業務内容に近いタスクに取り組んでもらいます。テーマは学生によって異なっており、それぞれ大学での研究内容や技術力等を考慮して割り当てています。

今回のインターンのテーマとしては、自然言語処理が3名、画像処理が1名となりました。この記事では、長期インターンにて取り組んでもらった内容とインターンの様子をお届けします。

続きを読む

Serverlessで始める新規サービスのおはなし

こんにちは。Sansan事業部プロダクト開発部でエンジニアをしている 黒澤です。

半年ほど前にSBBに寄稿させていただいたときは、新規事業の立ち上げをしていると書かせていただきましたが、 11月のサービス提供開始と共に、古巣であったSansanプロダクト開発部へと戻ってまいりました。
今回は、この新規事業として作っていた機能で Serverless な機能を作ってみたお話をさせていただこうかと思います。
buildersbox.corp-sansan.com

今となってはかなりServerlessでの事例も増えてきており、それほど目新しさはないのですが、Webエンジニアが、初めてServerlessを採用する際に考えた検討の過程をお伝えできれば幸いです。

はじめに

今回開発した新サービスですが、 「アンケート for セミナー」というサービスです。
これは、アンケートサービス、 CreativeSurvey と連携し、展示会やプライベートセミナーに来場頂いたお客様を対象としてWebアンケートを配信。 その回答結果を Sansanの名刺情報と共に管理することができ、オフラインマーケティングの効率的なデジタル化を目指しているものです。
creativesurvey.com


アンケートの作成、回収は CreativeSurvey を利用していますが、CreativeSurveyにて取得した回答データを 名刺データと共に参照させるためには、SansanへWebhookでデータを送信しています。
今回お話するのはこの Webhookの受信部分となります。

端的に言えば、 Webhookを受け取ってそれをDBに保存する機能です。

続きを読む

1/10 TECH PLAY イベント参加レポ

こんにちは。SansanでEightのEMをしている鈴木康寛です。 昨年まではCEMとして活動していましたがEightの体制が変わり、よりチームに近い領域で活動していくことになりました。今年もよろしくお願いいたします。 ということで、新年一発目の記事です。

techplay.jp

1/10にTECH PLAYさんで開催された、エンジニア組織デザインに関するイベントに参加してきました。そのレポートとなります。 弊社からは、Sansanプロダクト開発部のエンジニア組織と日々向き合っている谷内が登壇したのでその応援も兼ねて行ってまいりました。

イベントのコンセプトとしては、異なる組織規模で直面するエンジニア組織の課題にフォーカスし、10名・50名・100名規模の組織フェーズにいる3社がそれぞれに直面しているハードシングスについて発表し、参加者と共に咀嚼するというものです。

続きを読む

【Geek Seek Toolsで買われた、気になるモノ達】番外編「自費で購入した生産性向上グッズ」

はじめに

こんにちは。DSOC Data Direction Group でデータエンジニアをしている千葉祐大です。

冬も本番になり、空気も乾燥してきましたね。
僕も最近肌の乾燥が気になりつつあり、今までは化粧水を変えたり加湿器を導入したりと外部からのアプローチで対策していたのですが、そもそも体内の水分が不足していると肌も乾燥するという至極当たり前な情報を最近知りました。

ということで、年始からこまめな水分補給にハマっています。

もともとライフログ好きなので、早速 Apple Watch に WaterMinder というアプリを入れて、ウォーターボトルの水を飲み干すたびに記録しています。

アプリを入れておくと定期的に水を飲むよう通知が来るのと、Apple Watch からの記録操作がとてもしやすいので、かなりモチベーションは高まります。

体重のわずか数%の水分を失っただけでも頭痛や脱力感といった不調の原因になるらしいので、寒くて水分補給を怠りがちな冬にこそ、こまめな水分補給を心がけてください!

さて、この記事は弊社の社内制度である Geek Seek Tools *1で購入されたガジェットの中から、僕がイケてると感じたものを気の赴くままに紹介していく連載となっています。

今回は趣向を変えて Geek Seek Tools 制度で購入したい (けど、すでに上限に達してしまっているので自費で購入した) 生産性向上グッズを紹介する記事です。

日々、デスクワークの多い人には参考になると思うので、ぜひお読みください!

*1:生産性向上に資するガジェット・デバイスその他が購入しやすくなる制度。Geek Seek Tools の詳しい説明については第1回をご覧ください。

続きを読む

【ML Tech RPT. 】第14回 機械学習のモデルの評価方法 (Evaluation Metrics) を学ぶ (5)

f:id:ssatsuki040508:20181210005017p:plain
DSOC研究員の吉村です. 年末年始の連休で本をたくさん読むぞと意気込んだにも関わらず, 2.5冊しか読めなかった悔しさに苛まれております.

さて, 今回も前回に引き続き評価指標についてまとめていきます. 特に, ランキング学習の出力結果を評価する際に用いられる指標について見ていきましょう. マルチラベル分類の文脈における, ランキング学習の出力結果の評価指標の一部については, 前回の記事で紹介しておりますので, そちらも読んでいただけると嬉しいです.

ランキング学習の精度評価

ランキング学習とは, 対象物の順序を予測するように学習する問題です. マルチラベル分類の予測時に各ラベルの信頼度を計算するようなモデルを用いる場合には, その信頼度の大小によって順位付けができるため, マルチラベル分類とも関係の深い問題設定です. そのため, ランキング学習の評価指標がマルチラベル分類の予測結果の評価に使われることも度々あります.

今回は, ランキング学習の評価指標として下記の 7 個を紹介します.

  • Discounted Cumulative Gain (DCG) [*1, *2]
  • normalized Discounted Cumulative Gain (nDCG)
  • Mean Reciprocal Rank (MRR)
  • Kendall rank correlation coefficient, Kendall's  \tau
  • Spearman's rank correlation coefficient, Spearman's  \rho
  • Yandex's pFound [*3, *4]
  • Expected Reciprocal Rank (ERR) [*5]

ただし, 今回はランキング学習の評価指標という意味の中に, なんらかのモデルの出力として得られるランキング結果の性能を評価するというかなり広義の意味を含めています. そのため, ここで紹介する各種指標は何が与えられているか (e.g. 真のラベル, 真のランキングなど) によって, 使えるものが異なることに注意してください. また, ランキングを扱うという点で Information Retrieval (IR) の色が強いため, 今回は並べ換える対象のことをドキュメントと呼ぶことにします. この部分は適宜, 並べ換えるアイテムとして読み替えてもらえるといいかと思います.

*1:K. Järvelin, and J. Kekäläinen, "Cumulated gain-based evaluation of IR techniques," in TOIS, 2002.

*2:C. Burges, T. Shaked, E. Renshaw, A. Lazier, M. Deeds, N. Hamilton, and G. Hullender, "Learning to rank using gradient descent," in ICML, 2005.

*3:A. Gulin, P. Karpovich, D. Raskovalov, and I. Segalovich, "Yandex at romip’2009: Optimization of ranking algorithms by machine learning methods," in ROMIP, 2009.

*4:I. Segalovich, "Machine learning in search quality at yandex," in SIGIR, 2010.

*5:O. Chapelle, D. Metzler, Y. Zhang, and P. Grinspan, "Expected Reciprocal Rank for Graded Relevance", in CIKM, 2009

続きを読む

Podcast #7 Engineering Management & Coaching

人事部 高橋 です。

今回の Podcast ではSansan事業部プロダクト開発部 組織デザイングループの谷内をゲストに迎えました。

当社のエンジニアリングマネジメントへの取り組みとして、ピープルマネジメントやコーチング、1on1の話をしてもらいました。

soundcloud.com

どんな取り組みをしているかがわかる、ものすごく良い内容になったんじゃないかなと思います🙂

続きを読む

【Techの道も一歩から】第24回「高速かつ省メモリな辞書ライクなライブラリDAWG」

f:id:s_yuka:20190621163804j:plain

こんにちは。 DSOC R&D グループの高橋寛治です。

Pythonの辞書オブジェクトは取り扱いやすいため、単語とIDの変換テーブルを作ったり、複合語の結合のためにデータ構造を工夫して簡易なトライ木を構築したりと、自分でコーディングすることがあるかと思います。

上記の場合は、ライブラリDAWGを使うことで省メモリかつ高速に、さらにできることが増えるかもしれません。 今回はそんな便利なライブラリの紹介をします。

辞書ライクなライブラリDAWG

DAWGはDirected Acyclic Word Graphのそれぞれの頭文字をとったものです。 日本語だと有向無閉路単語グラフでしょうか。

英語のWikipediaのページに少し詳しい説明があります。 トライ木に比べて、頂点の数がかなり少なくなるデータ構造であることが特徴のようです。

利用者側としては、省メモリかつ高速に辞書引きや共通接頭辞検索ができるライブラリであるということを押さえておくといいかと思います。

共通接頭辞検索とは、共通の接頭辞を持つキーを見つける検索のことです。 かな漢字変換システムにおける、かなと漢字の対応表を見つける箇所での利用がわかりやすい例です。 「きょういく」というかなを漢字に変換する場合を考えます。候補は「き」「きょ」「きょう」「きょうい」「きょういく」となり、それぞれに対応する漢字があります。 「きょう」で候補を定めたとすると、次は「いく」に対して「い」「いく」に対応する漢字をまた引きます。 このように共通の接頭辞に対して候補を高速に引くことがき、なおかつ省メモリで保持することができます。

DAWGのPython実装の公式ドキュメントはこちらです。 インストールは pip install DAWG で完了します。

公式ドキュメントのUsageに書いているDAWGクラスを簡単に紹介します。

  • dawg.DAWG : ユニコード文字のキーを保持し、検索が可能です
    • dawg.CompletionDAWG : dawg.DAWG のサブクラスであり、共通接頭辞検索などが可能です
      • dawg.BytesDAWG : dawg.CompletionDAWG のサブクラスであり、ユニコード文字のキーに対してbytesオブジェクトのリストを対応させます
        • dawg.RecordDAWG : dawg.BytesDAWG のサブクラスであり、 Pythonのstructでパッキングされたデータをユニコード文字のキーに対応させます
      • dawg.IntCompletionDAWG : dawg.CompletionDAWG のサブクラスであり、ユニコード文字のキーに対して、数値を対応付けます
    • dawg.IntDAWG : dawg.DAWG のサブクラスであり、ユニコード文字のキーに対して、数値を対応づけます
続きを読む

© Sansan, Inc.