延命処置

実は研究室の windows server は 4GB の HDD を搭載していて、残り 200MB しか余ってない。残り容量が足りずに 200 MB 近いツールをダウンロードすらできない。流石に古いので新しいマシンと交換しようかというはなしをしていたが、結局面倒なので外付け HDD を USB 接続というもっとも後ろ向きな案が採用された。で、買ってきてから思い出した。USB 1.1 じゃん、このマシン・・・。

死ぬほど遅いアクセスに耐えて、いざインストールと思ったら、「”システム”ドライブの空き容量が 1GB 必要です」と怒られた・・・。徒労。

エンコード判定機

飲み会の話題にて。なんか、文字エンコード判定がしょぼくてどうこうというはなし。世の中のエンコード判定がどうなってるのか知らないけど、ルールベースでそのエンコードの範囲からはずれたら false とかしてるのかな。でも、やっぱりそこは、入力文字列: sエンコード: e に対して、 \arg\max_{e}P(e|s) = \arg\max_{e}P(s|e)P(e) なんてな方法で。N-gram 使って、データが長ければ適当にサンプリングすれば OK。

ということで、byte bigram、P(\mathrm{sjis})=P(\mathrm{euc})=P(\mathrm{utf8})(いいかげん)でそこら辺に落ちてた IRC のログをつかって学習。ひらがなはけっこう簡単に判別できる。出現頻度の低い文字列がダメで、「魑魅魍魎」を判定できなかった。ごちゃごちゃいじったが、結局 byte bigram が文字 unigram 程度の効果しかないのがあれだ。なんか悔しいので、trigramにしたらきれいに判定できるようになりましたと。代わりに係数データが 100 MB 超えて、なんか悲しい。疎行列として扱わないとダメですね。しかし、上の単語はトレーニングセット中に偶然出てきたので良かったが、未知熟語には弱そうだなぁとかそんな感じ。