vimでMarkdownをhtmlへ変換

1.http://daringfireball.net/projects/markdown/こちらのページからMarkdown1.0.1をダウンロード解凍する. 2.“Markdown.pl"を”/usr/local/bin"に移動する. 3.utf8を使えるように,“Markdown.pl"のはじめに,“use utf8;“を追加する. 4.vimから使えるように,以下のコードを”.vimrc"に追加する. nmap \md :%!/usr/local/bin/Markdown.pl --html4tag 5.終わりです.vimでmarkdownのテキストを書き,"\md"でhtmlへ変換されます. 参考:http://net.tutsplus.com/tutorials/other/vim-essential-plugin-markdown-to-html

April 30, 2013

HenTai-編入体験談-

...

April 28, 2013

linux kernel 3.8.8のコンパイル(ubunut12.04)

Ubuntu12.04上でlinux kernel3.8.8のコンパイルをしたので,そのメモです. 依存パッケージのインストール もし’make xconfig’をするつもりなら,qt3-dev-toolsとlibqt3-mt-devが必要になる.‘make menuconfig’をするつもりなら,libncurses5とlibncurse5-devが必要になる.ここでは,取り敢えず全部入れておく. sudo apt-get update sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev linux-source qt3-dev-tools libqt3-mt-dev libncurses5 libncurses5-dev fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernel-package kernelソースの取得 次に,https://www.kernel.org/からkernelのソースコードを取得する.はじめは,githubからcloneしてましたが,すごく時間がかかるので,やめました./usr/srcにダウンロードしてきて,解凍しているだけです. cd /usr/src sudo wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.8.8.tar.bz2 sudo tar -xjvf linux-3.8.8.tar.bz2 設定 ソースコードを取ってきた状態では,いろんな環境をサポートしているので,かなり大きくなってしまって,コンパイルに時間がかかるので必要なものだけを選んでいきます.最初に,今まで使っていた設定を再利用しました.新しく追加されたオプションに関してはその度に聞かれます. cd linux-3.8.8 sudo cp /boot/config-3.2.0-24-generic-pae .config sudo make oldconfig 続いて,‘make menuconfig’で設定をしました.(‘make xconfig’でもいい.)どっちにしても,メニューが出てきて,必要なオプションを選ぶ.“Save Configuration to an Alternate File"を選ぶと,違うファイル名で保存できて,バックアップなどもできます. 何もなし - 使わない. M - モジュールとしてコンパイルして,必要なときにロードされる. カーネルと一緒コンパイルされ,カーネルと一緒にロードされる. make menuconfig コンパイル Debianでは’make’と’make install’の代わりに,‘make-kpkg’でコンパイルをします.この方法では,.debパッケージができます.結構時間かかります.’export CONCURRENCY_LEVEL=4’を先にやっておくと,並列にコンパイルしてくれるみたいです. fakeroot make-kpkg --initrd --revision=1.0.bobuhiro11 kernel-image kernel-headers インストール コンパイルが終わって,.debパッケージが出来たら,それをインストールします.rebootすれば,適用されます. sudo dpkg -i linux-image-3.8.8_1.0.bobuhiro11_i386.deb sudo dpkg -i linux-headers-3.8.8_1.0.bobuhiro11_i386.deb sudo reboot # reboot後 uname -r 3.8.8 正直,設定ファイルいじりはさっぱりです. ...

April 26, 2013

system callの追加(kernel 3.8.8)

system callの登録 カーネル3.8.8のソースを準備します.まず,syscalls_32.tblの最後に以下のように,追加したいsystem callsの名前を書きます.この時の番号は覚えておく(ここでは,351).次に, syscalls.hの最後に,プロトタイプを書いておきます. $ cd /usr/src/linux-3.8.8 $ sudo vim arch/x86/syscalls/syscall_32.tbl 351 i356 kanako sys_kanako # 最後に追加 $ sudo vim include/linux/syscalls.h asmlinkage long sys_kanako(void); # 最後に追加 system callの中身 sys.cの最後に,system callの中身を書いていきます.今回はprintk()を使って,コンソールログにメッセージを出力させました. $ sudo vim kernel/sys.c asmlinkage long sys_kanako(void){ printk("Cinderella of tea plantation\n") return 0; } コンパイル・インストール sudo fakeroot make-kpkg --initrd --revision=1.0.mysyscall kernel-image kernel-headers sudo dpkg -i linux-image-3.8.8_1.0.mysyscall_i386.deb sudo dpkg -i linux-headers-3.8.8_1.0.mysyscall_i386.deb sudo reboot 確認 syscall()で登録したsystem callを呼び出します.実行後,dmesgコマンドを使うと,正しくメッセージが出力されることがわかります. ...

April 26, 2013

ubuntuのインストールメモ

Ubuntu12.04 LTSを入れたので,そのメモ # ubuntu 10.10 以前のgnomeのパネルを復活させる. $ sudo apt-get install gnome-panel # mozc $ sudo apt-get install ibus-mozc mozc-server mozc-utils-gui # chrome $ sudo apt-get install google-chrome-stable # vlc $ sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc # dropbox $ sudo apt-get install nautilus-dropbox # inkscape $ sudo apt-get install inkscape # git $ sudo apt-get install git $ git config --global user.name "bobuhiro11" $ git config --global user.email "hogehoge@hoge.com" $ git clone git@github.com:bobuhiro11/dotfiles.git # vim $ sudo apt-get install vim $ cp dotfiles/.vimrc ~ utf8に対応したplatexのインストール http://ameblo.jp/tgnx8810/entry-11082511522.html ...

April 23, 2013

rubyでbrainfuckインタプリタ

Brainfuckの言語仕様 これは,wikipediaからの引用です. 処理系は次の要素から成る: Brainfuckプログラム、インストラクションポインタ(プログラム中のある文字を指す)、少なくとも30000個の要素を持つバイトの配列(各要素はゼロで初期化される)、データポインタ(前述の配列のどれかの要素を指す。最も左の要素を指すよう初期化される)、入力と出力の2つのバイトストリーム。 Brainfuckプログラムは、以下の8個の実行可能な命令から成る(他の文字は無視され、読み飛ばされる)。 ポインタをインクリメントする。ポインタをptrとすると、C言語の「ptr++;」に相当する。 < ポインタをデクリメントする。C言語の「ptr–;」に相当。 ポインタが指す値をインクリメントする。C言語の「(*ptr)++;」に相当。 ポインタが指す値をデクリメントする。C言語の「(*ptr)–;」に相当。 . ポインタが指す値を出力に書き出す。C言語の「putchar(*ptr);」に相当。 , 入力から1バイト読み込んで、ポインタが指す先に代入する。C言語の「*ptr=getchar();」に相当。 [ ポインタが指す値が0なら、対応する ] の直後にジャンプする。C言語の「while(*ptr){」に相当。 ] ポインタが指す値が0でないなら、対応する [ (の直後[1])にジャンプする。C言語の「}」に相当[2]。 実装 rubyを使いました."[“と”]“のところはやっぱり大変. #!/usr/bin/env ruby class BrainFuck def set(program) @pc = 0 # プログラムポインタ @pro = program # プログラム @mar = 0 # メモリアドレスレジスタ @mem = Array.new(30000,0) # メモリ(30000Bytes分) end def step() # オペコード読み出し op = @pro[@pc] @pc+=1 # 実行 case op when ">" @mar+=1 when "<" @mar-=1 when "+" @mem[@mar]+=1 when "-" @mem[@mar]-=1 when "." print @mem[@mar].chr when "[" if @mem[@mar] == 0 depth = 0 (@pc..@pro.length).each do |i| # 対応する括弧発見 if depth == 0 && @pro[i] == "]" @pc = i+1 break # 深さを調べる elsif @pro[i] == "[" depth+=1 elsif @pro[i] == "]" depth-=1 end end end when "]" if @mem[@mar]!=0 depth = 0 (0..@pc-2).reverse_each do |i| # 対応する括弧発見 if depth == 0 && @pro[i] == "[" @pc = i+1 break # 深さを調べる elsif @pro[i] == "]" depth+=1 elsif @pro[i] == "[" depth-=1 end end end end end def exec() while @pc!=@pro.length step end print "\n" end end brainfuck = BrainFuck.new while line = gets brainfuck.set(line) brainfuck.exec end テスト brainfuckプログラミングをしているところです.実行権限をつけてから遊んでください.それと,行ごとに読み込んでいるのでbrainfuck中に改行コードが入るとまずいです. ...

March 21, 2013

rubyまとめ

ruby(rails)をさわる機会が出来たので,こちらのページを参考に調べてみました.rubylearning.com summary 3までです.それ以後はまだ読めていません. インデント タブはスペース2個分 メソッド呼び出し 次のようなメソッドの呼び出しが,許されている. foobar foobar() foobar(a, b, c) foobar a, b, c すべてがオブジェクト integerやstringなどすべてオブジェクトである.しかし,putsやgetsなどのいくつかのメソッドはどこでも使用出来る.それは,これらのメソッドは,rubyカーネルモジュールに含まれているからである.rubyカーネルモジュールは,全てのクラスから参照できるメソッドを定義しているモジュールであり,objectクラスはこのモジュールをインクルードしている. コメント #から始まる一行,または=beginと=endで挟んだ行をコメントとする. 真偽 予約語であるfalseやnilのみが偽であり,zeroやnull string,null characterやその他のものはすべて真である. インクリメント,デクリメント ++や–で表させるインクリメントや,デクリメントは利用出来ない.+=や-=は利用できる. 糖衣構文(シンタックスシュガー) 演算子に見えるものは,すべてメソッド呼び出しである. コマンド実行 バックチックで囲むと,そのコマンドが実行される.その後,putsメソッドによりコマンドの結果(この場合,ファイルの一覧)が出力される. puts `ls` もう一つの方法は,カーネルメソッドのsystemを使うことである.返値は,コマンドが見つかり,適切に実行されるとtrue,コマンドが0以外で終了すればfalse,コマンドが実行できなければnilである.ただし,system内のコマンドの出力先は,rubyのプログラムの出力先と同じである. system(&quot;tar xzf test.tgz&quot;) 変数,定数 $から始まるとグローバル変数,小文字またはアンダースコアで始まるとローカル変数である.トップレベル自体が,ローカルスコープを持つ.全てのモジュール,クラス,メソッドの定義がローカルスコープを持つ.@から始まるとインスタンス変数であり,@@から始まるとクラス変数である.大文字から始まると定数である. コンソール入力 コンソール入力には,putsとchompが便利.STDOUTはプログラムの実際の出力機構である.flushでバッファに溜まっているのを吐き出す.この使い方が推奨されている.getsで一行分のデータを読み込み,chompにより改行コードを除く. puts "What's your name?" STDOUT.flush name = gets.chomp puts "Hi"+ name + "!!" Bang(!)メソッド sort/sort!,upcase/upcase! ,chomp/chomp!,reverse/reverse!などで!がついているものは同じオブジェクトに対して操作を行い同じオブジェクトを返す.!が付いていないものは新しくオブジェクトを作ってそれを返す. 文字列の比較 文字列の比較には==,String.eql?,String.equal?の三種類がある.==とString.eql?は中身の文字列が同じかどうかの比較を行う.String.equal?はオブジェクトが同じかどうかの比較をおこなう. %wの利用 単語の配列を作るとき,%wというショートカットがある. names1 = [ 'ann', 'richard', 'william', 'susan', 'pat' ] puts names1[0] # ann puts names1[3] # susan # this is the same: names2 = %w{ ann richard william susan pat } puts names2[0] # ann puts names2[3] # susan while よくあるwhile文です. ...

March 20, 2013

rubyとrailsをバージョンを指定してインストールする.

インストールしたいもの ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0] Rails 3.2.11 1.rbenvとruby-buildのインストール $ brew install rbenv $ brew install ruby-build ここで,rbenvをbash起動時に読み込むように, eval "$(rbenv init -)" を~/.bash_profileに追加する. 2.rubyのインストール $ rbenv install -l # インストールできるrubyの一覧 Available versions: 1.8.6-p383 1.8.6-p420 1.8.7-p249 1.8.7-p302 1.8.7-p334 1.8.7-p352 1.8.7-p357 1.8.7-p358 1.8.7-p370 1.8.7-p371 1.9.1-p378 1.9.2-p180 1.9.2-p290 1.9.2-p318 1.9.2-p320 1.9.3-dev 1.9.3-p0 $ rbenv install 1.9.3-p194 # rubyのインストール $ rbenv global 1.9.3-p194 # 普段利用のrubyを1.9.3にする. 3.railsのインストール $ rbenv exec gem install rails --version="~> 3.2.11" $ rbenv rehash 4.確認 $ ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.3.0] $ rails -v Rails 3.2.12

March 16, 2013

高専を卒業しました.

卒業しました. 5年間が一瞬で終わってしまった感じです.正直,部活の練習や試合も,編入の受験勉強をするのも,カラオケの幹事も,旅行の計画も,サッカーの試合も,プロコンの活動もぜんぶ誰かに引っ張ってもらってました.自分ひとりでは何にもできなかっただろうし,ほんとに感謝しています. 4月からは,いきなり誰も知り合いのいない街に,行くことになります.もちろん不安もあるけど,結構ワクワクしているのでなんとかやってけるかなと軽い考えでいます.今までもそうだったし,多分これからもそのほうがうまくいく気がします. 夏休みになったら香川に帰ってくるから,そんときぷち同窓会でも出来たら嬉しいです.

March 15, 2013

.NETアプリのデコンパイル

面白そうなツールがあったので,その紹介です. dotPeekです.これを使うと.NET1.0から.NET4.5を使って作られたアプリケーションをC#のコードへデコンパイルしてくれます. 1.準備 準備として,以下のような.NETのアプリケーションを作りました.ユーザからの入力が"momoclo"かどうかチェックしてメッセージボックスを出すだけの簡単なプログラムです. private void button1_Click(object sender, EventArgs e) { // パスワード if (textBox1.Text == &quot;momoclo&quot;) MessageBox.Show(&quot;Success&quot;); else MessageBox.Show(&quot;Failure&quot;); } ファイルを開くと,すぐにデコンパイルしてくれて,このようにあっさりC#で書かれたコードに戻されます.凄すぎる.やっぱりパスワードのベタ書きはダメだな.危ない. 参考: Introducing “dotPeek” - A free .NET Decompiler by JetBrains

March 13, 2013

よく使うgitコマンドをワンライナーで調べてみた.

ワンライナー書いてみました. history | awk '{ print $2,$3 }' | grep '^git' | sort | uniq -c | awk '{com[NR]=$3;a[NR]=$1;sum=sum+$1} END{for(i in com) printf("%6.2f%% %s %s \n" ,(a[i]/sum)*100."%","git",com[i])}' | sort -gr 実行結果です. $ history | awk '{ print $2,$3 }' | grep '^git' | sort | uniq -c | awk '{com[NR]=$3;a[NR]=$1;sum=sum+$1} END{for(i in com) printf("%6.2f%% %s %s \n" ,(a[i]/sum)*100."%","git",com[i])}' | sort -gr 32.93% git status 14.63% git diff 14.23% git add 11.79% git push 11.38% git commit 4.47% git reset 3.25% git rm 1.63% git pull 1.63% git log 1.22% git fetch 0.81% git clone 0.41% git tag 0.41% git stauts 0.41% git statuss 0.41% git statsu 0.41% git help status,diffは納得出来る. どうしてcommitよりもpushのほうが多いんだろうか... タイプミスは恥ずかしい. ...

March 13, 2013

[android]Androidアプリのデコンパイル

Android: Getting source code from an APK file こちらのページを参考にして,.apkファイル(Androidアプリ)をデコンパイルして,javaファイル,.xmlファイル,リソースファイル抜き取りました. デコンパイルするアプリはこのアプリを使いました.他人のアプリをデコンパイルするのはまずそうなので,自分のアプリでやってみました. ぱずうぇい - https://play.google.com/store/apps/details?id=net.bobuhiro11.puzzleroad 以下は,その手順です.殆どというか全部そのページの通りです. Step 2: Step 3: あっさり解析できてしまって驚きです.クラス名,変数名,メソッド名もそのまま見れます. ...

March 12, 2013

GnuPGのメモ

メールの暗号化のためにGnuPGをインストールしたので,そのメモです.インストールは,Homebrewから行いました.Homebewでgpgを検索してみると,“gpg"と"pgp2"がありましたが,よく分からなかったので,“gpg"を使いました. $ brew install gpg 鍵の生成も,“gpg –gen-key"で一発でできます. $ gpg --gen-key gpg (GnuPG) 1.4.13; Copyright (C) 2012 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: ディレクトリー「/Users/bobuhiro11/.gnupg」ができました gpg: 新しい構成ファイル「/Users/bobuhiro11/.gnupg/gpg.conf」ができました gpg: 警告: 「/Users/bobuhiro11/.gnupg/gpg.conf」のオプションは起動している間、有効になりません gpg: 鍵輪「/Users/bobuhiro11/.gnupg/secring.gpg」ができました gpg: 鍵輪「/Users/bobuhiro11/.gnupg/pubring.gpg」ができました ご希望の鍵の種類を選択してください: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (署名のみ) (4) RSA (署名のみ) 選択は? RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 要求された鍵長は2048ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 &lt;n&gt; = 鍵は n 日間で満了 &lt;n&gt;w = 鍵は n 週間で満了 &lt;n&gt;m = 鍵は n か月間で満了 &lt;n&gt;y = 鍵は n 年間で満了 鍵の有効期間は? (0) Key does not expire at all これで正しいですか? (y/N) y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: &quot;Heinrich Heine (Der Dichter) &lt;heinrichh@duesseldorf.de&gt;&quot; 本名: bobuhiro11 電子メール・アドレス: bobuhiro11@gmail.com コメント: 次のユーザーIDを選択しました: “bobuhiro11 (Website : http://bobuhiro11.net) &lt;bobuhiro11@gmail.com&gt;” 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O 秘密鍵を保護するためにパスフレーズがいります。 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 .....+++++ ..............+++++ 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 +++++ ......+++++ gpg: /Users/bobuhiro11/.gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵804CEC27を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u pub 2048R/804CEC27 2013-03-09 指紋 = 98D3 4473 A254 D77A BEB1 1776 1172 8D78 804C EC27 uid bobuhiro11 &lt;bobuhiro11@gmail.com&gt; sub 2048R/8B0DC21D 2013-03-09 自分の公開鍵と秘密鍵の確認 $ gpg --export -a &gt; public .asc #公開鍵 $ gpg --export-secret-key -a &gt; secret.asc #秘密鍵 “gpg –import 公開鍵” ...

March 9, 2013

[PHP]Twitter Search API 1.1のメモ

1.1になったことで,1.0に比べて,検索の呼び出し回数が,1時間150回から15分180回になったみたいです.しかし,APIの呼び出しにOAuth認証が必須になっています.そして,検索のURLも変わってます. 1.0 http://search.twitter.com/search.json 1.1 https://api.twitter.com/1.1/search/tweets.json はじめにTwitterAPI1.1を使うには,OAuth認証が必要なので,ここから登録してください↓ 詳しくはいろんなところに書いてあったので省略します. https://dev.twitter.com/apps 次に,phpからtwitter api 1.1 を呼び出せるように,Abraham Williamsさんのgithubからライブラリをダウンロードします. git clone git://github.com/abraham/twitteroauth.git 後は,以下のようなコードを書けば利用できます. require_once("twitteroauth/twitteroauth.php"); $twitterOAuth = new TwitterOAuth( "**********************", # consumer key "****************************************", # consumer secret "**************************************************", # access token "******************************************"); # access token secret $param = array( "q"=>"iphone", # keyword "lang"=>"ja", # language "count"=>100, # number of tweets "result_type"=>"recent"); # result type $json = $twitterOAuth->OAuthRequest( "https://api.twitter.com/1.1/search/tweets.json", "GET", $param); $result = json_decode($json, true); foreach($result['statuses'] as $tweet){ echo $tweet['text']."\n"; } ここで,$paramでは次のような物を指定します. q(必須) 検索クエリ. "iphone"と"android"どちらも含むツイートを探す.(AND検索) "q"=>"iphone+android" "iphone"と"android"の内どちらか含むツイートを探す.(OR検索) "q"=>"iphone+OR+android" "iphone"を含んで,"android"を含んでいないツイートを探す."q"=>"iphone+-android" lang(任意) 言語を指定する.http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes を参考にする. "lang"=>"ja" result_type(任意) 検索のタイプ. 最新のツイートを取得する."result_type"=>"recent" 人気のツイートを取得する."result_type"=>"popular" 最新で人気のあるツイートを取得する."result_type"=>"mixed" count(任意) 1ページあたりのツイート数.最大で100 "count"=>100 参考ページ: https://dev.twitter.com/docs/api/1.1/get/search/tweets https://github.com/abraham/twitteroauth http://www.sdn-project.net/labo/oauth.html 

March 8, 2013

卒研発表

3/4,5にうちの高専で卒研発表がありました. ブログに書くのを忘れるところでした. その成果物の一部としてwebサービスを作ったので,良かったら見てみてください!! こちらです↓ Reputter (http://bobuhiro11.net/reputter) 適当なキーワードで検索すると,Twitter上の文書のネガポジ判定ができます. アイドルとか,贔屓のスポーツチームとか,応援してる芸能人とかで検索してみてください. 実はこれTwitter api 1.0を使ってるんでそろそろ止まっちゃいそう. それと3月中に他にも,「時間あるし何か作ろうぜ!」って話があるので,そっちも折角の機会なのでちゃんと取り組めたらなと思います.

March 7, 2013

[Android]ぱずうぇいを公開してみた.

Androidアプリとして,卒研の息抜きみたいな感じで開発していたパズルゲームがあります. お蔵入りになりそうだったので,一昨日Google Playで公開しました.ここで,ちょっと紹介します. 基本的なルールは,棒人間がゴールへ到達すればゴールです.途中落とし穴などがあり,一筋縄ではいかないようになっています.良かったら遊んでみてください. ダウンロードはこちらから https://play.google.com/store/apps/details?id=net.bobuhiro11.puzzleroad

February 22, 2013

[Android]GC_CONCURRENT freedの対処法

...

January 29, 2013

[Mac]androidアプリの開発環境

わざわざここに書かなくても,ググればすぐに見つけれると思いますが(汗 Androidアプリの開発環境づくりは何度かやったことがありますが,Macでは初めてです. ただ,Windowsとそんなにかわらない感じです. 環境はOS X 10.8.2 mountain lionです.すこし,長い記事になりました. [bash] tar xzvf eclipse-jee-juno-SR1-macosx-cocoa-x86_64.tar.gz mv eclipse /Applications/ [/bash] これだけです(笑 すごく簡単や ...

January 8, 2013

MBA買っちゃいました.

macbook airを買っちゃいました.前から欲しい,欲しいと言ってきてやっと手に入れることができました.にわかマカー誕生です.これから,環境を整えていきたいと思います.windowsと違って,ctrl-h,ctrl-f,ctrl-bなんかでテキストの編集ができること,unixのコマンドが使えること,トラックパッドが凄く気持ちいいこと,などかなり満足しています. ただ,手汗のせいで,トラックパッドがうまくいかない時があるので,なんかいい解決方法を探さないといけません(汗

January 3, 2013

svmでテキスト分類

明けましておめでとうございます.今年もよろしくお願いします. 早速ですが,SVM(サポートベクターマシン)を試してみたので,その方法を書いておきます.ナイーブベイズなどと同様にテキストの分類ができます.ここでは,svm_lightを使いました. cd /usr/local/src mkdir svm_light cd svm_light wget http://download.joachims.org/svm_light/current/svm_light_linux.tar.gz gunzip -c svm_light.tar.gz | tar xvf - make all インストール後,/usr/local/src/svm_lightへパスを通しておきます. 1 i am happy 1 happy happy new year -1 bad year -1 i am bad 次に,それぞれの単語と数字の対応表を作ります. 1:i 2:am 3:happy 4:new 5:year 6:bad 最後にこの対応表をもとに,学習データを作ります.(このファイルを"example_file"とする.) 1 1:1 2:1 3:1 1 3:2 4:1 5:1 -1 5:1 6:1 -1 1:1 2:1 6:1 svm_learn example_file model_file svm_learnコマンドでモデルファイル(“model_file”)を作ります.

January 1, 2013