Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データ⼊⼒の⾃動化率向上のための取り組み / Efforts to improve the rate of automatic data entry

Sansan R&D
November 10, 2023

データ⼊⼒の⾃動化率向上のための取り組み / Efforts to improve the rate of automatic data entry

■イベント: Sansan R&D TECH SHOWCASE -ビジネスをドライブするR&Dのウラガワ大公開-
https://sansan.connpass.com/event/299113/

■登壇概要
タイトル: データ⼊⼒の⾃動化率向上のための取り組み
発表者: 技術本部 研究開発部 Data Analysisグループ 齋藤 慎一朗

◉ 研究開発職 採用情報
https://media.sansan-engineering.com/randd

◉ Sansan Tech Blog
https://buildersbox.corp-sansan.com/

Sansan R&D

November 10, 2023
Tweet

More Decks by Sansan R&D

Other Decks in Technology

Transcript

  1. これまでの取り組み概要 - 抽出性能の改善 - A/Bテスト施策 - ニュース提供機能の改善 - 同じニュースを配信しないための仕組みの速度改善 -

    配信のパーソナライズ - ニュースフィルタリングの性能向上 社内 - R&DにおけるPythonの統⼀的な開発⽅針の策定・浸透
  2. 概要 ⽬的 - ⼊⼒対象のデータかどうかの判断にオペレータのコストがかかっており、コスト削減を⾏う 取り組み - 検討 - 何を解くべきか整理し、機械学習などで解く価値のある問題に落とし込んだ -

    分析 - データの理解、エラー分析を⾏い、リリース可能な精度のモデルを構築した - モデル開発・機能提供 - モデル開発、API実装、バッチ処理実装、デプロイを実施した 結果 - ⾃動化率向上に成功し、数千万円/年の削減に繋げた。デプロイされ現在も運⽤中である 事例紹介 ~⾃動化率改善のための取り組み~
  3. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  4. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  5. 必要性能、メリット整理 事例紹介 ~⾃動化率改善のための取り組み~ - 考慮すべき性能 - ⽬標とする性能の決定 精度 正しい予測を⾏った数 /

    予測を出⼒した数 予測を出⼒した数 / 対象となるデータ全体 ⾃動化率 エンジニア、データ⼊⼒をマネジメントするメンバーと打ち合わせを重ね、必要性能を決定。 既存モデルに対して、どの程度⾃動化率が向上するかをR&Dメンバー内で打ち合わせを⾏い、 ⽬標とする⾃動化率を決定。 精度 ⾃動化率 ⁃ ビジネス的メリット ⁃ 仮に⽬標とした⾃動化率向上を達成した場合のメリットを下記のように算出 ⁃ 数千万円/年の費⽤削減
  6. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  7. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  8. アルゴリズム検討 - 検討内容 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 回答の1つとして、機械の出⼒を⽤いることが可能かを検討 - 最低でも1つは⼈間の回答が含まれる -

    ⼗分⾼い精度が求められるが、⼈間とマッチしない限りは採⽤されない - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 機械の出⼒を2マッチとして⽤いることが可能かを検討 - ⼈間の確認が含まれず、機械の出⼒1発で確定される(=1発確定) - ミスをしないアルゴリズムが求められる 事例紹介 ~⾃動化率改善のための取り組み~
  9. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  10. アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - まずはベースラインの作成 - タスク - 5class分類、3calss分類 - 不均衡データ

    - ⼿法 - 単語の数え上げを特徴量とし、Naive Bayes - 性能 - 必要と定義した精度から-5%ポイント⾜りず - 性能改善のループへ 事例紹介 ~⾃動化率改善のための取り組み~
  11. アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 事例紹介 ~⾃動化率改善のための取り組み~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算)

    多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、 ルールベースで予測対象から除外 -0.5 -8 再度エラー分析を⾏い、予測対象から除外する条件を厳しくす る +0.5 ±0 😊 無事⽬標達成🎉
  12. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  13. 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 流れは「アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討」と同様 - 下記のような仕組みを検討 - ルールベース - 単語レベルでのマッチング

    - BERTモデル - 1発確定を⾏うための厳しい精度要件を突破するための⽅法を模索 - 結果として、ルールベースが最も性能が良かった 事例紹介 ~⾃動化率改善のための取り組み~
  14. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  15. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~
  16. モデル開発・機能提供のための開発 - 下記⼯程を約1カ⽉半かけて実施 - FastAPI を⽤いた API 機能の実装 - Python

    を⽤いた⾔語モデルの実装 - Gokart (パイプラインのライブラリ)によるバッチ処理の実装 - GitHub による Pull Request, Review 対応 - Google App Engine を⽤いたデプロイ - 個⼈的に⼯夫した点 - GitHub ActionsによるPull Requestの⾃動指摘にflake8, black, mypyを追加し、Pythonコードの 品質を担保 - 特にmypyの指摘対応が慣れるまでは⼤変・・・ - 似た予測対象が2つあるため、それぞれの予測対象ごとにclassを⽤意し、異なる対象を予測し た場合にエラーを出⼒するよう実装 - 予測対象に応じてclassを分け、runtime_checkableを⽤いて専⽤メソッドが存在するか 確認 事例紹介 ~⾃動化率改善のための取り組み~
  17. PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 -

    2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~