mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2024年05月 来月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

2009年03月27日(金) [n年日記]

#1 NL研終了

無事NL研の発表が終わって, 京都に帰ってきました。
発表は面白いと言ってくれた方が多く, よかったような気がします。
論文のページ に発表資料を置いておきましたので, ご興味のある方はどうぞ。

小町君のブログから来ている人が沢山いるようなので, もし「日本語の文字が全部等確率」というのが気になった人がいたら, そうではない ので安心して下さい, ということだけ書いておきます。
正確には文字の生起確率=文字1-gramのさらに事前分布が均一になっているという 意味で, どんな漢字や数字が出やすいか(文字1-gram), どんな文字の組み合わせが 単語になりやすいか(文字2-gram, 3-gram, 4-gram, …)はすべてモデル化されて います。

なお, 発表では言わなかったのですが, 後ろ向き変数βを同様に導入すれば, 文字の間が切れる周辺確率も計算することが可能なはずで *1 , 工藤君が前に出した 「ソフト分かち書き」 を, 今度は一切辞書等を使わずに実現することができると思います。
形態素解析が切れる/切れないの二値ではなく, 確率的であるべきだというのは, 工藤君の話と独立に僕もずっと思っていて, 今回それを生成モデルの立場から実現できて嬉しく思っています。

その日は東京の実家に泊まったら, 冷蔵庫のホワイトボードに "flammable rubbish" とか書いてあって驚いた。ちょw
「燃えるゴミの日」という意味だと思うけど, パパン, あなた日本人でしょ‥(笑)。


*1: 現状でも, 単語分割をp(w|s)からサンプリングして平均を取れば, 簡単に計算できます。

2006年03月27日(月) [n年日記]

#1 NL-172

JAISTのNL研から帰ってきました。 帰りは白井さんの車で内元さん, 中川君と一緒に小松まで送っていただいて, かなり楽に帰れました。
前に合同研究会で来たときは車だったので, JAISTは平野部の田の中にある丘の上にある というイメージだったのだが, 今回鶴来からシャトルバスに乗ってきて, 山が近い のにびっくり。
地図を見てみると, ちょうど両白山地の裾野の所に位置していて, めちゃめちゃ典型的な扇状地の地形になっているようです。 (教科書に載せたいくらい。) Google Mapによる地形

今回の僕の話はディリクレ過程混合モデルでDMを推定する, という話 ですが, 結局Blei(2004)のDP混合モデルの変分ベイズ法をそのまま使った 感じになってしまったので, 正直書くのがかなり欝でした。 まぁDMをDPでやるという穴を埋めたかったのですが, かなり反省。
もちろん, 最適な混合数の所にEMを回すと収束するというのは面白いのですが, 「そんなの自明じゃん」というのはわかっておりますので.. という感じ。
実は, Blei(2004)を理解するためには, 測度論→DP→HDPと全部理解して, さらに Ishwaran and James (2001)にも依存していて変分ベイズも使って.. と理解できる前には果てしなく長く思えた道のりがあったのに, 理解できてみると すごい自明で, それ以上拡張もできなかったという話。うーん。 とはいえ, DPの話はずっと興味を持っていて時間を使っていたことでは あるので, これでとりあえずは切りが付いたかなと。

#2 酵素パワー (違

注: 以下はこの前の休日にやった遊びで, 研究には全然関係ないので, 興味ない方はスルーして下さい。
この間統数研に行ったときに雑談で出た話をプログラムしてみたくなったので, さくっと実装してみた。

このプログラムを使うと, 任意のテキストを真っ白に変換できる。
~/atelier/white% echo "Hello, world." | whiten > hello.white
とすると,

                                                                                                             
驚きの白さに!(ぉ
もとに戻すには, unwhite にかけます。
~/atelier/white% unwhite < hello.white
Hello, world.
中身は予想通りで, 下のような感じで簡単に書けます。
whiten.c:
/*
 *  whiten.c
 *  Mon Mar 20 16:18:15 JST 2006 dmochiha <at> slc.atr.jp
 *
 */
#include <stdio.h>
#define  white  "\x20"
#define  WHITE  "\xa1\xa1"
#define  BITS(c,n)      ((c & (1 << n)) >> n)

int
main (int argc, char *argv[])
{
        int i, b, c;
        
        while ((c = getchar()) != EOF)
        {
                for (i = 0; i < 8; i++)
                {
                        if ((b = BITS(c, i)) == 0)
                                printf(white);
                        else
                                printf(WHITE);
                }
        }
        exit(0);
}
unwhite.c:
/*
 *  unwhite.c
 *  Mon Mar 20 16:34:50 JST 2006 dmochiha <at> slc.atr.jp
 *
 */
#include <stdio.h>
#define  SETBIT(c,n)    (c |= 1 << n)

int
main (int argc, char *argv[])
{
        char b = 0;
        int c, i = 0;

        while ((c = getchar()) != EOF)
        {
                switch (c) {
                case 0x20 :
                        break;
                case 0xa1 :
                        SETBIT(b, i); c = getchar(); break;
                default :
                        fprintf(stderr, "error: c = %d\n", c); exit(1);
                }
                if (i == 7) {
                        putchar(b);
                        b = 0;
                        i = 0;
                } else
                        i++;
                
        }
        exit(0);
}
0->半角スペース, 1->全角スペースなので, jpegや圧縮ファイルなどは 平均的にはほぼ(8+16)/2=12倍になります。 ちょっと面白かったのは, テキストなどは0が多いので10倍くらいなのかなと思っていたところ, せいぜい11倍くらいだったという結果。意外と1が多い。 man ascii すると, 英小文字はcharの後ろの方に割り当てられている ので, 比較的1が多いのだろう, という話でした。
ちなみに 謎リンク。 本質的には, 上でやっていることはこれと同じです。(w


2 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project