Slide 1

Slide 1 text

Snowflakeで キーワード抽出と カテゴリ分類 RTA 旧タイトル:(仮) たまには自然言語処理をやってみる @jewel_x12 (CARTA HOLDINGS) 試されDATA SAPPORO #1

Slide 2

Slide 2 text

Snowflakeでシュッと キーワード分類とカテゴリ抽出 したいことありますよね?

Slide 3

Slide 3 text

ジュエルって誰 ● CARTA HOLDINGS ● fluctというインターネット広告配信事業のお手伝いをしています ● 沖縄に住んでます北海道最高!

Slide 4

Slide 4 text

fluctがやっていること

Slide 5

Slide 5 text

広告リクエストと広告出したい人をより良くマッチング

Slide 6

Slide 6 text

その他いいこと ● 特定のジャンルの記事からのリクエストを広告出したい人へ送らない ● 良く買われるジャンルやキーワードが分かると記事執筆の指針になるかも ● などなどなどなど

Slide 7

Slide 7 text

シュッっと ● 手を抜いてもどんなもんが取れるのかとりあえず見る ● 「良いこと」が本当か、できるだけ作り込まずに調べていく

Slide 8

Slide 8 text

RTA (リアルタイムアタック) 攻略チャートを組みましょう

Slide 9

Slide 9 text

レギュレーション ● 状況 ○ 広告リクエストの発生しているページのタイトルがある ■ ユニークなページ数が1日で数百万ページ ○ Snowflakeにおいてある ● 制約 ○ 言語設定:日本語 ○ まあまあのキーワード感 ■ カテゴリーにして使うことが多いので大雑把でいいはず ○ カテゴリー ■ IAB Content Taxonomy 3.1 ● インターネット広告業界におけるメディアコンテンツの共通認識の取れた分類 ■ 分類精度は……Any%(まず様子を見たい) ■ できれば新しい語にも対応したい ● Glitchless(バグ技使用禁止)

Slide 10

Slide 10 text

理論値最速から

Slide 11

Slide 11 text

AIってやつで 一撃よ

Slide 12

Slide 12 text

これが一番早いと思います

Slide 13

Slide 13 text

すっごいお金がかかる!!

Slide 14

Slide 14 text

レギュレーション ● 状況 ○ 広告リクエストの発生しているページのタイトルがある ■ ユニークなページ数が1日で数百万ページ ○ Snowflakeにおいてある ● 制約 ○ 言語設定:日本語 ○ キーワード ■ カテゴリーにして使うことが多いのでキーワード感は大雑把でいい ○ カテゴリー ■ IAB Content Taxonomy 3.1 ● インターネット広告業界におけるメディアコンテンツの共通認識の取れた分類 ■ 分類精度は……Any%(まず様子を見たい) ■ できれば新しい語にも対応したい ○ シュッと試すレベルのタスクとしては現実的なコスト感であること ←New! ● Glitchless(バグ技使用禁止)

Slide 15

Slide 15 text

今回構築した攻略チャート ● キーワード抽出 ○ UDF(User Defined Function)で名詞連続をとる ■ 形態素の取得にSudachiを使う ○ ページタイトルによく出る単語は除く ■ どこにでも出る単語はキーワードではない ● カテゴライズ ○ 学習データ作成 ■ キーワードを分類して学習データを作成 ○ 埋め込みベクトルの類似度でカテゴリを出す ■ 学習データと分類対象にベクトル埋め込みをする ■ 学習データ各行とのコサイン類似度を取って、類似度が一番高い学習 データのカテゴリを出力する

Slide 16

Slide 16 text

キーワード抽出 ● 1. UDF(User Defined Function)で名詞連続をとる ○ 形態素の取得にSudachiを使う ■ Snowflake Conda チャネルを使ってインストールできる&辞書も用意しな くてOKなので、ライブラリのアップロード作業が要らない ■ Vectorized UDFを使う ● 辞書ロードのオーバーヘッドを減らしたり ● 2. ページタイトルによく出る単語は除く ○ どこにでも出る単語はキーワードではない ■ みんなで北海道旅行へ行こう! | ECナビ ● みたいにサイト名が入ることが多い ■ ページURLのドメインごとにDF(Document Frequency)を取り、DF/ペー ジ数でスコア化

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

カテゴライズ ● 1. 学習データ作成 ○ キーワードを分類して学習データを作成 ■ SNOWFLAKE.CORTEX.AI_CLASSIFY ■ 今回は IAB Taxonomy Category Tier1 ● 2. 埋め込みベクトルの類似度でカテゴリを出す ○ 学習データと分類対象にベクトル埋め込みをする ■ SNOWFLAKE.CORTEX.EMBED_TEXT ○ 学習データ各行とのコサイン類似度を取って、一番高い学習データのカテゴリ を出力する ■ 最近出てきた単語でも特徴を取れると期待 ■ SNOWFLAKE.ML.CLASSIFICATIONはVector対応しておらず断念 ■ 注意:素直に実装するとO(MN)のオーダーになる

Slide 19

Slide 19 text

keyword category キムタク Entertainment 注意喚起 Sensitive Topics リライブシャツ Style & Fashion 急性心筋梗塞 Disasters 命 Entertainment 衝撃展開 Disasters VIVANT Entertainment 婚約 Family and Relationships 青木理 Entertainment オンラインゲーム Video Gaming 徳島市 Travel W決勝進出 Sports 人材確保 Careers 上乗せ額 Business and Finance 天才リベロ Sports クマ出没 Maps & Navigation サッカー部 Sports 重傷 Automotive

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

まとめ ● Snowflake上にあるデータでのキーワード抽出とカテゴライズのRTAをしました ○ UDFで形態素解析するときは Sudachiが早い ○ 埋め込みベクトルの類似度を使えばカテゴライズもクエリだけで終わる ● 用途やニーズに合わせて作り込んでいきましょう ○ キーワード ■ 例えば名詞句を認識できないので粒度が細かすぎたりする ○ カテゴリ ■ 分類精度Any%だと評価基準がガバガバなのでテストデータを作って評価していきたい ■ もうちょっと粒度を細かくしたい ● IAB Content Taxonomyにはまだ細かいTierがある