$30 off During Our Annual Pro Sale. View Details »

データ⼊⼒の⾃動化率向上のための取り組み / 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. データ⼊⼒の
    ⾃動化率向上のための取り組み
    Sansan株式会社
    研究開発部 齋藤慎⼀朗
    Sansan R&D TECH SHOWCASE

    View Slide

  2. 写真が入ります
    齋藤 慎⼀朗
    研究員
    東北⼤学⼤学院⼯学研究科博⼠前期課程修了。⽇系
    SIerや外資系IT企業で、電⼒・保険・製薬など多様
    な業界に対する、機械学習を⽤いたシステムの提案
    やPoC・開発・保守運⽤に従事。現在は請求書デー
    タや企業情報の分析を担当。Kaggle Expert。
    X(旧Twitter) @sinchir0 Virtual Card

    View Slide

  3. - 研究員がどのようにPJを進めているかを理解してもらう。
    - ビジネス的なインパクトの⼤きさ、リリースまでの流れ、
    当⽇のワクワクと不安な気持ちを臨場感を持って伝える。
    本発表の⽬的

    View Slide

  4. Sansanのプロダクト
    経理DX
    法務DX
    営業を強くするデータベース
    営業DXサービス
    請求書受領から、⽉次決算を加速する
    インボイス管理サービス
    契約データベースから、収益を最⼤化する
    契約データベース
    営業DX
    名刺DX
    タッチで交換。スマートに管理。
    名刺アプリ

    View Slide

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

    View Slide

  6. Sansanの⾃動化の仕組み
    競合他社の追随を許さないアナログ情報のデータ化オペレーションを確⽴している。
    テクノロジーの組み合わせ
    ⼤量のアナログ情報 ⼈:⼿⼊⼒
    AI:⼊⼒ ⼈:チェック データベース化
    ⼤量のアナログ情報を、迅速かつ正確にデータ化
    創業以来、⻑年のサイクル
    項⽬の⾃動判別・
    マイクロタスク化
    ⾔語の⾃動判定
    分散化された⼊⼒
    オペレーターネットワーク
    画像処理技術
    オペレーターへの
    ⾃動振分け
    アナログ情報画像の⾃動解析と⼊⼒

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 必要性能、メリット整理
    事例紹介 ~⾃動化率改善のための取り組み~
    - 考慮すべき性能
    - ⽬標とする性能の決定
    精度 正しい予測を⾏った数 / 予測を出⼒した数
    予測を出⼒した数 / 対象となるデータ全体
    ⾃動化率
    エンジニア、データ⼊⼒をマネジメントするメンバーと打ち合わせを重ね、必要性能を決定。
    既存モデルに対して、どの程度⾃動化率が向上するかをR&Dメンバー内で打ち合わせを⾏い、
    ⽬標とする⾃動化率を決定。
    精度
    ⾃動化率
    ⁃ ビジネス的メリット
    ⁃ 仮に⽬標とした⾃動化率向上を達成した場合のメリットを下記のように算出
    ⁃ 数千万円/年の費⽤削減

    View Slide

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

    View Slide

  12. 分析
    - データは⽬視で確認
    - ⾃動化するデータの⼊⼒作業を⾃⾝で通算数千件以上実施(いわゆる⽬grep)
    - 実際にデータを⼊⼒する⽅へのヒアリング
    事例紹介 ~⾃動化率改善のための取り組み~

    View Slide

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

    View Slide

  14. アルゴリズム検討
    - 前提
    - 2マッチ⽅式
    - 1つのタスクに対して複数回答を収集し、早い順で同じ回答が2つ得られた場合に
    データ確定とする
    事例紹介 ~⾃動化率改善のための取り組み~
    回答1 回答2 回答3 データ化結果
    1 1 - 1
    1 0 1 1
    データ化の流れの例

    View Slide

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

    View Slide

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

    View Slide

  17. アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討
    - まずはベースラインの作成
    - タスク
    - 5class分類、3calss分類
    - 不均衡データ
    - ⼿法
    - 単語の数え上げを特徴量とし、Naive Bayes
    - 性能
    - 必要と定義した精度から-5%ポイント⾜りず
    - 性能改善のループへ
    事例紹介 ~⾃動化率改善のための取り組み~

    View Slide

  18. 精度を改善したい!
    アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討
    事例紹介 ~⾃動化率改善のための取り組み~
    ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%)
    ベースライン -5 (未計算)
    🙂

    View Slide

  19. ⾃動化率は減らしてもいいから、精度が上がる⽅法を検討しよう!
    アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討
    事例紹介 ~⾃動化率改善のための取り組み~
    ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%)
    ベースライン -5 (未計算)
    多class分類から、データが多いclassのみを予測する2値分類
    の問題に変更
    -3 +4
    🙂

    View Slide

  20. 精度はかなり上がったけど、⾃動化率が下がりすぎた・・・。
    もっと除外する対象を限定できるルールを探さなければ!
    アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討
    事例紹介 ~⾃動化率改善のための取り組み~
    ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%)
    ベースライン -5 (未計算)
    多class分類から、データが多いclassのみを予測する2値分類
    の問題に変更
    -3 +4
    エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、
    ルールベースで予測対象から除外
    -0.5 -8
    🤔

    View Slide

  21. アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討
    事例紹介 ~⾃動化率改善のための取り組み~
    ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%)
    ベースライン -5 (未計算)
    多class分類から、データが多いclassのみを予測する2値分類
    の問題に変更
    -3 +4
    エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、
    ルールベースで予測対象から除外
    -0.5 -8
    再度エラー分析を⾏い、予測対象から除外する条件を厳しくす

    +0.5 ±0
    😊 無事⽬標達成🎉

    View Slide

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

    View Slide

  23. 2マッチを⾏う(1発確定)のアルゴリズムの検討
    - 流れは「アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討」と同様
    - 下記のような仕組みを検討
    - ルールベース
    - 単語レベルでのマッチング
    - BERTモデル
    - 1発確定を⾏うための厳しい精度要件を突破するための⽅法を模索
    - 結果として、ルールベースが最も性能が良かった
    事例紹介 ~⾃動化率改善のための取り組み~

    View Slide

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

    View Slide

  25. 出⼒内容の確認
    - データ⼊⼒をマネジメントするメンバーに出⼒内容の共有
    - 上記メンバーの観点から⾒て問題点があれば共有してもらい、改善策があるかを⼀緒に検討する
    - 必要であればアルゴリズムの⾒直しも⾏う
    - 仮に機械が出⼒を間違えたとしても、「なぜ間違えたか」を⼈間が理解できると、データ⼊⼒を
    ⾏うメンバーとして受け⼊れやすい
    事例紹介 ~⾃動化率改善のための取り組み~

    View Slide

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

    View Slide

  27. モデル開発・機能提供のための開発
    - 下記⼯程を約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を⽤いて専⽤メソッドが存在するか
    確認
    事例紹介 ~⾃動化率改善のための取り組み~

    View Slide

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

    View Slide

  29. リリース
    事例紹介 ~⾃動化率改善のための取り組み~
    DALL·E 3 prompt「⾃分が作ったシステムのリリース⽇で緊張する猫」

    View Slide

  30. リリース後の経過観察
    - ⼈⼿によるチェックで精度が問題ないことを確認
    - リリース後の⾃動化率向上を確認
    事例紹介 ~⾃動化率改善のための取り組み~
    リリース🎉
    ⾃動化率向上

    View Slide

  31. View Slide