奨学金バスターズ

給付型奨学金を虎視眈々と狙っていて、募集と同時に応募して、大学代表までは行きました。しかし、大阪府で5名という壁を超えることはできませんでした・・・。(´・ω・`)

あれだけの結果出して大学から5万円しかもらえないというのは割りに合わない。

落ちた理由を冷静に分析すると、昔金なかった感は出せたけど、今も金ない感が出せなかったことが原因でしょうか。成績だけじゃ給付型奨学金はくれないみたいです。

両親の自己破産と兄からの10年近くの暴言で、精神的におかしくなって頭の中が殺人 or 自殺状態で、社会のレールから外れかけていたけど、浪人してからはひたすら真面目に外れかけた車輪を修復してるのに・・・。

ネットの世界では、一緒に何か作らんか的なことで人(協力者)を集めてこれて、今も一応2人でいろいろやってる(卒研中はさすがに活動できない)けど、リアルの世界で協力者を得ることは下手やなあ。

昔はリアルの世界でも周りの人を巻き込む力があったので、休み時間は真冬でも毎回手打ち野球、土日は友達に電話しまくって毎回野球という理想の世界を作ってたけど、トラウマができて以降はそんなコミュニケーション能力もリアルの世界では衰えてしまった。

インターンシップではそういう面も回復できることを目標に頑張りたい。

研究は今は機械学習やってます。(これがまた面白い)

mecab-dic-overdrive のメモ

2011年5月16日に公開された(githubではもうちょい早い)ばかりの mecab-dic-overdrive を早速インストールしたので、補足的な部分をまとめておきます。

基本的な使い方は「wikipediaのデータや顔文字辞書からmecabのユーザ辞書を作成するフレームワーク」を読んでください。

これから書くのは、インストールしたあとPerl+Text::MeCabで使うとき用の補足的な説明です。(そのへんはあまり書かれていなかったので。主に自分用)

まずは、「mecabrc」にuserdicを追記。(↓のような感じ)

userdic = /home/username/mecab-dic-overdrive/misc/dic/wikipedia.dic
userdic = /home/username/mecab-dic-overdrive/misc/dic/kaomoji.dic

複数のユーザ辞書を指定する場合はコンマで区切るらしいけど、複数行の形式でもいけたのでこうしました。

Text::MeCabを使ったコードは↓のとおり。

#!/usr/bin/env perl

use utf8;
use strict;
use warnings;
use Encode       qw/decode_utf8 encode_utf8/;
use feature      qw/say/;
use Data::Dumper qw/Dumper/;
use Text::MeCab;
#use open OUT =>  qw/:utf8 :std/;

use lib qw(/home/username/mecab-dic-overdrive/lib);
use MecabTrainer::NormalizeText;

my $normalize_opts
    = [qw/
          decode_entities     strip_single_nl  wavetilde2long
          fullminus2long      dashes2long      drawing_lines2long
          unify_long_repeats  nfkc             lc
      /];

#say Dumper $normalize_opts;

my $normalizer = MecabTrainer::NormalizeText->new($normalize_opts);
my $mecab = Text::MeCab->new;

while( chomp(my $in = <>) )
{
    my $normalized_text = $normalizer->normalize( decode_utf8($in) );
    $normalized_text    = encode_utf8($normalized_text);

    for (my $node = $mecab->parse($normalized_text); $node; $node = $node->next)
    {
        my $surface = $node->surface;
        my $feature = $node->feature;

        if ($surface) { say "${surface}\t$feature"; }
    }
}

入力がUTF-8でない場合は、文字コードを変換しないと恐らく化けます。

「花咲くいろはの菜子はホビロンかわいいょ~~~」という入力を与えると↓の結果を返してくれます。

花咲くいろは	名詞,固有名詞,一般,*,*,*,花咲くいろは,Wikipedia:2244748
の	助詞,連体化,*,*,*,*,の,ノ,ノ
菜子	名詞,固有名詞,人名,名,*,*,菜子,サイコ,サイコ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
ホビロン	名詞,固有名詞,一般,*,*,*,ホビロン,Wikipedia:280328
かわいい	形容詞,自立,*,*,形容詞・イ段,基本形,かわいい,カワイイ,カワイイ
ょ	助詞,終助詞,*,*,*,*,よ,よ,よ
ー	記号,一般,*,*,*,*,─,─,─

ノーマライザに使えるのは、↓のとおり。

decode_entities strip_html strip_nl strip_single_nl
unify_whitespaces wave2tilde wavetilde2long fullminus2long
dashes2long drawing_lines2long unify_long_repeats nfkc nfkd nfc nfd lc

strip_htmlはhtmlタグを除去してくれます。
nfkc nfkd nfc nfdは「PHPにおけるUnicode文字列の正規化 」と同じ(はず)。

あとのはlivedoor Techブログに載ってるので省略。

PerlのRiveScriptで現代女子大生を作る

Twitterで「四ワードで現代女子大生型人工無脳システムを構築できる」と聞いて帰りの電車内で作ってみました。

現代女子大生を作る四ワード:「うっそ~」「マジで?!」「わかる~」「ヤバくない?」
プログラミング言語:Perl
人工無脳の名前:キャバ子

#!/usr/bin/env perl

use strict;
use warnings;
use feature qw/say/;
use RiveScript;

my $bot = RiveScript->new;

$bot->loadFile("./test.rs")
    or die "スクリプトの読み込みに失敗しました";

$bot->sortReplies;

while (1)
{
    print "pawa> ";
    chomp (my $msg = <STDIN>);

    my $reply = $bot->reply('localuser', $msg);

    say "キャバ子> $reply";
}

test.rs ↓

+ *
- うっそ~
- マジで?!
- わかる~
- ヤバくない?

会話結果↓

pawa> やっほー
キャバ子> マジで?!
pawa> 本気と書いてマジと読むんやで
キャバ子> うっそ~
pawa> 漫画の世界だけかな?
キャバ子> わかる~
pawa> 分かってもらえて嬉しいぞ
キャバ子> ヤバくない?
pawa> 貴様の顔もな
キャバ子> ヤバくない?
pawa> 自分でもヤバイと思ってるのか
キャバ子> ヤバくない?
pawa> 正直ヤバイですね
キャバ子> マジで?!
pawa> 整形してこい
キャバ子> うっそ~
pawa> さすがに冗談や ^^;
キャバ子> うっそ~
pawa> 実はマジだったりして・・
キャバ子> わかる~

会話ログ

確かにそれらしいような気も・・・。(^^;

RiveScriptは辞書型の人工無脳を作るのに使えるモジュールです。今日知ったモジュールですが、日本語で使う場合ほとんど使えません。

メンテナンスしたくないので辞書型の人工無脳は作りませんけどね。

研究とは無関係なジョーク記事です。(念のため)

相手ピッチャーの玉をしばき上げたい

HongKongから(?)ThinkPad L420 が来ました!すごく、黒いです・・・。重くて立ちプログラミングは無理です。キー打つときに左腕に微妙にモッコリ感がありますが、ナウい息子の上に腕を置いていると考えれば問題ないでしょう。

使いにくいと思ったのは、側面のUSBです。

右の側面は後面から前面に向かって、電源・光学ドライブ・USBの順でついているので、光学ドライブ使うときにUSBのケーブルが邪魔になります。後面にもう1個USBがあるので、そこにUSBハブを挿すのが良いですかね。

あと、イヤホン挿すとときどきノイズが入りますが、音楽流せば個人的には気にならないレベルです。

それ以外は文句なし。強靱・無敵・最強!(ほどでもないけどまあ快適)4万円でこのスペックはイイ!

サウンド設定は↓で良い感じになりました。
サウンド設定

チェックをいれたのは、環境・イコライザ・ヘッドフォン バーチャル化・ラウドネス等化

環境の設定:駐車場
イコライザの設定:パーティ

駐車場パーティ最高!

全体的にはかなり満足です。

さて、昨日はちょっとぶりに草野球でした。

相手ピッチャーの球がなかなか速くて完封されそうになったけど、なんとか阻止しました。自分は「四球」「三振」「遊ライナー」でした。
ボロ負けでしたが、まだ終わりたくないと思って守備についた最後の最後で良いプレーが出ました。

センター守ってて打球来たけど、セカンドとセンターの間ぐらいの微妙な打球でした。バウンド合わせるにはダッシュし過ぎたのでスライディングキャッチでせめて前に弾こうとスライディング。あれ?意外とノーバウンドで取れるか?と思ったけどスライディングの砂煙で何も見えなくなりました。

スライディング後、自分はなぜか↓のような姿勢で倒れていました。

          トv’Z -‐z__ノ!_
        . ,.’ニ.V _,-─ ,==、、く`
      ,. /ァ’┴’ ゞ !,.-`ニヽ、トl、:. ,
    rュ. .:{_ ” ヾ 、_カ-‐’¨‾フヽ`’|:::  ,.、
    、  ,ェr<`iァ'^´ 〃 lヽ   ミ ∧!::: .´
      ゞ'-''ス. ゛=、、、、 " _/ノf::::  ~
    r_;.   ::Y ''/_, ゝァナ=ニ、 メノ::: ` ;.
       _  ::\,!ィ'TV =ー-、_メ::::  r、
       ゛ ::,ィl l. レト,ミ _/L `ヽ:::  ._´
       ;.   :ゞLレ':: \ `ー’,ィァト.::  ,.
       ~ ,.  ,:ュ. `ヽニj/l |/::
          _  .. ,、 :l !レ'::: ,. "
              `’ `´   ~

そして、なぜかグローブの中に白球が!?プレイヤーの自分でさえ何が起きたかわかりませんでしたが、とりあえずキャッチのアピール。そして試合終了。

奇跡体験!アンビリバボー!!

最近ヒット出てないので、バッティングでも奇跡起こしたいですね。無論プログラミングでも。

ハイパーGW充計画

2010年のACM-ICPCの国内予選の問題に一通りチャレンジして、大学の課題も大部分をこなしたので、あとはフリーダムガンダムです。

頭の中でZ型のサイコロの展開図を組み立てられないアホな自分には無理やろうとか思ってたけど、鍛錬の末、少しは解けるようになってきました。

1チーム3人で1台の計算機でやります。今年国内予選突破できるかは微妙なラインですかね。まだ来年もチャンスがありますが。(というか来年が本気)

残りのGWからその先は↓のような予定。

5/3:研究・SRM505
5/4:研究
5/5:TOEIC対策・研究
5/6:大学の課題(講義もあり)
5/7:TOEIC対策
5/8:新しいPCのセットアップ
6/26:第163回 TOEIC
7/14:卒研 中間発表
8/*:インターンシップ

頑張りマッスル!

インターンシップは第一希望しか考えてないけど、いろいろ探りを入れると高学歴な人が選抜されるっぽいので、他のところも考えたほうが良いかもですね。今は第一希望のところで修行を積むことしか考えられないんだけど・・・。「もしドラ」見てインターンシップ先の企業がどういう人を受け入れたいと考えているか研究や!?

ThinkPad L420 ポチッた

¥45,644なり。

プロセッサ:Core i3-2310M プロセッサー (2.10GHz, 3MB L3, 1333MHz)
OS:Windows 7 Home Premium 64 正規版
ディスプレイ:14.0型HD液晶 (1366 x 768 LEDバックライト)
グラフィックス:インテル HD グラフィックス 3000
メモリー:2GB PC3-10600 DDR3 (1スロット使用)
HDD:250GB ハード・ディスク・ドライブ, 5400rpm
オプティカル・ドライブ:DVDスーパーマルチ
バッテリー:6セル Li-Ion バッテリー

学業優秀賞を換金してお釣りが出る値段。
図書カードは普通郵便の簡易書留で出す予定です。

学科指定のPCの「CF-W8」が悲鳴をあげていて修理に出さなければならないのですが、その間PCできないと死んじゃうのです。はぅ~。

他にもいろいろ事情あって、ちょっとだけグラフィックの性能が必要だったり・・・。重量は「CF-W8」の2倍ほどあるので大学まで持っていくのが大変です。はひぃ~。

メモリだけあとで付け足しますかな。開発環境のCentOS, zsh, cpanminus, perlbrew, MeCabなどまた入れなあかん。こんなことがあると思って研究の進捗管理にそれぞれのインストールしたバージョンまでちゃんとメモってるからまあ問題ないけど。

来るのは3~4週間後。長いぞっ!

俺のコーディングフェーズは終了しないぜ☆

今日はSRM501の日。

午後8時からなので、急いで晩飯食べて参加しました。通算3回目の参加。問題はあんまりアルゴリズムって感じじゃなく、ゴリ押しで解けそうでした。(Div.2の話ですが)

1問目はゴリ押しのアホみたいなコードが全テスト通ったので提出して、2問目のテスト2,3個通したところでタイムオーバー。

チャレンジフェーズで8人ほど逝ってビクビクしてたけど、自分は生き残ったのですが、システムにヤラれて0点になりました。

どうやら条件式が1個足りなかったようです・・・。(´・ω・`)

今日はチャレンジフェースとシステムのテストでみんな落とされまくりでしたね。こういうときに生き残るコードを書ける人にならなくちゃ!