2015年4月18日土曜日

CentOSでFTPサーバーを立てる(3分で)

インストール
sudo yum install vsftpd -y
起動
service vsftpd status
SELinuxを切る(重要)
setenforce 0
クライアント側から接続
$ ftp (ip_address)
ダウンロード
ftp> pwd
257 "/home/sato"
ftp> get images.tar.gz

2015年4月7日火曜日

カラフルで素晴らしいPS1シェルプロンプト

PS1シェルプロンプト

素晴らしいシェルプロンプトを作っている人が。。
gitのブランチをプロンプトにだすという素晴らしいアイディア
http://unix.stackexchange.com/a/178817

Bash $PS1 Generator2.0を使ってさらに好みにしてみた
https://www.kirsle.net/wizards/ps1.html

~/.bashrc以下を追加

git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
# Custom bash prompt via kirsle.net/wizards/ps1.html
export PS1="\[$(tput bold)\]\[$(tput setaf 2)\]\t \[$(tput setaf 4)\]\u@\h\[$(tput setaf 1)\] \W \[$(tput setaf 3)\]\$(git_branch)\[$(tput sgr0)\] $ \[$(tput sgr0)\]"

gitないとき

# Custom bash prompt via kirsle.net/wizards/ps1.html
export PS1="\[$(tput bold)\]\[$(tput setaf 2)\]\t \[$(tput setaf 4)\]\u@\h\[$(tput setaf 1)\] \W \[$(tput sgr0)\] $ \[$(tput sgr0)\]"

完成!!

2015年4月3日金曜日

rubyの@とselfのちがい

下によると、@hoge='hoge'はインスタンス変数を直接書き換えてself.hoge='hoge'はセッターのメソッド経由で書き換えるらしい。

https://www.ruby-forum.com/topic/3546147

2015年3月3日火曜日

railsでのHTTP authentication

railsでのHTTP authentication

app/controllers/application_controller.rbに次のようにhttp_basic_authenticate_withを追加すればOK

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  http_basic_authenticate_with name: "sato", password: "pass" #これを追加
end

こんな感じでURLでアクセス得きるので便利!

http://sato:pass@localhost:3000/

2015年2月21日土曜日

sudoの設定

sudo関連の設定はこれでOK

rootユーザーからvisudoで編集

sudo権限を与えたいユーザーを登録。
NOPASSWORDでパスワードをいちいち問わせない

sato    ALL=(ALL)       NOPASSWD: ALL

secure_pathをコメントアウト

#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

env_keepにPATHを追加

Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY PATH"

2015年1月1日木曜日

Python2.6からMecab

Mecab from python

rubyから使おうとしたときは苦労したし、python3から使おうとするとかなり面倒なようだが
python2.6(CentOS標準)からならかなり楽に使える。
Mecabが既にインストールされていることが前提

ダウンロード

wget https://mecab.googlecode.com/files/mecab-python-0.994.tar.gz
tar zxf mecab-python-0.994.tar.gz
cd mecab-python-0.994
su
python setup.py install

テストプログラム

test.py

# coding: UTF-8
import sys
import MeCab
tagger = MeCab.Tagger ()
print tagger.parse ("吾輩は猫である")

結果

[sato@localhost python_training]$ python test.py 
吾輩  名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
猫   名詞,一般,*,*,*,*,猫,ネコ,ネコ
で   助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある  助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
EOS

2014年11月29日土曜日

bag-of-wordsの次元削減法まとめ

bag-of-wordsはともかく次元が大きい。出現する単語の種類数分の次元がある。

1万次元などは余裕で行ってしまう。このままではまともに識別機を作ることは困難なので
何らかの手段で圧縮してやる必要性がある。

参考:Text Mining Handbook

単語頻度

単純に単語の出現頻度が低いものを考慮から外して次元の削減をするというもの。上位10パーセントの単語のみを使っても識別の精度は変わらないらしい。これは頻度が高い単語の重要度をあげるというTF/IDFの考えに真っ向から反しているが、低すぎる頻度の単語は意味がないのでこれでいいらしい。

Information Gain

\(\text{InformationGain}(x|w)=H(x)-H(x|w)\)
ここで\(x\)は特徴量すなわちbag-of-wordsで\(w\)はある単語。
\(H(x)\)は特徴量のエントロピーで\(H(x|w)\)はある単語\(w\)が発生したとき(わかったとき)特徴量のエントロピー。
つまり$\text{Infomation Gain}$とは、ある単語(次元)を知ることによって、どの程度エントロピーが下がったかという指標。
もっと噛み砕くと、文書を何個かのクラスに分類しようとするとき、単語\(w\)を知ることで、どれだけ分類の特定をすすめられたかの指標になる。

Latent Semantic Indexing

Latent Semantic Indexingとは、まんまSingular Value Decompositionのこと。
bag-of-wordsにSVDを適用して次元削減することをこんな風に呼ぶらしい
SVDに関しては、過去の記事を参照
http://satomemocho.blogspot.jp/2014/10/rsvd.html

なぜわざわざLatent Semantic Indexingと呼ぶかというと、なんか同義語とかを処理できるようだが、詳しくは不明。
以下のサイトをよもう!
http://chasen.org/~taku/blog/archives/2005/11/_tfidf_1.html