前の月 / 次の月 / 最新

~matubara/ChangeLog / 2006-12移動しました

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 29 30 31

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

2006-12-28 Thu

Java for C++ programmer [java][cxx]

関数ポインタはない。
→ interface 経由で”関数”を持つクラスのシングルトンインスタンスを渡す。

リンクはしなくていい。
ただし、ライブラリを使うプログラムを実行するときに、
ライブラリがある場所にパスを通す必要がある。
java -cp lib:. Main
→ 少なくとも、. は CLASSPATH に入れておくべき

ArrayList は add しないとサイズが増えない。
→ 自動的に fill されることがない

generics は template ではない。
Map<K,V> で、
K.equals の引数は Object です。
コンパイル時に型情報は消されます。
Map の契約は要素型に equals(Object) 、 hashCode(void) メソッドの妥当な実装を要求する。
→ annotation
@Override public boolean equals(Object o){ ... }

Matrix Toolkits for Java ( MTJ ) [java][net]

<http://rs.cipr.uib.no/mtj/>

nandemo rss clone [neta]

なんでもRSSが対応できないのは、
日付が振られていない文章である。

baseline (original nandemo rss 予想)
HTMLの木を作る
 このとき、<a>xxx</a>yyy<b>zzz</b> は
 <a>xxx</a><nil>yyy</nil><b>zzz</b> にする
日付を特定する
全部のエレメントに日付を含むかどうかを振る
打ち切りレベルを上から下げていって木の断面をみる

内部向け TeX いくらかのコツ [latex][net]

<http://hawaii.aist-nara.ac.jp/~shige-o/Tips/Textips.html>
複数行数式には align を使うことを検討しよう

重要語抽出(単語分割)とクラスタリング [neta]

斎藤先生の不審者情報メールのタスクでやれるかな?

教師なし適当単語分割をやって、
教師なし適当クラスタリング(VectorSpace x BottomUp)のあとに、

The CImg Library - C++ Template Image Processing Library [vis][net]

<http://cimg.sourceforge.net/index.shtml>

2006-12-27 Wed

なぜ Perl を使うのか [perl]

CPAN があるからだと思う。

Python Cheese Shop : Home
Ruby Application Archive
CPAN

2006-12-23 Sat

Core JavaScript 1.5 Guide - MDC [javascript][net]

<http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide>
Javascriptの言語仕様

2006-12-22 Fri

2006-12-21 Thu

whoiswerewolf [neta]

[2006-12-16-1]のつづき。

ネット上の人狼サービスを調べた。
“汝ハ人狼ナリヤ?”−−−「汝は人狼なりや?」情報まとめサイトに多くのサービスの情報が集積されている。
人狼BBS まとめサイト - FrontPage ninjinさんのサービスならここ。

人狼の悪夢村の数は800くらいで、ほとんど短期。勝利条件を変更する能力(キューピッド)など、選べるルールが多い。

PDFBox - Java PDF Library [markup][programming][net]

<http://www.pdfbox.org/>
PDF から中身抽出できるライブラリ。

java -cp lib//PDFBox-0.7.3.jar:../FontBox-0.1.0/lib/FontBox-0.1.0.jar:$CLASSPATH org.pdfbox.ExtractText xxx.pdf xxx.txt


ギリシャ文字もunicode文字として出してくれたりする。

podcastle [lm][sr][net]

<http://podcastle.jp/>
緒方さんの音声訂正が Wiki になった!(惹句)

Distributional Approaches to NLP [lm][net]

<http://cl.naist.jp/thesis/dthesis-mochi.pdf>
Daichi Mochihashi さんの博士論文

構造の知識 vs. 分布の知識 という対比

2006-12-20 Wed

The k-means range algorithm for personalized data clustering in e-commerce [algorithm][net]

<http://dx.doi.org/10.1016/j.ejor.2005.04.011>
range tree というデータ構造を使うと、
K-means clustering が高速にできるというはなしだとおもうけど、
読んでません。

2006-12-19 Tue

Embedding metadata in XHTML and extracting them as RDF [markup][net]

<http://www.kanzaki.com/docs/sw/xh2rdf.html>
XHTML で見た目情報と混在している論理情報を、
XSLT で抽出する。

XHTML を XML に逆変換 [markup][perl]

#! /usr/bin/env perl
use warnings;
use strict;
use WWW::Mechanize;
use WWW::Mechanize::Link;
use URI::URL;
use URI::file;
use URI::Escape;
use Getopt::Long;
use Pod::Usage;
use XML::Simple;
use Data::Dumper;
use Encode;
use encoding qw/utf8/;
use open OUT => ':utf8';
use open qw/:std/;
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';

sub xml_in_decoding($$) {
  my($xml_simple, $http_response) = @_;
  my $content = $http_response->content;
  
  if ( join(' ',$http_response->headers->content_type) =~ m/charset=(\w+)/ ) {
    $content = decode($1, $content);
  }
  $content =~ s{"Shift_JIS"}{"UTF-8"};

  #tidy
  {
    my $tmp = '/tmp/tidyresult';
    {
      open my $f, '>:encoding(utf-8)', $tmp or die "$!: $tmp";
      print $f $content;
      close $f;
    }
    system qq{tidy -modify -utf8 $tmp 2>/dev/null};
    {
      open my $f, '<:encoding(utf-8)', $tmp or die "$!: $tmp";
      $content = join '', <$f>;
      close $f;
    }
  }
  return $xml_simple->xml_in($content);
}

# get arguments
my $wait_seconds = 3;
my $verbose = 0;
my $input_encoding = '';
GetOptions(
           'wait=i'     => \$wait_seconds,
           'verbose'    => \$verbose,
           'encoding=s' => \$input_encoding,
           'help'       => sub{pod2usage(0)}
          );
my $url = shift @ARGV;

my $m = WWW::Mechanize->new();
my $xs = XML::Simple->new(ForceArray => 1,
                          KeyAttr => []);

# get a village
my %village;
$m->get($url); # assuming this as prologue
exit 1  unless ( $m->success );
{
  my @a;
  foreach my $link ( $m->find_all_links( url_regex => qr{_progress_\d+} ) ) {
    $link->url =~ m/_progress_(\d+)/;
    my $n = $1;
    next if defined $a[$n];
    print STDERR "waiting $wait_seconds seconds before retrieving ".$link->url."...\n" if $verbose;
    sleep $wait_seconds;
    $m->follow_link(url => $link->url);
    $a[$n] = xml_in_decoding($xs, $m->response);
  }
  $village{progresses} = \@a;
}

print STDERR "waiting $wait_seconds seconds before retrieving 'party'...\n" if $verbose;
if ( $m->follow_link( url => q{_party_} ) ) {
  sleep $wait_seconds;
  $village{epilogue} = $m->ct;
}
print $xs->xml_out(\%village);

#my $log = Parse::RecDescent->new($grammar)->parse($text);
#print Dumper($log);

__END__

=head1 NAME

  ninjin_crawl.pl - Jinro BBS crawler

=head1 SYNOPSIS

  crawler.pl [options] URL

=head1 OPTIONS

  --encoding      URL
                  auto-detect if not specified
  --help          shows this help
  --wait          waiting time between requests [3]

=head1 DESCRIPTION

  ninjin_crawl.pl retrieves and parse a whole log
  of the villlage specified in the argument.
  And put the result to the standard output as a XML.

=head1 SEE ALSO

L<WWW::Mechanize>

=cut

2006-12-18 Mon

Linkers and Loaders [cxx][programming][book][net]

<http://www.iecc.com/linker/>
リンカの本。

2006-12-16 Sat

crawler.pl [perl]

wget は CGIパラメタが違うだけのURLを区別してくれないっぽい。
もっと攻撃的なクローラがほしかったので書きました。
無条件(ホストだけは合わせるけど)で2段階のリンクを踏んでとってくるクローラ:

#! /usr/bin/env perl
use warnings;
use strict;
use WWW::Mechanize;
use WWW::Mechanize::Link;
use URI::URL;
use URI::Escape;
use Getopt::Long;
use Pod::Usage;

my $max_follow_links = 2;
my $wait_seconds = 3;
my $verbose = 0;
my $dest_dir = '';
GetOptions(
   'level=i' => \$max_follow_links,
   'wait=i'  => \$wait_seconds,
   'dest_dir=i'  => \$dest_dir,
   'verbose' => \$verbose,
   'help' => sub{pod2usage(-exitstatus => 0)}
  );
my $url = shift @ARGV;
$dest_dir = uri_escape $url if $dest_dir eq '';


my $m = WWW::Mechanize->new();
my %links;
my $collect_links;
$collect_links = sub($$) {
  my($url, $dep)=@_;
  if ( $dep <= 0 ) {
    return;
  }
  print STDERR "waiting $wait_seconds seconds ... \n" if $verbose;
  sleep $wait_seconds;

  # GET and save
  my $res = $m->get($url);
  my $local_path = $dest_dir . '/'. uri_escape $url;
  open F, '>', $local_path or die "$!: $local_path";
  print F $res->as_string;
  close F;
  
  my @links = map $_->URI, $m->links($url);
  foreach (@links) {
    print STDERR $_, "\n" if $verbose;
    $links{$_->abs} = $_;
  }
  print STDERR "collected ".(scalar keys %links)." links in total\n" if $verbose;
  if ( $dep >= 2 ) {
    $collect_links->($_,$dep-1) foreach @links;
  }
};

mkdir uri_escape $url;
$collect_links->(URI::URL->new($url), $max_follow_links);

__END__

=head1 NAME

  crawler.pl - Simple Web Crawler

=head1 SYNOPSIS

  crawler.pl [options] URL

  Options:
   --level      max follow depth [2]
   --dest_dir   destination directory [URL]
   --help       shows this help

=head1 DESCRIPTION

B<crawler.pl> is a simple crawler which follows the links on a specified URL
within a specified link depth.

=head1 SEE ALSO

L<WWW::Mechanize>

=cut

とってきたファイルは URI escape した名前で保存する。

おおかみ見つけちゃうぞ [learning][neta][net]

<http://shinh.skr.jp/expwolf/>
Naive Bayes 分類器で、人狼か人間かを当てる。

ソースはアップされてないから確証はないけど、
きっと各人の全発言を単語1-gramモデルで捉えて、
人狼分布と人間分布と、狼・人の事前分布を学習してやってるんだと思う。

狼に関しては裏で通信してるので、おもてにもそれが反映されているはず、
という仮定をしてみる。(たとえば、2人の狼が、裏でつかっていた表現を表で無意識につかってしまうとか)
これを捉えるためには、発言を単語1-gramではなくて、
自分+それ以外だれか一人との同時分布だとかにすると良いかも。
複合単語+キャラクタIDな素性。

一人の全発言をまとめて1-gramにするのではなくて、
それまでの全員の全発言からの条件付分布にするのが妥当だと思う。
でも全発言は無理なので、前10発言

本格的にモデル化するなら、
一人ずつ判定するのをやめて、
全人数=n choose おおかみの人数=w(最大で 15 choose 3 = 15*14*13/3/2/1ので、まあ多すぎはしない)
素性は選ばれたw人の全発言単語同時分布でやってみる。


一般化すれば、テキストに基づく嘘発見器。

ベイジアン占い師です。
点推定でなく分布を推定します。

Referrer (Inside): [2006-12-21-4]

2006-12-14 Thu

Perl で HTTP::Request [perl]

perl -MLWP::UserAgent -MHTTP::Request -e'print LWP::UserAgent->new()->get(q{http://www.yahoo.com})->as_string()'
perl -MLWP::UserAgent -MHTTP::Request -e'print LWP::UserAgent->new()->request(HTTP::Request->new('GET', q{http://www.yahoo.com}, {}))->as_string()'


wget とか curl とか、環境によっては lwp-rget と同様。

2006-12-13 Wed

CVS ログ修正 [cvs][net]

<http://radiofly.to/nishi/cvs/ml-log/msg00914.html>

| たとえば登録済の CVS LOG を変更できれば解決すると思うのですが、 | そのようなことは可能なのでしょうか? commit logの変更はcvs admin -m で可能です。 あるいは、リポジトリの*,vファイルを直接修正してもかまいません。

日本語いれたいときは、文字コードの設定をした Emacs の eshell [2006-12-13-2] から cvs admin -m

Emacs から CVS とかを使うときの文字コードを指定する [emacs]

(modify-coding-system-alist 'process "cvs" '(undecided . euc-jp-unix))

eshell から cvs を実行するときも、これが適用されるらしい。
shell でもできるはずだけど、\222とか付く。

Referrer (Inside): [2006-12-13-3]

2006-12-06 Wed

CVS--Concurrent Versions System (in Japanese) - キーワード置換 [cvs][svn][net]

<http://www.linkclub.or.jp/~tumibito/soft-an/cvs/cvs-man/cvs-ja_12.html>
$Id$と$Log$はLiLFeSでも使われている。

2006-12-05 Tue

mots quotidiens. -- Natural Order [linux][net]

<http://chasen.org/~daiti-m/diary/#200612040>
ファイル名の途中でも numeric ordering

x.1
x.2
..
x.10
x.11
..
x.100


# ls には, 常に "--sort=version" オプションをつけて使う
# zsh ユーザなら, "setopt numericglobsort" を ~/.zshrc に書いておく

2006-12-04 Mon

Amrita Homepage [ruby][net]

<http://amrita.sourceforge.jp/>
HTML の id ベースの HTMLテンプレート

Welcome to IEEE Xplore 2.0

A relative evaluation of multiclass image classification by support vector machines [learning][net]:
<http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1304900&isnumber=28983>
2値分類組み合わせて多値分類ってどうやるのか?

p2p * sns [neta]

吉本晴洋, 繁富利恵, 副田俊介, 金子知適, 田浦健次朗, ``P2P人狼BBS, '' The 11th Game Programming Workshop, 2006


孤島から瓶を流す会
を実現したら、面白いことになるかも。

ランダムに誰かにコネクションをはる、
はられたコネクションは、どちらかが切るまで残る。

コネクション上では同期通信しかできない。
片方がしゃべって、ターンを渡したら、はじめて他方が喋れる。

孤島にはないけどあったらいいかも:
切られたコネクションの残骸を、集めて見れるようにする。

おなじ匿名だけど、2chと違って叩く人は、たぶん少ない。
相手がひとりと沢山、という違いからかな?

A Hybrid Generative/Discriminative Approach to Semi-supervised Classifier Design [learning][net]

<http://www.kecl.ntt.co.jp/as/members/fujino/papers/AAAI05-Fujino.pdf>
Fujino, A., Ueda, N., and Saito, K., "A hybrid generative/discriminative approach to text classification with additional information," Information Processing & Management, Elisevier (in press).

現代日本語文法概説 [lx][net]

<http://www.geocities.jp/niwasaburoo/>

日本語教育のための現代日本語の文法

統語論的な日本語文法からすると、
意味論が混ざりすぎているけれど、
いつ意味的情報が必要になるがよく分かる。

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