Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LT_20200215
Search
y-wat
February 15, 2020
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LT_20200215
開発中の資料です
y-wat
February 15, 2020
More Decks by y-wat
See All by y-wat
v1Bot_v0.2
ywat
0
59
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
390
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Chasing Engaging Ingredients in Design
codingconduct
0
340
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
480
Believing is Seeing
oripsolob
1
240
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
300
Transcript
面倒な検索はpythonにやらせよう -開発記録 v0.1- y-wat
お願い スクレイピング・クローリングは用法・容量を守って実行しましょう
connpass: y-wat • 本社に自席がない常駐エンジニア5年目 • 昔: OracleDB担当(バッチ処理、DBA), BIツール導入&保守 • 今:
GCPでログ基盤構築 2018冬から個人的にコーディングはじめました。 仕事では2019/04から(PLSQLは除く)。
今日の目的 • 3ヶ月開発の中間強制LT • 個人開発中の検索botを紹介する(画面ありませんごめんなさい) • デザインパターンの共有枠です • 違和感のある設計・実装を見かけたら指摘してください •
面白そうな追加機能ネタは歓迎
「気になった単語」を覚えてますか?? →無理。 →継続フォローつらい。 →周辺情報も欲しい。
検索botの目指すところ • 定期web検索 • 自律追加検索 • 記事推薦 気になるネタのウォッチ + 知らないサイトへの到達
モジュール配置 検索bot (稼働中) View (稼働中) 検索辞書作成(稼働中) Storages (稼働中) Cloud Run
GCS Cloud Tasks BigQuery Firebase Functions PG GCE 記事推薦 (調査中) ??
検索bot - 新着ページを集める Web Site 検索 task task task task
task task 検索条件リスト
Storages - メタデータ用/集計用/長期保存用 BigQuery GCS Postgres • メタデータ • 履歴データ
• heroku • 文書データ • フルスキャン前提 • 直近3ヶ月のみ保持(予定) • 文書データ • 長期保存用 • 基本的に貯めるだけ ストレージを跨いだデータ整合性管理 • Job_id: 検索ワード+検索オプション => sha256 • Exec_id: searchの起動ごとに => uuid4 • 文書id: テキストのみ抽出した文書 => sha256
検索辞書作成 - tfidf • tfIdfで特徴語を抽出 • 元の検索条件 + tfidf結果で再検索 =
今日の深堀り検索 検索bot 再走行 task 追加検索条件リスト
記事推薦 - 2月中の実装目標 • やりたいこと ◦ 追加検索結果から絞り込みを行う ◦ ベース検索(n *
5記事) * 追加検索(tfidf(3ワード) * 5記事) = 75n記事(最大) →多すぎるので選別が必要 • 実装方法 ◦ 文書のベクトル作成: bert as service (試し中) ◦ 記事推薦 i. Cosine類似度 <- とりあえず単純なコレが有力 ii. Elastic search iii. ほか調査中
まとめ: 前半の振り返り • プロダクトとしての評価 ◦ 新着記事の自動配信としては使えそう。 英語なら。 ◦ 不要な記事への対処が悩み (例:
ECサイト、出会い系コミュニティサイト ) • bot開発: 前処理が本番 - 無価値な単語をどうやって弾くか ? ◦ 名詞,固有名詞: EV(電気自動車),新型コロナウイルス ,12月5日,37ドル ◦ 人間にとっての「有意味な単語」と計算結果での「特徴語」は一致しない ◦ 辞書の品質維持 • アーキテクチャ: 軽量なモジュール単位実装 + 疎結合 ◦ 軽量に作る: 素pythonスクリプト、flaskでの簡易実装優先 (大きいFW/ORM使わない) ◦ 小さいAPIをタスクキューで繋げる : モノリシックを避ける + 並列実行リソースの最適化 ◦ プログラミングの学習としては微妙 (Leetcode等の方が良い)
最後に つっこみ歓迎。 • 「アーキテクチャおかしくない??」 • 「実装内容もっと良いやり方が・・・」 直近のissue • メンテナンス負荷の低い分析処理 +基盤
• ストレージレイヤのデータ管理 • テキスト前処理の完成形 • 分かち書きに使う辞書メンテナンス (最終手段: Natural Language API) • 自然言語処理なにもわからない