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

日本発!MySQL UDFとGo言語で作るビッグデータ前処理基盤

高木祐介
September 19, 2018

日本発!MySQL UDFとGo言語で作るビッグデータ前処理基盤

db tech showcase 2018 day1 Track Dにて、ミーカンパニーCDOとしてMysqlサーバーの組み込みUDFを利用した前処理基盤の開発について発表しました。

日本発!MySQL UDFとGo言語で作るビッグデータ前処理基盤
https://crash.academy/video/652/1983

高木祐介

September 19, 2018
Tweet

More Decks by 高木祐介

Other Decks in Technology

Transcript

  1. 次 • 前半 – 会社の説明 – 開発に至った経緯 – 何が出来るのか? •

    後半 – デモ&技術解説 • 質疑応答 mecompany Inc.
  2. 社紹介 mecompany Inc. 社名 設立 住所 役員 資本金 従業員数 ミーカンパニー株式会社

    2010年12月3日 (8期目) 東京都新宿区四谷4-33-2 前田 健太郎 (代表) 高木 祐介 (CDO) 1,000万円 20名(エンジニアが8割) 医療・介護支援者と 患者・家族との出会いをつくる
  3. 公的機関 ータベース事業:開発方法 mecompany Inc. 厚生労働省 都道府県 (市区町村・保健所等) 公的な公開情報をプログラムで収集・一元化。 さらに、データ提供先からのフィードバックを元に情報を強化。 (市区町村・保健所等)

    情報収集 予約システム会社 医療系人材紹介会社 医療機器メーカー 医療機関 調剤薬局 介護事業所 SCUEL Projectパートナー 電話健康相談サービス 一般利用者 患者団体 医療・調剤・介護サービサー ・・等 検索プロバイダ 調査 入力 入力 入力 SCUEL Projectパートナー データ活用 指摘 病院の HP 技術的に面倒 なポイント
  4. 1 本システム開発に至る経緯 その1 開発上の悩み編 • 統一的なデータベースはなく、必要な情報が散逸 • データを作っている主体が違うので、形式もバラバラ • 特にPDF形式、画像形式が辛い

    そして mecompany Inc. ※介護データ自治体収集リストの一部 1行に対してデータセットが1件あります。 これを収集、確認、取り込んでいきます。自治体は全国で1800あり、収集データは ユニークキーが • 【非公開】 • 【割と変わる】 • 【使いまわされる】 • 【発番ルールが公開ルールと違う】 名寄せ業務必須! ※名称、住所などの情報をキーに情報の同定作業を行う事
  5. 1 本システム開発に至る経緯 その2 開発上の悩み編 データの鮮度、正確性の問題 – 古い情報が公開されている – データ公開主体の違いから発生する表記ゆれ –

    格納されているカラムが違う – 公開されている情報が間違っている mecompany Inc. 名寄せ業務必須にも関わらず、 未加工では名寄せしてよいデータにならない 前処理作業に着手
  6. 本システム開発に至る経緯 その3 要求仕様編 mecompany Inc. 人力で行うと毎月膨大な 人件費がかかる お客様のデータ要求精 度が非常に高い 人力で行うと誤入力が

    発生する。誤入力の差し 戻しコストが高い OCRデータで誤入力が発 生する 労力を最小限に 要求精度をクリアでき 手作業・差し戻しを極力 なくす。 精度の高い前処理が出 来ないか? ニーズに合致 する製品がな いので、作るし かない 120億項目のデータ処理 を数時間で終わらせる 必要 悩み 超高速かつ 解決策
  7. ビッグデータ前処理基盤で何が出来るのか? mecompany Inc. ビッグデータ前処理基盤が出来る事を簡単に記載すると 名前、住所、電話番号等の文字列を自動で 形式の統一、情報の補完、誤入力の訂正 など処理をMySQLのユーザー定義関数で一括実行する仕組み です。 例えば このように、SQL関数1つでデータを高精度で変換してくれる仕組みになります。

    名前正規化 田中太郎 ↓ 田中 太郎 ※姓名分離 住所正規化 あ茨木県白井二千九十の20 ↓ 茨城県 つくば市 臼井 2090 - 20 ※不正な文字列混入、住所分離、 市区町村名補完、誤字修正 電話番号正規化 8831111 ↓ 029-883-1111 ※形式統一、市外局番補完 文字表記ゆれ対応 ハッピ-加 ↓ ハッピー加瀬 ※半角全角変換、 JIS3水準文字→ JIS1水準文字 瀨
  8. 1 電話番号前処理(正規化) mecompany Inc. ス 元データ 変換先データ 結しているケース 0298525885 029-852-5885

    が抜けているケース 883-1111 029-883-1111 字が入っているケース 084-926-0139 日曜日・祝日は担当者携帯電話 084-926-0139 番号が入っているケース 0974-75-2124、もしくは、0974-42-2270(養護老人ホーム常楽荘) 0974-75-2124,0974-42-2270 付与 084-926-0139 国: 日本 国番号: 81 市区町村: 広島県福山市 タイムゾーン: Asia/Tokyo 電話番号タイプ: 固定電話
  9. 2.1 住所前処理(正規化) mecompany Inc. 元データ 変換先データ が抜けているケース 新宿区四谷4-33-2 マーキュリースクエア2F 東京都新宿区四谷4-33-2

    マーキュリースクエア2F 名が抜けているケース 茨城県研究学園7丁目59-5 茨城県つくば市研究学園7丁目59-5 、市区町村が抜けているケース 南区御幸笛田7丁目13番21号 熊本県熊本市南区御幸笛田7丁目13-21 番地、番の表記ゆれケース 東京都豊島区南池袋二丁目四十五番三号 東京都豊島区南池袋2丁目45-3 ケース 宮城県塩釜市字杉ノ入裏39-176 宮城県塩竃市字杉ノ入裏39-176 宮城県塩竈市杉ノ入裏39-176 住所、誤字のケース 、が、ガ」「の、ノ」「ツ、っ、ッ」等の文字を同 す。 兵庫県加古川市上荘町井ノロ390ー2(ロはカタカナ) 兵庫県加古川市上荘町井野ロ390ー2 兵庫県加古川市上荘町井乃ロ390ー2 兵庫県加古川市上荘町井ノ口390-2 い補正 つくりから漢字を推定、それでも駄目なら検 します。 北海道北見市留辺蕊町旭公園95番地4 静岡県浜松市浜北区貴布1200 北海道北見市留辺蘂町旭公園95-4 静岡県浜松市浜北区貴布祢1200 取りミスのケース 茨城県つくば市白井2090-20 茨城県つくば市臼井2090-20 合併のケース 筑波郡豊里町東光台1-1-3 茨城県つくば市東光台1丁目1-3 字列が紛れ込んでいるケース 〒305-0005 茨城県00000つくば市天久保2-1-1 茨城県つくば市天久保2丁目1-1
  10. 2.2 住所変換サンプル(東京都) mecompany Inc. 住所 地方自治 体コード 郵便番号 都道府県 郡

    市区 町村 行政区 通り 1 町域 町丁目 街区1 街区2 街区3 残住所 フラグ 緯度 経度 田区九段南2-1-39 13101 1020074東京都 千代田区 九段南 2丁目 1 39 7 35.693555 元赤坂1-1-5 13103 1070051東京都 港区 元赤坂 1丁目 1 5 7 35.678092 区東浅草1-10-12 13106 1110025東京都 台東区 東浅草 1丁目 10 12 7 35.722087 区明石町9番1号 13102 1040044東京都 中央区 明石町 9 1 7 35.667428 西新橋3-19-18 13103 1050003東京都 港区 西新橋 3丁目 19 18 7 35.663725 区寿1丁目10番20号 13106 1110042東京都 台東区 寿 1丁目 10 20 7 35.706602 赤坂8-10-162F・3F 13103 1070052東京都 港区 赤坂 8丁目 10 -162F・3F 7 35.670421 区寿3-2-7 13106 1110042東京都 台東区 寿 3丁目 2 7 7 35.705869 田区麹町6-4-14堤ビル2F 13101 1020083東京都 千代田区 麹町 6丁目 4 14 堤ビル2F 7 35.685614 区銀座1-5-8ギンザウィローアベニュー 13102 1040061東京都 中央区 銀座 1丁目 5 8 ギンザウィローアベニュー ビル6階 7 35.674583 区谷中1-1-16 13106 1100001東京都 台東区 谷中 1丁目 1 16 7 35.71935 区銀座4-11-4 13102 1040061東京都 中央区 銀座 4丁目 11 4 7 35.670022 区浅草5-33-12 13106 1110032東京都 台東区 浅草 5丁目 33 12 7 35.721642 南青山2-9-28青山NSビル1F 13103 1070062東京都 港区 南青山 2丁目 9 28 青山NSビル1F 7 35.67049 田区三崎町2-18-11堀内三崎町ビル 13101 1010061東京都 千代田区 三崎町 2丁目 18 11 堀内三崎町ビル2F 7 35.701213 北青山3-3-7-102 13103 1070061東京都 港区 北青山 3丁目 3 7 102 7 35.668401 区浅草橋5-5-10 13106 1110053東京都 台東区 浅草橋 5丁目 5 10 7 35.699889 芝2-9-10ダイユウビル1階 13103 1050014東京都 港区 芝 2丁目 9 10 ダイユウビル1階 7 35.651779 南青山5-15-1 13103 1070062東京都 港区 南青山 5丁目 15 1 7 35.660324 区上野7-6-5上野KYビル9F 13106 1100005東京都 台東区 上野 7丁目 6 5 上野KYビル9F 7 35.713615 区松が谷3-18-5 13106 1110036東京都 台東区 松が谷 3丁目 18 5 7 35.716456 田区九段南4-3-9 13101 1020074東京都 千代田区 九段南 4丁目 3 9 7 35.691561 区明石町1番24号 13102 1040044東京都 中央区 明石町 1 24 7 35.668517 区浅草4-41-6 13106 1110032東京都 台東区 浅草 4丁目 41 6 7 35.719384
  11. 2.3 住所正規化精度他社比較 mecompany Inc. レベル0 ・・・ 無変換 レベル1 ・・・ 都道府県レベル

    レベル2・・・市区町村レベル レベル3 ・・・ 町域レベル レベル4 ・・・ 町・字レベル レベル5・・・番地レベルレベル6 ・・・ 枝番レベル ※弊社がもつ26万件の住所データよりJ社の製品を基準にレベル1~レベル8までの住所を200件づつ抜きだして1200件を調査した。 0.00% 29.92% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.42% 0.08% 0.42% 0.08% 0.50% 0.08% 23.42% 16.65% 13.74% 9.16% 2.42% 0.00% 22.58% 16.65% 19.15% 1.67% 7.83% 2.00% 0.00% 16.65% 15.57% 76.69% 2.92% 1.75% 0.00% 16.65% 31.64% 0.00% 86.33% 66.25% 53.58% 33.31% 19.48% 12.41% 当社 Y 社 E 社 J社 N社 K 社 住所正規化レベル比較 レベル0 レベル1 レベル2 レベル3 レベル4 レベル5 レベル6 国内 最高精度 達成 当社 字レベル 上正規化 08%達成
  12. その他機能について mecompany Inc. 礎データ正規化 角半角 要な空白削除 字体・同意体変換 第3、第4水準変換 icode IVS対応

    ォーマットの統一 要データの削除 人情報正規化 人番号付与 人格抜き出し 人名称統一 称変更法人確認 転法人確認 鎖法人確認 業所、法人名称分割 業所カナ補完 人名カナ補完 3.住所正規化 • 郵便番号付与 • 新旧郵便番号変換 • 新旧住所変換・表記統一 • 住所分割・補完 • 住所カナ補完 • 住所逆引き検索 4.電話番号正規化 • 市外局番付与 • 電話番号形式統一 • 架電確認 • 電話番号逆引き検索 5.HP・メール・ドメイン正規化 • HPアドレス形式統一 • メール形式統一 • ドメイン形式統一 • HP存在確認 • メール存在確認 • ドメイン存在確認 6.緯度経度正規化 • 測地系変換 • 緯度経度補完 9.信頼性確認 • 住所・地番辞書による確認 • 建物辞書による確認 • 郵便番号辞書による確認 • 電話番号辞書による確認 • 姓名辞書による確認 • 法人辞書による確認 • 独自データ辞書により信頼 性確認・補完 7.姓名正規化 • 姓名分割 • 姓名カナ補完 10.重複判定 • 判定ロジックに基づい 重複判定確認 • 名寄せコード発行処 機能開発に伴って、以下のような機能が揃い、開発が容易なSQLで高度な処理が可能になっています。 11.Mysql機能拡張 • カンマ区切りデータ抽 • 文字列比較処理 • HTTPリクエスト • チェックデジット計算 処理(Damm) • ログ出力 • 正規表現検索(onigu • 正規表現置換(onigu • jsonパース処理(jq) 8.施設名称正規化 • 店舗名称分離 • サービス名称分離 今後の予定 • 機械学習の訓練や 評価・実行関数な も整備予定