2013年8月21日水曜日

無料でソーシャルリスニング(twitter)をする方法 その2

1.特定キーワードのツイートを収集する


「PythonでtwitterのAPIを叩く」と息巻いて書いたのですが、
twitterのAPIの仕様変更が頻繁におこなわれるそうで、
その度にちまちまソースコードを変えるのも煩わしいので、
別の方法はないかと模索しておりました。

で、なんとCSVで検索結果を吐き出してくれる便利なWebサービスがあるみたいです。

「1500ったー」

こちらから、分析したい検索キーワードを引っ張ってきます。

2.ツイートを形態素解析する(MeCabで分解!)

まずMeCabをインストールする必要があります。
インストールする方法は色々とあるのですが、
MacPortsをインストールした上で、
MeCabをインストールするのが便利です。

0.macportのインストール
下記のURLで、インストールの手順が網羅されているかと思われます。

1.MeCabのインストール
流れは下記のとおりです。
  
#MeCabのインストール
sudo port install mecab

#形態素分析用の辞書のダウンロードとインストール
#wgetがインストールされていない場合には、mecabと同様にportからインストールする必要があります。
wget http://iij.dl.sourceforge.jp/naist-jdic/53500/mecab-naist-jdic-0.6.3b-20111013.tar.gz
tar zxf mecab-naist-jdic-0.6.3b-20111013.tar.gz
cd mecab-naist-jdic-0.6.3b-20111013
./configure --with-charset=utf8
make
make install

#形態素分析用の辞書の指定
#emacsが入っていない場合には、mecabと同様にportからインストールする必要があります。
cd /opt/local/etc
sudo emacs mecabrc

#emacsで開いた後に、
#dicdir = /usr/local/lib/mecab/dic/mecab-ipadicを
#dicdir = /usr/local/lib/mecab/dic/mecab-naistに書き換え


※なにも分からずにコピペでやろうとすると、
 支障をきたすおそれがあるので、
 バックアップはしっかりとって調べながら作業してください!

2.日本語の形態素解析

ここまで正常にインストールが完了したら、準備万端です。
MeCabを起動して、日本語を入力すると、
形態素解析ができるようになるかと思わます。


〜その3へ続く〜

2013年8月8日木曜日

データクレンジングの方法 ~awkを使ったデータクレンジング~

以前、SQLとRでクレンジングをするやり方を記事にしました。

ただ、SQLとRも便利なんですが、
awkももっと便利だと気づいたので、メモを残したいと思います。

------
道はそれますが、

分析業務で一番時間をとられるのは、
データのクレンジングだったりするんですけど、
手法について整理された本てあまりないですよね?
システム環境とか、分析のゴールによって
クレンジングの仕方って変わるんで、
まとめるのが難しのが理由なのかもしれませんが。。

いろいろ調べて、「Bad Data」という洋書になんか
書かれているのではないかと思ってるんですけど、
洋書なんですよね。。 英語がんばろ。。

------

で、awkですが
こちらはプログラミング言語スクリプト言語です。
でも、VBAとかPythonよりも簡単につかえます。
なんたってもうエクセル関数を扱うノリでつかえます。
個人的には、Rよりもawkの方が実務向きなのではと思ってしまえます。


1.awkはどうやって使うの?

macを使っている方であれば、ターミナルを起動をすればすぐに使えます。

①ターミナルを起動
 Lanchpadのその他の中にあります。

②コマンドcdを使って、データが入っているディレクトリに移動 
 <コマンド例: cd data/criantA>

③コマンドawkを使って、ファイル「list.csv」の2列目だけのデータを取得       
 <コマンド例: awk '{BEGIN{FS = ","}{print $2}}' list.csv>

上記の3つの操作だけで、簡単にawkを試せてしまうのです。

※分からない方はbash(シェル)の勉強をおすすめします!
※Windosの方はgawkというものをダウンロードすれば使えるようです。

2.awkってなんなの?

データファイルの中身を一行ずつ処理してくれる、プログラミング言語スクリプト言語です。

http://antlers.cis.ibaraki.ac.jp/PROGRAM/CPROG/125.pdf

リンク先PDFの2P目が分かりやすいです。


3.awkの操作方法はどうやるの?

先ほどのように、ターミナルからコマンドを使って処理命令を出します。
具体的な命令の例については下記のURLがとても参考になります。

http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/awk/intro/awk-intro.pdf

※リンク先PDFの4P以降がわかりやすいです。

具体的な説明はリンクまかせになってしまいましたが。。
awkはとても便利ですよというお話をしたかったまでです。

エクセルでは扱えない大きなデータを処理するための
一歩として、確実に身に着けておきたい分析ツールのひとつだと思います!

2013年8月7日水曜日

無料でソーシャルリスニング(twitter)をする方法 その1

ソーシャルリスニングって、
お金をかけずにマーケティングできるので便利ですよね。
効果検証も頑張ってやろうと思っても、
キーワードを引っ張ってきて目でみてポジネガを仕分けるという人力になってしまいがち。

今回は、お金をかけずに
どうにか自動で仕分けできる方法はないかと検討してみたいと思います。

---
1.特定キーワードのツイートを収集する(PythonでtwitterのAPIを叩く!)
2.ツイートを形態素解析する(Mecabで分解!)
3.解析結果をクレンジング(awkでRに取り込める形に!)
4.特定キーワードと一緒にツイートされている言葉を確認する(Rのarulesを使ってグラフ化!)
---

今回の分析は、「特定キーワード」がどのようにつぶやかれていて、
どんな印象をもたれているかを分析することに重きをおいてますね。

やり方については、おいおい書いていきます。

2013年7月26日金曜日

エクセルでできる広告予算の最適化を考える   その3

ここでは仮に3つの数値(Cost、Click、CV)をもとに、
DEAから広告効率を評価をする方法を説明します。

■手順
1.エクセルシートをダウンロード。
2.データを貼り付ける。
3.計算の準備をする。
4.媒体ごとの効率値を求める。
5.効率値から媒体を評価する。

の手順で最適な広告を抽出します。

  
■手順の詳細
1.エクセルシートをダウンロード。
 エクセルのシートをここからダウンロードしてください。


2.データを貼り付ける。

  ・はりつけるところは、オレンジ色の太枠で囲ったところです。
  ・詳しい計算の仕方などは、計算しきをご参照ください。

3.計算の準備をする(ソルバーを設定する。)
 

  ・目的セルは赤字のセルの値。
   なお、目的セルとは最大化(or最小化or特定の値)したい対象の値です。

  ・目的値は「最大化」にチェック。
  
  ・変数セルの変更は、薄いオレンジで塗られている箇所です。
   なお、変更セルは、該当の値を変化させる事によって、
   目的値を最大化させる変数のことです。

  ・制約条件の対象は、上から2表目の条件式と記載される行です。
   この条件は各媒体の条件式が1を超えてはいけないという条件です。

  ・制約のない変数を非負数にするにチェックをいれる。
  
  ・解決方法の選択は「シンプレックス LP」を選択。

  ・最後に「解決」を押すと計算ができます。
  
  ※使用されるエクセルによっては、ソルバーが入っていない場合があります。
   その場合は、「エクセル ソルバー 導入」などで検索をかけてみてください!

4.媒体ごとのD効率値を求める。
・ソルバーを使って一個一個の媒体の効率値を計算します。
   計算する対象の媒体は効率値の横の青枠で囲ったセルで変更できます。

  ・青枠のセルを変えてから「3.」の操作を行い、それを繰り返して、
   すべての媒体の効率値を計算します。

   ※計算が終わったごとに上から3番目の表に数値をコピーして記録していきます。


5.効率値から媒体を評価する。
 すべての操作が終わったら、効率値で媒体を評価することが可能です。


■DEAの詳しい仕組みや、効率値の読み解き方等
 このあたりはまた後日。。。

■詳細を知りたい方。。
 本記事は、下記の本を参考に記載しています。
 さらに、詳しい計算の仕組みなどについては、228P以降に掲載されていますので、
 こちらの本をご参照ください。


 

2013年7月23日火曜日

データクレンジングの方法

分析ができるようにデータを整理整頓することを
データクレンジングと言います。
あらゆるデータを紐付けて、
分析用のデータセットを作ります。

データクレンジングは大きく3つの操作があるかと思っています。

1.結合
2.整列
3.抽出

1.結合(マージ)
 結合は、正規化されたデータを分析用にデータをまとめる作業です。
 たとえば、コンビニの売上データを分析するときに、
 2つのデータが用意されていたとします。
  ----
   データ名:df1(店舗属性) カラムの名前: ShopID | adress | openDate
   データ名:df2(店舗売上) カラムの名前: ShopID | totalRevenue
  ----

 これをSQLで結合を行う場合は
  select * from df1 innner join df2 on df1.ShopId = df2.ShopID;
 これをRで結合する場合は
  merge(df1,df2,by="ShopID",all = T)

2.整列(ソート)
 整列は、まとめたデータを順番に並べる作業です。
 コンビニの売上データの例をとると、
 「出店日」順で並べる。
 「店舗売上」順で並べる。といった操作です。

 「出店日順で並べる。」をSQLで行う場合には
    select * from df3 order by openDate ; 
  同じくRで行う場合には
   
merge(df1,df2,by="ShopID",all = T)

  (*)df3はdf1とdf2をマージしたデータです。

3.抽出(フィルタリング)
 抽出は、データを意味のあるデータ群にまとめる作業です。
 同じようにコンビニの売上データの例をとると
 「店舗売上」を5億円超をAランク、5億円〜3億円をBランク、
  「出店日」を年度ごとにまとめる。といった作業です。


 ランク付けをSQLで行う場合には
  
select * from df3 where totalRevenue > 500000000;
select * from df3 where totalRevenue < 500000000 and totalRevenue >= 300000000;

同じく、Rで行う場合には
 
rankA <- (df3$totalrevenue > 500000000)
rankB <- (df3$totalrevenue <= 500000000) &(df3$totalrevenue > 300000000)


df_rankA <- df3[rankA,]
df_rankB <- df3[rankB,]



以下、補足
◯データクレンジングの操作は本当にこれだけ?
重複チェック、Nullチェックや、ナンバリングなど他にも
細かい操作はたくさんあるかと思いますが、
基本は上記の3つの組み合わせの作業なのかなと思ってます。

◯結合について
結合は、内部結合、外部結合を正しく理解してデータ操作を行い、
正しく結合しないと、存在しないはずのデータが増えたりします!
データクレンジングの作業にも落とし穴があるので、確認しながら作業をすることが大事です!