夢に向かって、好奇心を持ち、疑問を持ち続ける。それが努力。

趣味でロボット職人を目指す自称AI研究者のメモです。

googleのword2vecを使ってみる(on Mac)

word2vecって良くきくので,昨年googleが公開したword2vecを使ってみたいと思います.

インストールは簡単

git clone https://github.com/svn2github/word2vec.git

でgitから取ってくるだけ.

cd word2vec でディレクトリに入り,
make が通れば完了.

私の環境では(特にmacでは)
malloc.hがないと怒られたので.

#include <malloc.h>

を全て

#include <stdlib.h>

に変更.

無事にコンパイルが通りました.

あとは,

./demo-word.sh

を実行して,単語を入力すればデモの試し成功!

と思ったら,
wgetコマンドがなくてtrain用データのインストールが失敗していた.

gzip: can't stat: text8.gz (text8.gz.gz): No such file or directory

ので,demo-word.shの中でwgetコマンドを curl -o に変更.

curl http://mattmahoney.net/dc/text8.zip -o text8.gz

さらに,
ERROR: training data file not found!

と怒られたが,
http://mattmahoney.net/dc/text8.zipがうまく保存できていなかったり
パスの指定が誤ってたりすると,解凍に失敗するので,
上記エラーがでたときは,保存データの容量等でうまく保存できているか確認すると良さそうです.


ロードと学習が成功すれば,次回以降は,毎回学習する必要はないので,

./distance vectors.bin

だけで使えます.

以上!


<参考>
malloc.hについては以下のページにお世話になりました.感謝!
http://blog.tottokug.com/entry/2014/04/17/160603

pythonの文字コードについて

pythonは文字列処理が得意だけど日本語を扱うときは文字コードがちょっと厄介だったりする.

特に注意が必要なunicode型とstr型について私がはまったところをメモ.

やりたかったことは,キーに日本語文字列を持つ辞書に対して,標準入力で取得した日本語文字列との比較を行いマッチしたら”OK”を返すというもの.

これに対して,同じ日本語であるはずなのに,比較で失敗する事象が発生した.
最初から文字コードを疑っていたので.全てのファイルに
# coding: utf-8
を記載.ファイル読み込みなどの箇所は,全て,’utf-8’にした.

しかし,まだ一致しない..

疑ったのは,unicode, stringの型の違い.

やっぱりそうだった.


 pythonから標準入力をするとき,入力はstring形式である.

 しかし,辞書のキーに日本語文字列を用いるとき,unicode型で保存される.

従って,辞書の中に標準入力から取得した文字列そのままを当てはめようとすると,失敗する.

以下に成功する例と失敗する例を記載する.

def proc(instr):
    // 失敗する例
    if instr in dic.keys():
        print “this cannot match”

    // 成功する例
    units = unicode(instr, ‘utf-8’)
    if units in dic.keys():
        print “this can succeed to match”

while(True):
    line = raw_input('input : ')  
    ## for stdin
    insert = proc(line) 
    print instr

ちなみにdicは,
dic={u'あ':aaa, u'い':iii}
のような形式を想定.

以上.

ご参考まで:)

Matlabを使いこなす(入出力編)

Matlabの入出力にはいろんなファイル形式に対応してて便利です.
今日はそのうちの少しを紹介します.

・入力関数
load
dlmread
textread
wk1read
imread
wavread
aviread

・出力関数
save
fprintf
dlmwrite
wk1write
imwrite
wavwrite
avifile

以下によく使う出力・入力のセットをサンプルコードで書いたので,参考にどうぞ.

・saveとloadのサンプル

 a=3
 b=[2,3]
 % 出力(パラメータの保存)
 filename='matsample.mat'
 save(filename)
 % 入力(パラメータの取得 )
 c=load(filename)
 c.a  
 c.b

・dlmwriteとdlmreadのサンプル

  b=[1,2,3;2,3,1;3;3;5]
  % 出力(保存)
  filename='csvsample.dat'
  dlmwrite(filename,b,',')
  csvwrite(filename,b)
  % 入力(ロード)
  dlm=dlmread(filename, ',')
  csv=csvread(filename)

 
・fopenを使ったテキスト入出力

  % 出力
  sampletext='aabbcc\ndef'
  filename='sample.txt'
  fileid=fopen(filename,'w')
  fprintf(fileid,sampletext)
  fclose(fileid)
  % 入力
  fileid=fopen(filename)
  while fileid < 0
      line=fgetl(fileid)
	  disp(line)
  end
  fclose(fileid)

以上です.
Matlab入門講座はまた〜!

boost.pythonを使って見る

boost.pythonは,C++の関するやライブラリをpythonから簡単に使えるようにするためのパッケージ.

どれだけ便利かについては,以下のURLが参考になる.
Boost.Python の機能をざっと紹介してみる - muddy brown thang

以下はlinuxでのインストール手順について簡単にまとめたので参考程度に.

boost.pythonのサイトは,以下.
Boost C++ Libraries

まず,wgetコマンドにて,urlからパッケージをダウンロードします.
wget https://sourceforge.net/projects/boost/files/boost/1.62.0/boost_1_62_0.tar.bz2

次に,解凍.
tar --bzip2 -xf boost_1_62_0.tar.bz2

PATHに展開先ディレクトリを指定することで,
pythonファイル内でimport boost/python ができるはず.

以上です.また:)

anacondaを使ってpython2系3系を共存させる

python2系とpython3系って意外に違って困ることありますよね.

今日はanacondaを使って両方を切り替えて使う方法を紹介します.
# anacondaはすでにインストールされている前提で記載します.

anaconda3で,python3系が使われている場合
pythonと打った時に,pythonのバージョンが表示されるのでどちらが動いているか確認できます)

以下のコマンドでpython2系の環境が構築できます.

conda create -n py2 python=2.7

続いて,
source activate py2

とすれば,上記で構築したpython2.7の環境に入ることができます.

以上.anacondaを使っていると簡単ですね.


anacondaでない場合には,pyenvを使って切り替える方法があります,
以下,簡単にメモしておきます.



まずはpyenvを使えるようにします.
以下からインストールしてください.

git clone https://github.com/yyuu/pyenv ~/.pyenv

次にpyenvを使えるように設定します.

~/.bashrcの中に,

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

を追記してください.

source ~/.bashrcもしくは,bashの再起動で,変更を反映させたら,
pyenv version
と打ってエラーにならないことを確認します.


環境構築はここまで.

その後,python実行時に,python2 *.pyやpython3 *.pyとすることで,
バージョンを指定して実行することができます.

以上.

これでpythonの実行環境が快適になりました☆

LaTeX Beamerのインストール方法のメモと注意点

数式をたくさん使うパワポを作る人は,LaTeXで作ると便利ですよね.

そいうことで,Beamerのインストール手順とその注意点を記述します.

# ここでは,TeXShopが,以下のサイトの手順でダウンロードされていること前提です.
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/install_ptex.html

まず,Beamerのサイトから,beamer,pgf,xcolorをダウンロードしてきます.
https://sourceforge.net/projects/latex-beamer/files/?source=navbar

このときに,ダウンロード先は,できれば,texのshareの下とかにbeamerディレクトリを作って入れることと,
latex-beamer-x.x.x.tar.gzの展開は,beamerとして
pgf-x.x.x.tar.gzの展開は,pgfとして
xcolor-x.x.x.tar.gzの展開は,xcolorとして
保存してから,tar xzvfコマンドで展開するのが良い.

# 保存先を間違えたからといって,コピーして同じものを残しておくと,
# beamerファイルのコンパイルの時にエラーになるので注意.


最後に,binディレクトリの中にある.mktexlsrを実行する(なくても良いらしい)と,
beamerのサンプルファイルを,TeXShopLaTeXコンパイルするだけで,pdfのプレゼン資料が完成する.


LaTeX便利ですね.以上です.

vimのカラー表示on MAC

macで普通にvi コマンドでスクリプトを開いても,白黒の表示しかしてくれない.

どうやってやるんだろう?って思ったら,以外に簡単でした.

しかもデフォルトで,色のパッケージが入っている...素敵すぎる..


/usr/share/vim/vim73/colorsの中に,パッケージ群 (〜.vimというファイルが複数)
あるので,それの一つを .vimrcで指定するだけでOK.

たとえば,murphy.vimにしたければ,

~/.vimrcの中身に,

colorscheme murphy
syntax on

と記述するだけ.

基本,ここで,
source ./vimrc
とかやりたくなるけど,そうするとcolorscheme command not foundと怒られる.

vimは,viコマンドで起動するごとに,~/.vimrcが読み込まれるので,
sourceは実行する必要なし.

command not foundが返ってきて心配になったけど,ちゃんと反映されてました(パチパチ)

快適な環境になったので,ソースコードが捗りそうだぁ〜

ではまた.