2017年9月9日土曜日

MacのSublime text3で書いたJavaScriptが文字化けた話(UTF-8なのに。。)

表題そのままです。
最近、お仕事でデジタルマーケティング界隈のアレをホニャララするようになってきまして、齢40手前にしてJavaScriptを勉強なうです。

まずは、開発環境だと思い、MacにSublime text3をインストールし、参考書のJavaScriptを写経していました。
そのコードを試しにブラウザで開いてみると・・・全く同じコードなのに文字化ける?UTF-8で保存しているのに。。



唸りながら色々と調べていたら「UTF-8 with BOM」で保存する必要性に気づいたわけです。
以下、参考にしたURLを順に記載してきます。

※注意:
MacのSublime text3だと、最初、「Sublime text3」→「Preference」→「基本設定-標準」で開いても設定ファイルが編集できないようです。
一旦、開いた設定ファイルをcmd+Sで保存してから開き直すと「false→true」のパラメータ変更などが可能になりました。


SublimeTextの設定まとめ
http://blog.seeds-std.co.jp/entry/1871.html

Sublime Text 3 のステータスバーに文字コードを表示する方法 (ついでに改行コードも)
https://beadored.com/sublime-text-3-character_code/

UTF-8のBOMにはまった話
http://qiita.com/MuriNishimori/items/a89fe986e28909208e30

上記をリファーしてSublime text3の設定を変更しましたら、「ファイル」→「エンコードを指定して上書き保存」→「UTF-8 with BOM」で保存してください。

(JavaScript)基礎用語をコソっと書き留めた。

備忘録代わりにJavaScriptの基礎をキソっと・・・コソっと書いておきます。
今後、適宜、追記しようかと思います。

■基本用語

項目内容
CSSWebページのデザインやレイアウトを決める為に使われるファイルで、別名「スタイルシート」という。
セレクタHTML文書中の要素。
プロパティセレクタに記載された色やフォントなどの属性。
JavaScriptにおける処理の単位。文末には「;」(セミコロン)をつける。

・スタイルシートの記述例
body{
    background-color: #FFFFFF;
}
セレクタ プロパティ 


■オブジェクトについて

項目内容
オブジェクトプロパティとメソッドをまとめたもの。オブジェクト内には「プロパティ」と「メソッド」の「メンバ」がある。
プロパティオブジェクトによってまとめられたデータ。
メソッドオブジェクトによってまとめられた機能。

オブジェクトの記述の仕方
・プロパティの場合
 オブジェクト.プロパティ
・メソッドの場合
 オブジェクト.メソッド

とりあえず、まずは、これぐらいで。

2017年9月2日土曜日

Mac環境でのSublime Text3を用いたJava Script環境づくり

齢40手前にして、お仕事でJava Scriptを使う必要性が出てきました。
まずは、開発環境を整えたいので、下記サイトを参照しながら整備しましたです。

実施環境については、以下の通りです。


・MacBook Air:CPU:1.6GHz,Memory 8GB
・macOS Sierra ver10.12.3
・Sublime Text3 Build 3126


参照サイトと実施内容


Sublime Text - パッケージのインストール
https://webkaru.net/dev/sublime-text-package-install/
→Mac環境におけるSublime Text3のインストール方法が記載されています。

<Sublime Text3でのパッケージインストール>
 ・Command + Shift + P
     ↓
 ・Package Controlのフォームに「install」と入力
     ↓
 ・インストールしたいパッケージ名の一部を入力
     ↓
 ・returnキーを押す
     ↓
 ・ウインドウ下部のメニューバーにインストール完了のメッセージが表示される


Sublime Text3 のインストール直後に行った設定メモ
http://tomoyamkung.net/2014/03/06/sublimetext3-install/
→表題の通りです。「IMESupport 」「Vintageous」以外を入力し、フォントサイズを変更しました。

とりあえず、動きましたっ!


2017年8月29日火曜日

R言語:「stringr」パッケージでレビューデータの加工が簡単(その3)

ほんとに小ネタなのですが、原因気づくのに時間がかかったので備忘録がわりに。
過去、何回かに分けて宿泊レビューのテキストマイニングの前処理を色々やっておりました。

R言語:「stringr」パッケージでレビューデータの加工が簡単。
http://sapporomkt.blogspot.jp/2017/08/rstringr.html

R言語:「stringr」パッケージでレビューデータの加工が簡単(その2)
http://sapporomkt.blogspot.jp/2017/08/rstringr2.html


今回、テキストマイニングで集計したデータ(品詞の頻度など)と、性別や年代といった属性データを掛け合わせた分析するため、後者の分布状況などをヒストグラムなどで確認しようと思ったところ凡ミスしたのでご紹介です。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


ソースコードのご紹介


わかったら何のこともない凡ミスだったのですが、ソースコードは以下です。
データの読み込みプロセスなどは以前のエントリーをご参照ください。

# 宿泊者の満足度(CS)が入っている「rank」でヒストグラムを・・・できません。
hist(hotel2.dat[,"rank"])
 hist.default(hotel2.dat[, "purpose1"]) でエラー:
   'x' は数値でなければなりません


# 各変数のクラスをザラーっと調べてみます。
# 「rank」がcharacter型になっていますね。numeric型じゃなきゃ、ダメだこりゃ。
sapply(hotel2.dat,class)
          rank           user          time1   com_sentence       purpose1
   "character"    "character"    "character"    "character"    "character"
      purpose2       purpose3          time2 reply_sentence          plan1
   "character"    "character"    "character"    "character"    "character"
         plan2      user_name            age            sex            flg
   "character"    "character"    "character"    "character"      "logical"

# rankをnumeric型に変換して元のデータセットに上書きします。
hotel2.dat$rank <- as.numeric(hotel2.dat$rank)

# 念のためチェックします。「rank」がnumeric型になっていますね。
sapply(hotel2.dat,class)
          rank           user          time1   com_sentence       purpose1
     "numeric"    "character"    "character"    "character"    "character"
      purpose2       purpose3          time2 reply_sentence          plan1
   "character"    "character"    "character"    "character"    "character"
         plan2      user_name            age            sex            flg
   "character"    "character"    "character"    "character"      "logical"

# 再度、ヒストグラムにトライです。colには他の色も適用可能です。colors() で色々出てきます。
hist(hotel2.dat[,"rank"], col ="aliceblue")


# せっかくなのでクロス集計もしてみます。
hotel2.crs <- xtabs(~purpose2+sex, data=hotel2.dat)
hotel2.crs

         sex
purpose2   女性 男性
              1    1
  その他      1    1
  一人        6   12
  家族       58   77
  仕事仲間    1    0
  友達        8    6
  恋人        4    7

# 有用性はアレですが、モザイクプロットでも。
# どうてもいいですが、表頭と表側が入れ替わるんですね。
mosaicplot(hotel2.crs)


以上です。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月27日日曜日

R言語:「stringr」パッケージでレビューデータの加工が簡単(その2)

前回、「stringr」パッケージを使って宿泊レビューデータの加工プロセスをまとめました。

R言語:「stringr」パッケージでレビューデータの加工が簡単。
http://sapporomkt.blogspot.jp/2017/08/rstringr.html

「よし、これでテキストマイニングできるぞー」と思ったら・・・「宿泊利用目的」のカラムに「宿泊年月」データが混入orz...
まぁ、ソーシャルデータのテキストマイニング前処理にはよくある話ですね。


今回は、地味ですが、上記で混在している「宿泊年月」データを「stringr」パッケージを使って正しいカラムに移動する手順をご紹介します。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


「if文無しでもいけちゃう」ソースコードのご紹介


最初、苦労したのは下記仕様への対応でした。
1.「宿泊年月」が混在している行だけ特定する
2. 上記1の「宿泊年月」データのみ、正しい「宿泊年月」カラムにコピーする
3. 移動後に不要となった上記1の「宿泊年月」データを削除する

if文での関数化も検討しましたが、「Rでif文はあまり使うな」的なことが多く書いていたので「stringr」パッケージだけでやってみました。
※分析データの読み込みなどは、前回エントリーをご覧ください。

# purpose1に年月が入ったセルにフラグを立てます。
# str_detect関数は、( )内の第1引数である読み込みデータの中で、第2引数に指定した検索条件に合致した場合にフラグ値を返します。
# " "内は正規表現が利用できます。文頭から文末にかけて、「数字4文字+年と数字2文字+2文字」だけが入力された文のみ検索条件にします。
hotel2.dat$flg <- str_detect(hotel2.dat$purpose1, "^\\d{4}年\\d{2}月$")

# 上記のフラグ立てが間違っていないことを確認してください。問題なければ、上記に該当する行番号を先ほどのコードを「↑」キーで呼び出して、下記のように書き換えてください。
# 「which」は「TRUE」に該当する行番号だけを取得してくれます。
okikae_num <- which(str_detect(hotel2.dat$purpose1, "^\\d{4}年\\d{2}月$"))

# purpose3に混在した年月情報を移動します。
hotel2.dat[c(okikae_num),"purpose3"] <- hotel2.dat[c(okikae_num),"purpose1"]

# 年月だけのセルにnullを入れます。str_replace関数は、名称から推察される通り「置換」です。
hotel2.dat$purpose1 <- str_replace(hotel2.dat$purpose1,"^\\d{4}年\\d{2}月$","")

# クロス集計でおかしなデータがないか確認します。
rpivotTable(hotel2.dat)


表側にある「purpose1」(宿泊目的)から年月が消えています。表頭は「満足度」ですが、N数が少ないものの、「その他」における低い満足度(1が最低)がやや多いのが面白いですね。

ご紹介は以上です。おそらくもっと上手いやり方があるような気もしますが、if文無しで数行のコードでこのようなデータ加工ができるのは便利ですね。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月24日木曜日

新宿アカシアが羽田空港第2ターミナルにもあった!〜ロールキャベツの名店

先日、羽田空港第2ターミナルに行ったのですが、そこで新宿にあるロールキャベツの名店「アカシア」を発見しましたっ!


場所は、第2ターミナルマーケットプレイスの4階でエスカレーターを上がった右手すぐのところにあります。若干、目立ちにくいですが、この日もほぼ満席でした。


メニューは店内にもありますが、本店とお値段はほぼ変わらずでした。
空港の食事は高いものが多いのでありがたいですね。


自分は、もちろん、ロールキャベツ!
味やボリュームも本店と変わらずお値打ちです!


嫁さんはポークカツ。初めて食べたのですが、くどくなくて美味しかったです。


出発・到着前後でお時間のある方には、是非ともオススメしたいお店です。

R言語:「stringr」パッケージでレビューデータの加工が簡単。

レビューデータのテキストマイニングがしたくて、データ加工プロセスのお勉強なうです。
「stringr」パッケージが使いやすいと評判だったので、今更ながら書いてみました。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


思ってたよりも簡単だったソースコードのご紹介


実施前は難しいかなと思っていましたが、やってみたら意外と簡単でした。

# パッケージの読み込み。
# 「xlsx」形式の読み込みは他にもパッケージがありますが、Javaの導入など面倒が増えるので、このパッケージがオススメです。ただし、「xls」形式は読めません。
library(openxlsx)
library(dplyr)

# データの読み込み
setwd("~/blog/hotel_170819_TM")
hotel.dat <- read.xlsx("170819_hotel.xlsx")

# カラム名を表示します。不要なカラムもたくさん含まれています。
colnames(hotel.dat)
 [1] "url"            "rank"           "com_title"    
 [4] "com_title_link" "user"           "time1"        
 [7] "com_sentence"   "flg1"           "flg1_link"    
[10] "flg2"           "flg2_link"      "flg3"         
[13] "flg3_link"      "purpose1"       "purpose2"     
[16] "purpose3"       "time2"          "reply_sentence"
[19] "plan1"          "plan2_link"     "plan2"

# 分析データをattachします。「hotel.dat$hoge」と入力せずに、hogeで狙ったカラムにアクセスできます。
attach(hotel.dat)

# 分析に必要なカラムだけ抜き出します。見た目はわかりづらいですが、「dplyr」パッケージのおかげです。
hotel2.dat <- select(hotel.dat,rank,user,time1,com_sentence,purpose1,purpose2,purpose3,time2,reply_sentence,plan1,plan2)

# データ内容を確認してみます。
View(hotel2.dat)

今回用いたデータセットでは、user列に、「ユーザー名・年代・性別」データが同一カラムに入っていました。年代・性別は分析に有用なので別カラムに切り出したいです。

小田一弥さん [30代/男性]

user_nameagesex
小田一弥さん30代男性

「おっと、正規表現だな・・・」と思われたあなた、大丈夫です。
自分も不慣れですが、今回はとっても簡単です。

# パッケージを読み込みます。最初は「for」で繰り返し処理を書こうと思ったのですが、こちらの方がずっとシンプルで早いそうです。
library(stringr)

# userの名前と年代・性別を分離
hotel2.dat$user_name <- str_extract(hotel2.dat$user,"^.*さん")
hotel2.dat$age <- str_extract(hotel2.dat$user,"\\d{2}代")
hotel2.dat$sex <- str_extract(hotel2.dat$user,".性")

 View関数で見ると下記のようになります。


# パッケージを読み込みます。
library(rpivotTable)
# グラフ化します
rpivotTable(hotel2.dat)


以上です。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

Google+ Followers