Slide 1

Slide 1 text

メール署名取り込みにおける 名刺情報抽出の取り組み Sansan R&D TECH SHOWCASE 研究開発部 橋本 航

Slide 2

Slide 2 text

写真が入ります 橋本 航 技術本部 研究開発部 Data Analysis Group 研究員 奈良先端科学技術⼤学院⼤学 先端科学技術研究科 情報科学領域 D2 九州⼤学⼤学院⼯学府修⼠課程修了。在学中は、第⼀原理計算 に対するベイズ学習の応⽤研究に取り組む。現在は⾃然⾔語処 理を始めとした、さまざまな機械学習技術の実応⽤に関する研 究開発に従事。

Slide 3

Slide 3 text

- 営業DXサービスSansanは、名刺だけでなくメールのやり取りも 接点として蓄積・集約している - メールから名刺相当の情報を抽出するために、 様々な⾃然⾔語処理技術やデータ構造を駆使している 今日話したいこと

Slide 4

Slide 4 text

名刺交換の履歴 ⼈脈やつながり 100万件を超える 企業情報 20万件の 役職者情報 ⼈事異動情報 企業の 最新ニュース 企業の リスク情報 契約・ 取引の情報 接点情報 企業情報 取り込みシーンを増やす 企業のターゲティング・検索ができる 営業DXサービスとしてのSansan

Slide 5

Slide 5 text

営業DXサービスとしてのSansan 名刺交換の履歴 ⼈脈やつながり 100万件を超える 企業情報 20万件の 役職者情報 ⼈事異動情報 企業の 最新ニュース 企業の リスク情報 契約・ 取引の情報 接点情報 企業情報 取り込みシーンを増やす 企業のターゲティング・検索ができる メールのやり取りを接点情報として取り込む: メール署名取り込み

Slide 6

Slide 6 text

- メール接点をSansan上に取り込んで蓄積できる機能 - メールを解析し、抽出した名刺相当の情報を名刺候補としてSansan上に 提⽰ ※ 補正・補⾜等があれば⼿動⼊⼒ メール署名取り込み 名刺候補表⽰イメージ メール署名から名刺候補を抽出 1 Sansan上で選択・名刺化 2 株式会社 〇〇 ××様 ========== ASABA ASIA CO., LTD 内⽥ 徹也 営業部マネージャー 03-1234-5678

Slide 7

Slide 7 text

- 抽出対象のテキストの⻑さ - メールは過去スレッドも含めるとしばしばテキスト量が膨⼤ - さらに件数も多いため、重いモデルをそのまま使うとスケールやデータ化 コストに悪影響 > Transformer ベースのモデルに複数回推論させたり、LLMでポン! みたいな ことはスケールやデータ化コストの観点から困難 - 送信者の情報に限定した情報抽出 メールから名刺相当の情報を抽出する難しさ

Slide 8

Slide 8 text

メールにおける送信者の名刺情報抽出の主なフロー ⼭⽥様 先⽇はお世話になりました。 YonYon株式会社の佐藤です。 本⽇メール致しましたのは…… (略) -------------------------------------- YonYon株式会社 研究開発部 課⻑ 佐藤太郎 TEL:012-3456-7890 -------------------------------------- 組織名: YonYon株式会社 部署: 研究開発部 役職: 課⻑ ⽒名: 佐藤太郎 電話番号: 012-3456-7890 メール本⽂1 署名1 メール本⽂2 署名2 メール本⽂3 署名3 メール全⽂ 送信者の署名 送信者の名刺相当情報 ① メール全⽂から送信者の 署名を抽出 ② 送信者の署名から名刺相当の 情報(⽒名、組織名、部署等) を抽出 ② ①

Slide 9

Slide 9 text

メールにおける送信者の名刺情報抽出の主なフロー ⼭⽥様 先⽇はお世話になりました。 YonYon株式会社の佐藤です。 本⽇メール致しましたのは…… (略) -------------------------------------- YonYon株式会社 研究開発部 課⻑ 佐藤太郎 TEL:012-3456-7890 -------------------------------------- 組織名: YonYon株式会社 部署: 研究開発部 役職: 課⻑ ⽒名: 佐藤太郎 電話番号: 012-3456-7890 メール本⽂1 署名1 メール本⽂2 署名2 メール本⽂3 署名3 メール全⽂ 送信者の署名 送信者の名刺相当情報 ① メール全⽂から送信者の 署名を抽出 ② 送信者の署名から名刺相当の 情報(⽒名、組織名、部署等) を抽出 ② ①

Slide 10

Slide 10 text

- メールから送信者の署名である領域を特定 → メール全⽂から、送信者の署名である⾏を予測するタスクとして定義 - メール全⽂に対して処理を⾛らせる必要があるため、⽐較的軽量な⼿法 を使⽤ → CRF による送信者署名抽出 メールからの送信者署名抽出

Slide 11

Slide 11 text

- CRF (Conditional Random Field): 系列データのための確率モデル - 系列中の要素を個別に分類するのではなく、系列全体として最適なラベル列を 出⼒ - ⾼速なCRF実装であるCRFsuiteのラッパであるsklearn-crfsuiteを使⽤ - 今回のケースでは、⾏を系列における 要素とみなしてCRFを適⽤ - 署名領域のセグメンテーションのため にBIO (Begin, Inside, Outside) 形式を 使⽤ CRFによる送信者署名抽出 ⼭⽥様 先⽇はお世話になりました。 YonYon株式会社の佐藤です。 本⽇メール致しましたのは…… (略) -------------------------------------- YonYon株式会社 研究開発部 課⻑ 佐藤太郎 TEL:012-3456-7890 -------------------------------------- O O O O O O ~ O O B-SIGNATURE I-SIGNATURE I-SIGNATURE O メール⽂ CRFの出⼒

Slide 12

Slide 12 text

- 使⽤した⾏単位の特徴量の例 (基本的に⾼速に⽣成できることが前提) - かな変換した場合にメールアドレスの⽒名部分と⼀致しているか - 会社名/部署/役職/住所/Tel/Mobile/Faxにありがちな表現が含まれて いるか - 形容詞や副詞などが⼊っていないか - etc… - 結果 - 後段の名刺相当の情報抽出の性能向上、および推論速度の⼤幅な改善を 実現 > インターン⽣の⼤きなご協⼒をもとにリリース CRFによる送信者署名抽出

Slide 13

Slide 13 text

メールにおける送信者の名刺情報抽出の主なフロー ⼭⽥様 先⽇はお世話になりました。 YonYon株式会社の佐藤です。 本⽇メール致しましたのは…… (略) -------------------------------------- YonYon株式会社 研究開発部 課⻑ 佐藤太郎 TEL:012-3456-7890 -------------------------------------- 組織名: YonYon株式会社 部署: 研究開発部 役職: 課⻑ ⽒名: 佐藤太郎 電話番号: 012-3456-7890 メール本⽂1 署名1 メール本⽂2 署名2 メール本⽂3 署名3 メール全⽂ 送信者の署名 送信者の名刺相当情報 ① メール全⽂から送信者の 署名を抽出 ② 送信者の署名から名刺相当の 情報(⽒名、組織名、部署等) を抽出 ② ①

Slide 14

Slide 14 text

送信者の署名が抽出できていれば、メールからの名刺相当の情報抽出は 署名テキストから⼈名・組織名などを抽出する (固有表現抽出) という、 ⽐較的シンプルな問題に変換できる - 送信者署名からの情報抽出のアプローチ - 辞書による固有表現抽出 - 機械学習モデルによる固有表現抽出 送信者の署名からの名刺相当情報抽出

Slide 15

Slide 15 text

- 会社名等の辞書を⽤いた固有表現抽出 - 問題点 - 辞書を使ってそのまま正規表現にかけることが困難 > 辞書の件数が多い場合だとマッチに時間を要し、さらにコンパイルも困難 - 解決⽅法 - 有向無閉路⽂字列グラフ (Directed Acyclic Word Graph; DAWG) による ⾼速かつ省メモリな⽂字列検索 辞書による固有表現抽出

Slide 16

Slide 16 text

- ⽂字列の集合を索引化して保持するトライ⽊と 類似したデータ構造。⾼速な共通接頭辞検索が 可能 - ⻑さ𝑀の⽂字列に対する 𝑂(𝑀) の検索 - ⼀⽅で (a) のような通常のトライ⽊と異なり、ノ ードに複数のパスで到達できるため、使⽤する ノードの数を⼤幅に削減 → メモリ使⽤量も⼤幅に削減 有向無閉路⽂字列グラフ (Directed Acyclic Word Graph; DAWG) https://en.wikipedia.org/wiki/Deterministic_acyclic_finite_state_automaton (a) トライ木 (b) DAWG

Slide 17

Slide 17 text

- DAWGはPythonから簡単に使⽤可能 - インストール - pip install dawg2 - 使⽤⽅法 有向無閉路⽂字列グラフ (Directed Acyclic Word Graph; DAWG) https://github.com/pytries/DAWG-Python https://github.com/pymorphy2-fork/DAWG

Slide 18

Slide 18 text

- 辞書でカバーできないケースも当然あるため、機械学習ベースの 固有表現抽出も使⽤ - ⼿法: Transformer系のEncoder + CRF による系列ラベリング 機械学習モデルによる固有表現抽出 入力 Yon Yon 株式会社 研究 開発 部 課長 / 佐藤 太郎 CRF Transformer Encoder 出力 B-組織名 I-組織名 I-組織名 B-部署 I-部署 I-部署 B-役職 O B-人名 I-人名 …

Slide 19

Slide 19 text

- CRFにおける系列全体のスコアは、トークンに対するラベル予測スコアとラベル間の遷移 スコアを考慮 - 問題点 - 特に⼯夫せず学習すると不正な遷移がしばしば残り、精度が低下 > “B-⼈名”, “I-組織名”, “I-⼈名”, … のようなケース - 解決⽅法 - 不正な遷移には⼤きな負の値を初期値と して与えることで、不正な遷移がなくなり 精度が向上 ※ 署名抽出におけるCRFの場合も同等の処理を実施 CRF活⽤時の⼯夫: Masked CRF [Wei et al., 2021] Start ╲End B-人名 I-人名 B-組織名 I-組織名 O B-人名 0 0 0 -100 0 I-人名 0 0 0 -100 0 B-組織名 0 -100 0 0 0 I-組織名 0 -100 0 0 0 O 0 -100 0 -100 0 Tianwen Wei, Jianwei Qi, Shenghuan He, and Songtao Sun. 2021. Masked Conditional Random Fields for Sequence Labeling. In Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, pages 2024– 2035, Online. Association for Computational Linguistics. 表: 初期値を設定したCRFの遷移⾏列の例

Slide 20

Slide 20 text

- 営業DXサービスSansanにおいてメールから名刺相当の情報を抽出する ため、複数の⾃然⾔語処理技術やデータ構造を駆使 - 今後の展望: さらなる精度と網羅性の向上 > 既存の名刺データベースは精度 99.9 % > 接点のデータベースとして価値を上げるため、さらなる抽出性能の向上が必要 まとめ

Slide 21

Slide 21 text

We are hiring! 募集中:機械学習エンジニア[⾃然⾔語処理] もしくは Sansan R&D 採⽤

Slide 22

Slide 22 text

No content