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
関数ポインタはない。
→ 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){ ... }
なんでもRSSが対応できないのは、
日付が振られていない文章である。
baseline (original nandemo rss 予想)
HTMLの木を作る
このとき、<a>xxx</a>yyy<b>zzz</b> は
<a>xxx</a><nil>yyy</nil><b>zzz</b> にする
日付を特定する
全部のエレメントに日付を含むかどうかを振る
打ち切りレベルを上から下げていって木の断面をみる
"Name That Song!": A Probabilistic Approach to Querying on Music and Text (2003)をいんすぱいやして。
<http://hawaii.aist-nara.ac.jp/~shige-o/Tips/Textips.html>
複数行数式には align を使うことを検討しよう
斎藤先生の不審者情報メールのタスクでやれるかな?
教師なし適当単語分割をやって、
教師なし適当クラスタリング(VectorSpace x BottomUp)のあとに、
<http://cimg.sourceforge.net/index.shtml>
CPAN があるからだと思う。
Python Cheese Shop : Home
Ruby Application Archive
CPAN
<http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide>
Javascriptの言語仕様
[2006-12-16-1]のつづき。
ネット上の人狼サービスを調べた。
“汝ハ人狼ナリヤ?”−−−「汝は人狼なりや?」情報まとめサイトに多くのサービスの情報が集積されている。
人狼BBS まとめサイト - FrontPage ninjinさんのサービスならここ。
人狼の悪夢村の数は800くらいで、ほとんど短期。勝利条件を変更する能力(キューピッド)など、選べるルールが多い。
<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文字として出してくれたりする。
<http://cl.naist.jp/thesis/dthesis-mochi.pdf>
Daichi Mochihashi さんの博士論文
構造の知識 vs. 分布の知識 という対比
<http://www.kanzaki.com/docs/sw/xh2rdf.html>
XHTML で見た目情報と混在している論理情報を、
XSLT で抽出する。
#! /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
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
<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人の全発言単語同時分布でやってみる。
一般化すれば、テキストに基づく嘘発見器。
ベイジアン占い師です。
点推定でなく分布を推定します。
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 と同様。
<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
(modify-coding-system-alist 'process "cvs" '(undecided . euc-jp-unix))
eshell から cvs を実行するときも、これが適用されるらしい。
shell でもできるはずだけど、\222とか付く。
<http://trove4j.sourceforge.net/>
via Collections : Programming : Java Products components (libraries, projects) Organized by topic
via odz buffer - Collection Library
<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 に書いておく
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人狼BBS, '' The 11th Game Programming Workshop, 2006
で
孤島から瓶を流す会
を実現したら、面白いことになるかも。
ランダムに誰かにコネクションをはる、
はられたコネクションは、どちらかが切るまで残る。
コネクション上では同期通信しかできない。
片方がしゃべって、ターンを渡したら、はじめて他方が喋れる。
孤島にはないけどあったらいいかも:
切られたコネクションの残骸を、集めて見れるようにする。
おなじ匿名だけど、2chと違って叩く人は、たぶん少ない。
相手がひとりと沢山、という違いからかな?
<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).
<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