あけました

あけましておめでとうございます.

このブログを定期的に見ている人がいるか謎ですが,今年も宜しくお願いします.


新年早々まんきつ行ってしまいました.

行ってきた所は最近できたばかりの所なんだけれど,バイト曰く開店の頃に新刊だったやつが入荷されておらず,今最新刊の1つ前の巻がないやつが多いという残念な状態だった.

例えば,わんぴーすの55巻が無い.

自分は花形読んでたのだが,15巻が無くて残念だった.


花形は自分的に凄く面白いと思う.

マガジンでも読んでいるが,レイジって最初どんなコンテキストで出てきたのだったかと思って読み直した.

左門の顔とか最高だよね.


花形の15巻が無かったので,持って行っていた論文を少し読んだ.

新年早々まんきつで論文読んでるとかなんだかなーと思った.


今年の目標は,留学のための準備を完了すること

そのためには,論文2本目を早々に通すことが必要かな

論文2本通してれば,卒業要件は一応満たすので,ある程度好きなことができるだろう.


近い目標としては,さっさとSPOJUSを公開する

論文にURL載せたいというそれだけの理由

しかしそのためには,まだやる事がそれなりに残っているので,研究と関係ないところでどこまで時間を割けるかが微妙


それから,音響モデルの学習プログラムを自作する

これは,半分趣味

こないだのPFIセミナーで岡野原さんも仰っていたが,実装すると理解できるというのは,本当に真実だと思うので,勉強の意味も込めて実装してみたい

幸い,自分で作った認識のプログラムが既にあるので,簡単にできると思う


あとは,定期的に運動すること

去年同期が皆卒業したので,定期的にやっていたフットサルが無くなってしまった

ランニングとかなにか運動したい

運動不足からか,最近,本当に風邪を引きやすくなった


だらだらと駄文を書いてしまったが,これは個人ブログなので気にしない


今年も頑張ろう

音声認識研究は停滞してるのか

東工大の古井先生が先日のSLPで音声認識研究はここ6年停滞しているという旨の発言をしてらっしゃったようであるし,先日のASRUでも20年進歩してないという話だった

私の見解では,確かに,音声認識だけに話を絞ればそうかもしれないが,機械学習パターン認識関係など分野全体を見渡せば,むしろかなり進歩していると思っている

私も,ちょっと前までは全然進歩ねえなと思っていたのだが,最近真剣に色々考えている内に考えが変わってきた

認識率は確かにあまり上がっていないのかもしれないが,その他の所で進歩してんじゃねえかと

古井先生の予稿に,最近は音声認識機械学習の練習問題の様に捉えていて良くないということが書いてあったが,私はむしろどんどんと,音声認識機械学習の一問題として定式化していくことが大事だと思う

そうやって定式化をしたうえで,これまでの研究で培った音声特有の知識を盛り込んでいく,これが正解に進む道かなーと考えていたりするわけです

2009年終わるね

もう3時間くらいで2009年が終わります.

今年は結構勉強できたかなーと思います.

勉強できたなと思える一番の要因は恐らく英語力の向上だと思います.

やっぱり英語を読む早さが上がると論文読む速度も段違いに上がりますね.

12月にASRUでイタリアに行きましたが,ここでも英語力の向上を体感できました.

とはいえ,正直流暢にはほど遠いので,これからも精進あるのみです.

博士課程でやりたいことは,このまえのミーティングでBOSSに了承を得たので,来年はこれに向かって頑張っていきたいと思います.

では,よいおとしを

boostのiostreamsを使ってgzipされたファイルを開く

以前C++でプロセスをPstreamsを使って開く方法について日記を書いたが,PstreamsはGPLなので,自分のソフトを修正BSDで公開したい場合には色々と面倒なのかなと思っており(全然問題ないのかもだが),常々他の方法,特に標準ライブラリ(もしくはそれに近いもの)で置き換えられないかと考えていた.

自分がやりたいのは,単にgzip圧縮されたファイルをストリームを使って読み込みたいというだけである.

Pstreamを使うと,開いたプロセスをストリームから読み込むことができるようになるので,gunzipでファイルを解凍するプロセスをPstreamに渡すことで,一応目的は達成していた.

Pstreamsでそれを行うには,以下のようにする.

#include <iostream>
#include "pstream.h"
using namespace std;

string command = "gunzip -c " + file;
istream *in = (istream *) (new redi::ipstream (command));

これで一応目的は達成できるが,先にも述べたとおり,ライセンスの問題もあるし,gunzipを使っているので,Windowsに移植する時に面倒くさいという話があった.

ライセンスの問題は,zlibや以前のこの日記で回避可能であるが,前者の方法はストリームとの組み合わせかたが良く分からないし,後者の方法はgunzipを使っている上にgccでしか使えない方法である.

zlibをストリームと組み合わせられたら一番良いのであるが,自分でほいほいと作れるほどその辺には精通していない.

が,この辺りの問題をBoost.Iostreamsが全部解決してくれたので,メモしておく.

boostのiostreamsを使ってgzip圧縮されたファイルをストリームから読み込むには以下の様にする.

#inlucd <iostream>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/gzip.hpp>
using namespace std;
namespace io = boost::iostreams;

io::filtering_istream *fltr_is = new io::filtering_istream();
fltr_is->push(io::gzip_decompressor());
fltr_is->push(io::file_source(file));
istream *in = fltr_is;

boostのiostreamsでは,ファイルハンドルをストリームにすることも出来るみたいなので,popenをストリーム化することも出来そうである.

Mercurialで管理してるデータをWebで公開する

Mercurialでは,CGIを使ってリポジトリを簡単にWebで公開できる.

ということで,研究室内部からだけ見れるところで試しに公開してみた.

方法はMercurialWikiに書いてありました.

簡単には,ココのページに書いてある方法でできます.自分もできました.

ただ,自分の場合は,後々複数のリポジトリを公開したいと思ったので,コッチを頑張った.

hgwebdir.cgiというスクリプトを使うわけであるが,これがPythonであるにもかかわらず,

# The config file looks like this. You can have paths to individual
# repos, collections of repos in a directory tree, or both.

という辺りに書いてあるconfigファイルの書き方の説明のところの例をコメントアウトしたりして,アホな感じではまった.

単に,スクリプトが置いてあるディレクトリにhgweb.configを作ってそこに設定を書き込めばできた.

Mercurial良い

久しぶりにブログでも書いてみる.

以下だらだらと本当に駄文なので注意.

ただのストレス発散です..

そうだ,バージョン管理しよう

2ヶ月くらい前にhomeが壊れた時に,最近開発している音声認識エンジンのバージョン管理をするのに使用していたCVSリポジトリが壊れたので,ここのところは原始的にtarでバックアップをとっていたのだけれど,Software Designの11月号でGitの特集をみて,ここらでまたバージョン管理しますかと思い立った.

特集を見る限りではGitはかなり良さそうだったが,GitはLinusが作ったとかで,FreeBSD愛好家であるところのわたしにはちょっと抵抗があったわけである.

Gitは巷では分散型バージョン管理システムと呼ばれているものなわけであるが,他に良く使われているものはないのかねということでちょっと探してみた.というのは,特集での記事を見ると分散型というやつがどうも使いやすそうだったので,とにかく,分散型バージョン管理システムというのを使ってみたかったのである.

分散すげー

分散というとなにか大層なものかと思っていたが,どうも良くみてみると,各管理ディレクトリそれぞれに完全なリポジトリを持つというのが特徴のようだ.

リポジトリを分散させることで,気軽にコミットできるとか,ローカルで作業ができるとか,色々と便利になるとどこかに書いてあった.

わたしはOSSのプロジェクトに参加しているわけでもなんでもないので,世界に分散しているわけでもなく,別に本当の意味でのメリットは享受できないわけなのであるが,わたしが注目したのは,気軽なリポジトリ作成なのである.

どうもCVSで管理しようとすると,よし,管理するぞとなってしまって,気軽さが足りないような気がしていたのだけれども,分散型だと,なんだか雰囲気が気軽な気がしたのだ.

きっとCVSとかの集中型でも,ちゃんと使える人からしたら気軽なんだろうが,わたしにはどうも重かったのである.

Mercurialとの出会い

などなどの理由から,分散型のバージョン管理システムを探していたら,Mercurialというのを見つけた.

なかなか良さそうだ.

この作者もLinuxカーネルの開発者だそうだが,Linusよりはましだろう.

別にLinus嫌いじゃないよ.

Mercurial使ってみた

で,Mercurialを使ってみたのだけど,これがなかなか良い.

何がいいって,リポジトリが作業ディレクトリにできるので,CVSROOTみたいなのが必要ないし,コピーも簡単に作れるので,自由を感じる.

たぶん色々とあんまりわかってないので,本質をあまりつけていないとは思われるが,チュートリアルを一通りやってみた感じでは,ちょっと使うだけなら本当に簡単で,まさに気軽.

すべてをかんりするおとこ

これでわたしもすべてをバージョン管理する男になれるかもしれない.

home壊れてからやる気を失っていた

夏休みに入った瞬間に研究室のRAIDがいかれ,色々なものがlost+foundに放り込まれて以来ずっとやる気を失っていた

ASRUも通らず,いよいよやる気を失ったので,id:c2top:20090720 で言っていたディスプレイを勢いで購入

これを近所のPCショップで30,000で買った


WUXGAなので解像度は申し分ないが,いかんせん見難い

文字が見づらいのは情報系にとっては致命的か

慣れればなんとかなるかもしれんので,しばらく使ってみよう

慣れなかったら自宅で動画見る用にしよう

でも,首は疲れなくなる予感がするので,明日からまた研究頑張る