前の月 / 次の月 / 最新

~matubara/ChangeLog / 2007-02移動しました

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

2007-02-26 Mon

三森ゆりか, 外国語を身につけるための日本語レッスン [book][lx]

Interpretation(テクストの分析と解釈・批判)のすすめ。

主語が推測可能なゼロ主語文をかけるようになるために、
主語を書いてから消す訓練。

全体像から詳細へいく論理的説明文
結論をいってからそれを支える根拠を言う討論
ナンバリング:最初にアイテムの数をいい、順番に並べていく
ラベリング:何度も繰り返し参照するものに名前をつける
読み聞きしたの再話、要約

説明の際、全体を要約してから各個撃破、
というのはよくいわれるけれど、難しい。
特に会話でやるのは難しい。

2007-02-22 Thu

「DPマッチングで計算した結果を距離として用いる」という言い方について [research][net]

<http://d.hatena.ne.jp/okamoto7/20070219#p2>

問題とそれを解くためのアルゴリズムが分離されていない。
あたかも「私はDPマッチングが何を計算するものか知らないが、便利そうなので使った」と主張してるようにしか思えない。
「○○を距離として定義し、それを計算するためにDPマッチングを用いた」と言うべき。
もちろん、DPマッチングが正しいアルゴリズムであることに基づいて、DPマッチングで計算されるものとして例えば編集距離を定義しても数学的には間違った態度だとは思わないが、それは上で述べたような議論を理解した前提で行なえるものである。


アルゴリズムの正しい使いかた
「距離Rを定義する」
「ある種の性質を満たす距離の計算をするには、DPマッチングが効果的である」
「距離Rはその性質を満たす」
計算すべきものが明確に定義できる場合は、正しい使いかたをすべき。

アルゴリズムの間違った使いかた
「DPマッチングが距離の計算によく使われている」
「DPマッチングで計算できる距離にはある条件がある」、
「その条件を満たす距離のひとつである、距離Rを使うことにした」
計算すべきものが明確に定義できない場合は、
似たような問題に対して使われていて、
実用的に計算できることが分かっているアルゴリズムをとりあえず使ってみる。

2007-02-17 Sat

Cygwin で SMB [cygwin]

http://d.hatena.ne.jp/lurker/20070126/1169740979

cd //IPアドレス/ディレクトリ名


cd //MACHINE_NAME

もいけます。

2007-02-16 Fri

比較関数 [programming][net]

<http://d.hatena.ne.jp/odz/20070212/1171345311>
これに気づかないのはけっこう危険ですね。

int cmp(const int *a, const int *b)
{
    return *a - *b;
}
たとえば INT_MIN - INT_MIN はオーバーフローにより 0 でない値をとる。
Nearly All Binary Searches and Mergesorts are Broken も同様。

証明されたプログラムにもバグは残る。
証明された性質を成立させるための仮定が成り立たないことに気づかない場合。

vector で 2次元配列 [cxx]

#include <vector>
#include <iostream>
using namespace std;
int main() {
  vector<vector<double> > table(2, vector<double>(2));
  table[0][0] = 0.1;
  table[0][1] = 0.2;
  table[1][0] = 0.3;
  table[1][1] = 0.4;

  for ( vector<vector<double> >::iterator
  i = table.begin(),  e = table.end();
i != e; ++i ) {
    for ( vector<double>::iterator
    j = i->begin(), f = i->end();
  j != f; ++j ) {
      cout << *j << endl;
    }
  }
}

2007-02-14 Wed

Gnuplot の plot コマンドの引数のファイルにはシェルコマンドがかける [linux]

gnuplot> plot "<(perl -e'print map { $_=$_%2; qq{$_\n} } (0..10)')" w l

EM segmentation [segmentation]

関係ない話から。
segmentation といいつつ、文字や文よりも統計処理に向いている単位を探すというのがタスク。
たぶん segmentation / 分割 / 区切り という用語はふさわしくないけれど、
惰性で使っている。
過去の人が使っているから…

確率分割済みコーパス上で
N-gram カウントの期待値を効率的に計算できればほぼ終わり。

A 0.3 B 0.2 C 0.9 B 0.2 C 0.9
なら、
E[ # A B C B C ] = 1 * 0.3 0.2 0.9 0.2 0.9
E[ # A BC BC ] = 1 * 0.3 0.8 0.9 0.8 0.9

のように。

2ch板の全レスダウンロード [perl]

perl -Mstrict -MWWW::2ch -e'my $bbs=WWW::2ch->new(url => $ARGV[0], cache=>q{/tmp/www2ch-cache}); $bbs->load_setting; $bbs->load_subject; print map $_->url."\n", $bbs->subject->threads' http://academy5.2ch.net/gengo/ | xargs wget -w 1 -m

音素交代アナグラム [lx][neta]

kotoba october
hatena hetana

「知っていない」問題を状態化否定で解く [lx]

状態化してから否定
押す→押している→押していない
知る 知っている 知っていない

動作動詞
_!~_ _~!~_ ___!___

変化動詞
_!~ _|~!~|_ ~|_!_|~


押す→押さない→押さないでいる
知る 知らない 知らないでいる

thread2dat.pl [perl]

perl -pe' s{^(http://.*?)/.*/(.*?)/(\d{10}).*$}{$1/$2/$3.dat\n}'

2007-02-13 Tue

Xiaojin Zhu (Jerry Zhu) [people][nlp][learning][net]

<http://www.cs.wisc.edu/~jerryzhu/>
Semi-supervised learning 専門家。
NLPよりでもある。

Word Segmentation as Semi-Supervised Clustering [segmentation]

文字区切りと形態素区切りと文区切りがあることを仮定する。
文字単位から結合を開始する。

文末文字と次の文の文頭文字は cannot link
隣り合ってない文字同士は cannot link

2007-02-09 Fri

バベル案内 [java][cxx][net]

<http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm>

Javaに切り替えることは、2人のプログラマになることだ。
1人はあなたがもはや気にかけなくて良くなったことの面倒を見、もう1人が問題領域にフォーカスする。

2007-02-08 Thu

発表ガイド [presentation]

発表技法 成果物をまねするのではなく工程をまねする

1.概要
  発表は聴衆を対象にして演説や視覚媒体を用いる伝達である.
・発表には構造がある
・口で話す伝達である.文章で伝えるのと違う.
・発表の作業を工程として理解する
2.分析
 発表は時間が軸である.空間が軸の文章とは違う.
・調査の出力を発表へ入力する
・400〜450音節/分という標準に従う
・調査の成果を洗い出す
3.設計
・粗筋を設計する.前置きは1スライドだけにする
・話題や話題群の性質に合う媒体を選択する
・スライド一覧で見直す
4.作成
・話題を,選んだ媒体の表現に具体化する
・話題を体言止めの話題文にする
・補足文は演説にまかせる
5.演説作文
 発表は大勢へ一方的に伝える.返答がある会話と違って,話しの質や長さの欠陥の自己チェックが必要だ.
・敬語は使わない
・演説作文(speech writing)という技法を使う
・演説原稿ができれば時間は守れる
6.想定質疑応答作文
・即時性の要求される質疑応答も練習できる
・結論先行,反論の接続句,補足文3〜4行にする
・就職面接・FAQ作文にも科学的技法がある
7.練習
 発表は人前で実演する.録画と違い事前練習が必要.
・時間測定,録音再生はコンピュータでできる
・「アー」「マー」「エート」を簡単に直す.
・視線交わしや身振りの練習をする
8.発表の実施
・外出着という万能の服装
・他人の発表を視聴し,質問する
・時間を把握して,予定時間に終わらせる


プレゼン道入門

Gaussian Process で滑らかな関数を発生させる [perl][stat]

Gaussian Process は関数空間上の確率変数の一種。

#! /usr/bin/env perl
use strict;
use warnings;
use Math::Random qw/:all/;

my @xs = map { ($_/30) } (0..20);  # 関数への入力値列
my $n = scalar @xs;
my @v = map { my $x=$_; [map {exp -1/2*( ($x-$_)**2 )} @xs]} @xs; # カーネル
#my @v = map { [map 1, @xs] } @xs;
my @m = ((0)x$n);
print map join(qq{\n}, @$_).qq{\n\n},
  random_multivariate_normal(2, @m, @v); # 2個の出力値列が得られる。各列は入力値列に対応する。

入力値の刻みを細かくしたり、入力値の数を増やそうとすると破綻する。
たぶん、浮動小数点の誤差が問題になっている。

もっと細かく値をとりたいときは、
逆関数法で random_multivariate_normal
を実装するか、R使っとけと。

use bignum して exp を 0 周辺でテイラー展開するとか、
covariance matrix が対称行列になるように対象位置の値はコピーで作るとか、
やってみたが無効だった。

GPML pp.13--14 辺りを見て実装した。
# ちなみに入力を多次元化するときは、カーネルの$x-$_に square root 距離をかませればいいらしい。
GP が滑らかな関数を発生させる理由は、
カーネル関数の値、つまり入力値同士の「類似度」を covariance に指定しているから。
遠い入力値に対応する出力値同士は covariance が小さいので相関がないが、
近い場合は相関が強くて、
結果として、滑らかっぽい関数が出来上がる。
「前後の点の座標値とあまり離れない」という意味での滑らかさではなく、
「入力値が近ければ出力値が近い」という意味

Math::Random で 多次元正規分布に従う乱数を発生させる [perl][stat]

random_multivariate_normal(N, mean_vector, covariance_matrix)

で、N 個のサンプルが帰ってくる。
mean_vector, covariance_matrix は配列へのリファレンスではなく、配列である必要がある。

perl -M'Math::Random qw/:all/' -e'print map join(qq{\t}, map {int($_ * 2) } @$_)."\n", random_multivariate_normal(100000,@m=(0,0),@v=([1,0],[0,1]))' | sort -g | uniq -c


インストール時、su していないと make install が通らなかった。

look Math::Random

して Makefile の /usr を ${HOME} に書き換えるとインストールできた。

2007-02-07 Wed

CJKV日中韓越情報処理 [book][net]

<http://www.amazon.co.jp/dp/4873111080>
文字コード関係の些事は意外につらいので。
研究室で購入すべき本だと思う。

英語話者が増えつつある現状を踏まえると、原書
http://www.amazon.com/CJKV-Information-Processing-Ken-Lunde/dp/1565922247
の方がいいかも。

amazon.com レビューに「コードテーブル多すぎ。ある程度知ってる人は読む価値なし」とも書かれていたので、
書店か図書館でチェックしてからにしますが。

2007-02-01 Thu

Inverted Files for Text Search Engines [ir][net]

<http://www.aifb.uni-karlsruhe.de/Lehre/Winter2006-07/AIA/invertedFiles.pdf>
転置インデクスまとめ

nesugi.net - swigの使い方のメモ書き [ruby][perl][cxx][net]

<http://www.nesugi.net/hiki/?swig%A4%CE%BB%C8%A4%A4%CA%FD%A4%CE%A5%E1%A5%E2%BD%F1%A4%AD>

   1. moduleにしたいプログラムのsource(*.cppとか)を持ってくる
   2. cppファイル毎に*.iを書く ← これがswig語
   3. swigコマンドで*.iを各スクリプト言語用のwrapper(c++で書かれてる)に変換
   4. Makefile.PLやextconf.rbのような、スクリプト言語用のMakefileの元になるファイルを書く
   5. 通常のモジュールと同じようにmakeする

2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2009-02-01 00:57

Powered by chalow
inserted by FC2 system