桶屋:Echo Project
博報堂との共同研究の知見をローカライズしたプロジェクトです。
- プロジェクト目的:テレビ番組視聴と天気などの外部要素がディスプレイ広告効果への影響度を定式化し、実広告運用をサポート/改善する;
- 外部データ:Mデータ、天気データ(未定);
- 広告データ:YSS キーワードインプレッションデータ;
- アウトプットイメージ像:
lightning-echo/*
について
-
作業用データ
mdata/、[client]/: Mデータとクライアントごとの作業フォルダーです。YSS のデータは
[client]/imp_wiki
か[client]/imp_tweet
に格納しています。Note: インプレッションデータの取得に関して、プロジェクト
StormRuler
をご参照ください。 -
Python files
- deal*.py: 基本これで全作業できますが、精度向上や別途の前処理の必要な場合他のプログラムを利用します。詳しい使い方については下記に記載します;
-
freq_cut.py: Mデータからキーワードの tf を計算するプログラム。アウトプット:
term_freq.pkl
。これは共通 pickle ファイルです。
-
fasttext
対象キーワードの類語リストをそのまま出すと変な類語が多く出るので、facebook 社の fasttext というテキストベクトル化ツールを利用して意味的に近い(wikipediaベースかtwitterベースか)類語だけを使用します。
- 各クライアントの作業フォルダーに wiki と tweet のサブ作業フォルダーを用意します;
- fasttext の使い方については公式レポジトリをご参照ください。
deal*.py
の使い方
fasttext の参照元によって deal*.py のファイル名が異なりますが、中身は一緒です。ステップごとに実行すればいいです。コマンド:
$ python3 deal*.py --step[number]
step-wise の説明:
1. 共通処理部
-
step1
テレビ番組データの放送日
をキーに番組名
、MEMO
、ヘッドライン
を取り出して、date_contexts.pkl
に書き込みます。
※ テレビ番組データの例:
"2017/04/01","土曜日","TX","サタ☆シネ「愛の選択」","27","15","29","0","文化・芸能","告知・3","","28","23","49","28","24","19","00:00:30","32361809","20170401122715","2017-04-02","2017-04-02","映画 D"
-
step2
step1 で作ったdate_contexts.pkl
を対象に、MEMO
の中の各単語のログ term frequency をまとめてdate_term_freq.pkl
に書き込みます。 -
step3
YSS データを CSV ファイルに解凍します。 -
step4
解凍した YSS データからキーワード
をキーに日
(日付)とインプレッション数
を取り出してkeyword_date_kpi.pkl
に書き込みます。 -
step5
date_term_freq
の各 term に id をつけます。
2. fasttext
-
c1
YSS キーワードリストをkeywords.pkl
に保存します。 -
c2
事前に用意した fasttext の辞書を利用して YSS キーワードに近いものをまとめてkeyword_terms_*/
に保存します。 ### 3. モデルのトレーニング -
step6
XGBOOST 用のデータを用意します。一単語一ファイルの形で日単位でimpression tv_term1 tf1 tv_term2 tf2...
という形式でouts_*/YSS_term.txt
に書き込みます。 -
step9
outs_*/YSS_term.txt
からファイルごとに XGBOOST 用の configure ファイルを作ります。 -
step10
モデルのトレーニング。
※ トレーニング済みのモデルはmodels_*.xgb/*
にあります。
3. アウトプット
-
step11
学習済みのモデルから fscore をまとめます。
-
co_kw
YSS単語ごとに関連語の fscore × imp(当日分)を計算してまとめます。具体的には:
"電助":
{"2017-05-12":
{"unko": 672374,
"unchi": 234623
},
"2014-07-23":
{"curry": 23467,
"onigiri": 1222
}
}
-
imp
単語のインプレッションをまとめます。