Slide 1

Slide 1 text

Sansan における研究開発組織と その取り組み事例紹介 Sansan株式会社 技術本部 研究開発部 ⿊⽊、齋藤 2022/04/28

Slide 2

Slide 2 text

⾃⼰紹介 ⿊⽊ 裕鷹 Yutaka Kuroki Sansan株式会社 技術本部 研究開発部 Data Analysis Group 研究員 プロダクト戦略室 兼務 ● 2020年4⽉⼊社 ● 4/17の⻑野マラソンに出場 (3:58:25) ● 時系列やネットワークデータの分析に従事 Twitter @kur0cky_y Virtual Card

Slide 3

Slide 3 text

会社紹介 Company Profile

Slide 4

Slide 4 text

会社概要 社 名 Sansan株式会社 所在地 表参道本社 東京都渋⾕区神宮前5-52-2 ⻘⼭オーバルビル13F グループ会社 Sansan Global Pte. LTD.(シンガポール) Sansan Corporation(アメリカ) ログミー株式会社 従業員数 1086名(2022年2⽉28⽇時点) うち、エンジニア職・研究開発職が約30% 表参道本社 神⼭ラボ Sansan Innovation Lab 2007年6⽉11⽇ 設⽴ ⽀店:関⻄、中部、福岡 サテライトオフィス:徳島、京都、福岡、北海道、新潟 拠点 寺⽥ 親弘 代表者

Slide 5

Slide 5 text

Company Profile 主要なBtoBサービス(マルチプロダクト) ピアボーナスサービス 請求書受領から、月次決算を加速する スマート受付 無人名刺受付システム イベント・セミナー 請求書 契約書 組織コミュニケーション 全文書き起こしメディア 新世代エントリーフォーム セミナー管理から、営業を強くする 名刺作成から、働き方をアップデートする 名刺・顧客データ 名刺作成・発注 営業を強くするデータベース 契約業務のDXから、リスクを管理する 新世代パンフレット

Slide 6

Slide 6 text

Company Profile Eightをプラットフォームとした事業 キャリアプロフィール 個⼈向け有料プラン 広告サービス ビジネスイベント プロフェッショナルリクルーティング 中⼩企業向け名刺管理サービス

Slide 7

Slide 7 text

研究開発部の紹介

Slide 8

Slide 8 text

Company Profile 職種(Sansan株式会社 全体の割合) 65% 2021年7⽉時点 対象:正社員・契約社員 エンジニア職 27% クリエイティブ職 総合職 5% 研究開発職 (約40名) 3%

Slide 9

Slide 9 text

Company Profile 組織構成の概要 PR、クリエイティブ統括 など ⼈事、総務・法務、財務・経理、オフィス戦略 など ブランディング部⾨ コーポレート部⾨ 事業戦略の統括 ビジネス統括本部 技術・データ戦略の統括 技術本部 マーケティング、 インサイドセールス、営業、 カスタマーサクセス など エンジニア、研究開発(R&D)、 システム管理、CSIRT など 各プロダクト戦略の統括 Product Manager、 Product Marketing Manager、 デザイナ など プロダクト組織

Slide 10

Slide 10 text

Company Profile 技術本部 技術本部 Sansan Engineering Unit Eight Engineering Unit 名刺メーカー Engineering グループ Contract One Engineering グループ Data Hub Engineering グループ コーポレートシステム部 Seminar One Engineering グループ Digitization部 研究開発部(R&D) データ戦略室 New Business Engineering グループ CSIRT グループ VPoE室 Brand Strategy グループ Quality Assurance グループ Mobile Application グループ Bill One Engineering Unit インフラ戦略部

Slide 11

Slide 11 text

研究開発部の4つのグループ Automation Data Analysis SocSci Architect 画像処理などの技術を⽤いて、名刺やビ ジネス⽂書といった⾮定型でアナログな 情報のデータ化を効率化・⾃動化する技 術の研究開発に取り組む。これまでにな い速度と100%に近い精度、セキュリテ ィーの確保を追求。 機械学習や⾃然⾔語処理を⽤いて、多様 なビジネスデータを収集・解析する。レ コメンデーションエンジンやニュース配 信エンジンなど、広いデータ分析・機械 学習タスクに取り組む。 社会科学の各領域を専攻するメンバーで 構成。「リアルとバーチャルのはざまで、 社会理論を武器に名刺交換の価値を拡張 する」をミッションとして掲げ、研究を 通して得られた知⾒や成果を事業やサー ビス、社会へと還元することに取り組む。 また、外部有識者との共同研究も積極的 に⾏う。 「研究開発部が提供するサービスに責任 を持つ」をミッションとして掲げ、サー ビスの可⽤性、拡張性、保守性の担保に 取り組む。また、研究開発部の開発⽣産 性に向き合いながら、データ基盤の整備、 データの品質、データの取り扱いにおけ る安全性の担保にも取り組む。 OCR・画像処理・超解像 機械学習全般・⾃然⾔語処理 社会科学・プロダクト開発・効果検証 DevOps・MLOps・データ分析基盤 • 名刺・ビジネス⽂書に特化したOCR の開発 • フォント推定と名刺作成の⽀援 • 名刺画像のホワイトニングや超解像 • 固有表現抽出 • pdf ⽂書の解析 • ニュース配信エンジンの開発 • データ化需要の予測 • 潜在的な課題の発掘 • 新規プロダクト・アイデア創出 • BtoB マーケティングの研究 • ネットワーク分析⼿法の開発 • その他基礎研究 • 統合データ基盤の開発 • MLパイプラインの設計 • 各種バッチ処理の設計・開発

Slide 12

Slide 12 text

プロダクト組織や新規事業開発室との連携を強化 12 プロダクト組織と兼務する体制を 構築し、プロダクト志向を強化 プロダクトマネジャーとR&Dが 密にコミュニケーションをとる体制 新規事業開発室との連携により、 新規プロダクトを⾼速で仮説検証する 取り組みを開始 プロダクト組織 新規事業開発室 R&D データ分析・研究開発 (画像処理/機械学習・AI)

Slide 13

Slide 13 text

研究開発部のカルチャー

Slide 14

Slide 14 text

研究開発部が⽬指しているところ: 10x 3倍 程度 ⽣産性 3倍 程度 ⼈数 10x (5年で10倍規模の成果を実現する!) 10年後 に 100倍規模 の成果

Slide 15

Slide 15 text

- OKRの運⽤ - ボトムアップで作成 - 野⼼的なOKRとコミットするOKR - 誰が⾒ても理解できワクワクする⽂⾔で、定量化できるOKRづくり - スモールチーム体制 - 4つのグループをさらに8つのチームに - ピープルマネジメントのコスト削減(より深く密に) - リーダーになる機会の創出 - 透明性のあるプロジェクト管理 - Jiraのカンバン/ボードを集約して、誰が何をやってるかわかる状態に - サイロ化を防ぎ、進捗を可視化 詳しくは https://speakerdeck.com/sansanbuildersbox/management-of-r-and-d-organization ⽣産性向上と育成のための3つの取り組み

Slide 16

Slide 16 text

- OKR 進捗会議 - 部⻑へ2週間に⼀度、進捗状況のみをクイックに共有 - Monthly Review - チームごとに⽉⼀回部⻑へ取り組み状況を共有 - 誰でもどのチームのMonthly Reviewに出ることができる - テックトーク(他部署からの参加歓迎!) - 週1回、有志で各⾃取り組んでいることや技術紹介のLTをしている - 論⽂読み会 - 2週間に1度、有志で読んだ論⽂の内容を共有する - 勉強会 - ⽉に1回、持ち回りで各⾃取り組んでいることや技術紹介のLTをしている 定期開催イベント

Slide 17

Slide 17 text

分野 - ML,CV,NLP,経済学,経営学,社会学,etc… 取り組み - コア技術の開発(OCR,NLP),A/Bテストの⽀援,各種予測タスク, データマイニング,論⽂執筆,etc… プロダクト・事業部との関わり - 特定のプロダクトにべったり,得意なタスクを活かしプロジェクトごとに関わる,etc… 開発 - プロダクトまで⼀貫して開発 ~ 簡単なデモまで作成しエンジニアに連携 基礎研究 - やる ~ やらない 研究員の様々なタイプ

Slide 18

Slide 18 text

> 候補者検索の刷新 (Eight Career Design) - elasticsearch への移⾏にともなうアルゴリズム設計 - オートコンプリート機能の開発 - 類似した企業を検索する機能の開発 > 転職市場の分析 - サイエンスレポートの執筆(転職市場のトレンド分析) > 分析コンペ(atmaCup #6)のタスク設計 > 既存予測モデルの改修 > 候補者・求⼈を表すタグの設計と⾃動付与の検討 (Eight Career Design) > データ化需要予測モデルの開発 (Bill One) > 学会3本(共著)、論⽂1本(筆頭) > 外部(⼤学)との共同研究 > プロダクト戦略室を兼務.新規事業の実現可能性を検討 発表者の場合はどうなのよ 1年⽬ 2年⽬ そのほか.勉強会への登壇や技術ブログの執筆など https://buildersbox.corp-sansan.com/

Slide 19

Slide 19 text

Sansan研究員の働き⽅(齋藤)

Slide 20

Slide 20 text

⾃⼰紹介 東北⼤学⼤学院⼯学研究科博⼠前期課程修了。⽇系SIer や外資系IT企業で、電⼒・保険・製薬など多様な業界に 対する、機械学習を⽤いたシステムの提案やPoC・開 発・保守運⽤に従事。現在は契約書データの⽂字認識に 関する研究開発を担当。Kaggle Expert。 齋藤 慎⼀朗 Shinichiro Saito 研究員 Twitter @sinchir0 Virtual Card

Slide 21

Slide 21 text

これまでの取り組み概要 - 抽出性能の改善 - A/Bテスト施策 - ニュース提供機能の改善 - 同じニュースを配信しないための仕組みの速度改善 - 配信のパーソナライズ - ニュースフィルタリングの性能向上 社内 - R&DにおけるPythonの統⼀的な開発⽅針の策定・浸透

Slide 22

Slide 22 text

概要 ⽬的 - ⼊⼒対象のデータかどうかの判断にオペレータのコストがかかっており、コスト削減を⾏う 取り組み - 検討からリリースまで⼀貫して担当 - 検討 - 何を解くべきか整理し、機械学習で解く価値のある問題に落とし込んだ - 分析 - データの理解、エラー分析を⾏い、リリース可能な精度のモデルを構築した - モデル開発・機能提供 - モデル開発、API実装、バッチ処理実装、デプロイを実施 結果 - ⾃動化率向上に成功し、約20万円/⽉の削減に繋げた。デプロイされ現在も運⽤中 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 23

Slide 23 text

PJの進め⽅ - 必要性能、メリット整理 - 分析、精度・⾃動化率向上 - モデル開発・機能提供のための開発 - リリース後の経過観察 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 24

Slide 24 text

PJの進め⽅ - 必要性能、メリット整理 - 分析、精度・⾃動化率の向上 - モデル開発・機能提供のための開発 - リリース後の経過観察 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 25

Slide 25 text

必要性能、メリット整理 考慮した性能⼀覧 - 精度 - ⾃動化率 精度 - エンジニア、データ⼊⼒をマネジメントするメンバーと打ち合わせを重ね、 必要性能を⼈と同様の精度と決定 ⾃動化率 - 既存モデルに対して、どの程度⾃動化率が向上するかをR&Dメンバー内で打ち合わせを⾏い、 ⽬標とする⾃動化率を決定 ビジネス的メリット - 仮に⽬標とした⾃動化率向上を達成した場合のメリットを下記のように算出 - 約20万/⽉の費⽤削減 - 約190h/⽉のデータ⼊⼒⼯数の削減 - 実施する価値はあると判断 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 26

Slide 26 text

PJの進め⽅ - 必要性能、メリット整理 - 分析、精度・⾃動化率の向上 - モデル開発・機能提供のための開発 - リリース後の経過観察 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 27

Slide 27 text

分析、精度・⾃動化率の向上 - 単語の数え上げを特徴量とし、Naive Bayesを⽤いたベースライン - 予測対象は2つ(5class分類と3calss分類)、不均衡データ - 必要と定義した精度から-5%ポイント⾜りず - 予測対象を限定する⽅針へ 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 28

Slide 28 text

分析、精度・⾃動化率の向上 - 精度と⾃動化率の定義 - 精度 = 正しい予測を⾏った数 / 予測を出⼒した数 - ⾃動化率 = 予測を出⼒した数 / 対象となるデータ全体 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 29

Slide 29 text

分析、精度・⾃動化率の向上 事例紹介 ~データ⼊⼒の⾃動化率向上~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 ⾃動化率は減らしてもいいから、精度が上がる⽅法を検討しよう! 🙂

Slide 30

Slide 30 text

分析、精度・⾃動化率の向上 事例紹介 ~データ⼊⼒の⾃動化率向上~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、 ルールベースで予測対象から除外 -0.5 -8 精度はかなり上がったけど、⾃動化率が下がりすぎた・・・。もっと除外する対象を 限定できるルールを探さなければ! 🤔

Slide 31

Slide 31 text

分析、精度・⾃動化率の向上 事例紹介 ~データ⼊⼒の⾃動化率向上~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、 ルールベースで予測対象から除外 -0.5 -8 再度エラー分析を⾏い、予測対象から除外する条件を厳しくす る +0.5 ±0 無事⽬標達成 🎉 😊

Slide 32

Slide 32 text

PJの進め⽅ - 必要性能、メリット整理 - 分析、精度・⾃動化率向上 - モデル開発・機能提供のための開発 - リリース後の経過観察 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 33

Slide 33 text

モデル開発・機能提供のための開発 - 下記⼯程を約1カ⽉半かけて実施 - FastAPI を⽤いた API 機能の実装 - Python を⽤いた⾔語モデルの実装 - Gokart (MLOpsパイプライン)によるバッチ処理の実装 - GitHub による Pull Request, Review 対応 - Google App Engine を⽤いたデプロイ - 個⼈的に⼯夫した点 - GitHub ActionsによるPull Requestの指摘にflake8, black, mypyを追加し、Pythonコードの品質を 担保 - 特にmypyの指摘対応が慣れるまでは⼤変・・・ - 似た予測対象が2つあるため、それぞれの予測対象ごとにclassを⽤意し、異なる対象を予測した 場合にエラーを出⼒するよう実装 - 予測対象に応じてclassを分け、runtime_checkableを⽤いて専⽤メソッドが存在するか確認 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 34

Slide 34 text

PJの進め⽅ - 必要性能、メリット整理 - 分析、精度向上 - モデル開発・機能提供のための開発 - リリース後の経過観察 事例紹介 ~データ⼊⼒の⾃動化率向上~

Slide 35

Slide 35 text

リリース後の経過観察 - リリース後の⾃動化率向上を確認 - 精度の監視を継続して実施 事例紹介 ~データ⼊⼒の⾃動化率向上~ リリース🎉 ⾃動化率向上

Slide 36

Slide 36 text

Weare hiring! 募集職種⼀覧は こちら 「もう少し話を聞いてみたい」 という⽅へ カジュアル⾯談を受け付けています