桶屋: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
単語のインプレッションをまとめます。
