TOEIC 600点

勉強時間5分ではさすがに落ちたかな?と思っていたのですが、

L:295 R:305 T:600

前回からLが5点アップでついに600点台です。

英語使った場面は、TopCoderの問題読んだときと、英語の論文読んだときぐらいなもんです。(リスニングは5分間聞いただけっていう)

院行くなら院試までに650点は確保できそうな感じですかね。

もし院行くなら大学4年はほぼフリーダムなので700オーバーぐらいを目指して勉強しますです。

履歴書書いたけど、わずか5点の違いなのに「TOEIC 595点」って書くのと「TOEIC 600点」って書くのとではえらい違う印象ですね。

次は167回あたりを受けようかなと思っていますが卒研で死にそうな時期かもしれません・・・。

彼女=草野球 ∴リア充?

今日は男だらけの草野球でした。

かなり集まりが良かったけど、試合相手が見つからなかったらしく、練習でした。

  • キャッチボール
  • 45分耐久ノック
  • 怒涛の盗塁練習
  • 灼熱の3打席バッティング

をしました。

45分耐久ノック:サード守ったけど、特に問題なし。強いて言えば送球が若干乱れました。

怒涛の盗塁練習:盗塁は得意なのでセカンドの守備をしました。捕球は良い感じでしたが、ボールがランナーにぶつかる場面が3回ぐらいありました。ボールデッドじゃなくてインプレーのままのはずなので、ぶつかる前にセカンドが前に出て取るべきですかね。

灼熱の3打席バッティング:「遊飛」「三ゴロ」「左安」

卒研にハマって肉バットすら振ってないのに打てるのかよって感じでしたが、最後は身体の近くで捕らえてライナーでホームベースから72mに設置されているレフトのネットに直撃して(飛距離80m届かんぐらい?)良い感じでした。

草野球やってるときが一番楽しい。プログラミングも楽しいけど、草野球のときみたいに嫌なこと全てを忘れることはできませんし、成功したときのあの充実感はスポーツでないと得られません!?

さあ、卒研中間発表の本番に向けてデスマーチ!(ってほど追い込まれてもないけど頑張ります)

来年は国内予選突破を目標に

今日はACM-ICPC 2011の国内予選でした。

言語は最近競技プログラミングでしか使ってないC++でやりました。

A問題:ポポポーンという間にコレクトアンサー

B問題:

YESとNOが想定外に出ると思ったら改行じゃなくて空白ごとに答え出しとるがな・・・と気づくのにアホみたいに時間かかった。

その他のバグフィクスにもちょいと時間かかったけど、開始から1時間ほどでコレクトアンサー。

C問題:いろいろと問題勘違いしたりで時間切れ。

D問題:2回生がチャレンジしたけどロングアンサー。一見簡単そうだけど半径が異なるのがやっかいそう。でもあんまり細々したことは書いてないので、何かに気づいたら楽に解けるんか?いや、D問題が簡単なわけがない?

というわけで予告通り2問正解でした。

結果は110位/300+α。

2回生に解かす予定だったA問題は予想外に簡単だったので自分が解いてしまいました。

来年はゆとりコースなら恐らくスポーツ実習を受けるだけで卒業。通常コースでもスポーツ実習+特別研究(卒研のおまけみたいなもの)で卒業できるので、好きな勉強やりたい放題です。来年こそ後輩をアジア地区予選に連れていきたい・・・。じっちゃんの名にかけて。

それにしても、この競技プログラミングに参加してからちょっとしたアルゴリズムがかなり楽に書けるようになりました。元々はアルゴリズムが苦手なのを克服するために競技プログラミングを始めたのですが参加して良かったです。TopCoderのSRMとかおじいちゃんになってもやりたいです。

奨学金バスターズ

給付型奨学金を虎視眈々と狙っていて、募集と同時に応募して、大学代表までは行きました。しかし、大阪府で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 !レ'::: ,. "
              `’ `´   ~

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

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

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