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

LT_20200215

y-wat
February 15, 2020
220

 LT_20200215

開発中の資料です

y-wat

February 15, 2020
Tweet

Transcript

  1. connpass: y-wat • 本社に自席がない常駐エンジニア5年目 • 昔: OracleDB担当(バッチ処理、DBA), BIツール導入&保守 • 今:

    GCPでログ基盤構築 2018冬から個人的にコーディングはじめました。 仕事では2019/04から(PLSQLは除く)。
  2. モジュール配置 検索bot (稼働中) View (稼働中) 検索辞書作成(稼働中) Storages (稼働中) Cloud Run

    GCS Cloud Tasks BigQuery Firebase Functions PG GCE 記事推薦 (調査中) ??
  3. Storages - メタデータ用/集計用/長期保存用 BigQuery GCS Postgres • メタデータ • 履歴データ

    • heroku • 文書データ • フルスキャン前提 • 直近3ヶ月のみ保持(予定) • 文書データ • 長期保存用 • 基本的に貯めるだけ ストレージを跨いだデータ整合性管理 • Job_id: 検索ワード+検索オプション => sha256 • Exec_id: searchの起動ごとに => uuid4 • 文書id: テキストのみ抽出した文書 => sha256
  4. 検索辞書作成 - tfidf • tfIdfで特徴語を抽出 • 元の検索条件 + tfidf結果で再検索 =

    今日の深堀り検索 検索bot 再走行 task 追加検索条件リスト
  5. 記事推薦 - 2月中の実装目標 • やりたいこと ◦ 追加検索結果から絞り込みを行う ◦ ベース検索(n *

    5記事) * 追加検索(tfidf(3ワード) * 5記事) = 75n記事(最大) →多すぎるので選別が必要 • 実装方法 ◦ 文書のベクトル作成: bert as service (試し中) ◦ 記事推薦 i. Cosine類似度 <- とりあえず単純なコレが有力 ii. Elastic search iii. ほか調査中
  6. まとめ: 前半の振り返り • プロダクトとしての評価 ◦ 新着記事の自動配信としては使えそう。 英語なら。 ◦ 不要な記事への対処が悩み (例:

    ECサイト、出会い系コミュニティサイト ) • bot開発: 前処理が本番 - 無価値な単語をどうやって弾くか ? ◦ 名詞,固有名詞: EV(電気自動車),新型コロナウイルス ,12月5日,37ドル ◦ 人間にとっての「有意味な単語」と計算結果での「特徴語」は一致しない ◦ 辞書の品質維持 • アーキテクチャ: 軽量なモジュール単位実装 + 疎結合 ◦ 軽量に作る: 素pythonスクリプト、flaskでの簡易実装優先 (大きいFW/ORM使わない) ◦ 小さいAPIをタスクキューで繋げる : モノリシックを避ける + 並列実行リソースの最適化 ◦ プログラミングの学習としては微妙 (Leetcode等の方が良い)
  7. 最後に つっこみ歓迎。 • 「アーキテクチャおかしくない??」 • 「実装内容もっと良いやり方が・・・」 直近のissue • メンテナンス負荷の低い分析処理 +基盤

    • ストレージレイヤのデータ管理 • テキスト前処理の完成形 • 分かち書きに使う辞書メンテナンス (最終手段: Natural Language API) • 自然言語処理なにもわからない