2009-01-01から1年間の記事一覧

差集合的なにか

R

集合は定義から、同じ要素は含まないわけですが、そうゆうのも許して欲しいときがある。こういう2つのベクトルがあったとき x <- c("a", "b", "c", "a", "a", "b") y <- c("c", "d", "c") Rでの差集合演算を使うともちろんこうなる。 > setdiff(x, y) [1] "a…

Rと自然言語処理

Rは コーパス言語学的なものに対しては相性がよい 一方、(言語モデルなどの)自然言語処理に対してはひたすら相性が悪い そんな気がしている。 see also CRAN Task View: Natural Language Processing

Tsukuba.R#6を開催するよ!!

いやはや、Tsukuba.R#5をやってから大分経過しております。。。 Tsukuba.R#5をやってきました - Seeking for my unique color. というわけで、Tsukuba.R#6を開催しようと思います。# 実は10月半ばに開催する予定だったんですが、大学の全学停電や学園祭シー…

今月のWEB+DB PRESSを見逃がすな!!

なぜならば、はてなサマーインターン2009が記事になっているからだ!!WEB+DB PRESS Vol.53作者: 桜井雅史,縣俊貴,西田圭介,青木靖,川口耕介,井奥雄一,冨田慎一,森田創,鶴岡直也,長野雅広,武者晶紀,富士慶,中山大輔,常澤邦幸,山?賢,近藤裕介,稲葉健二,Elaine G…

STLをもっと使いこなしたい

コンテナにはどんな種類があって、どんな感じのことができるかは段々分かってきたけど、もっともっと使いこなしたい。ということで。Effective STL―STLを効果的に使いこなす50の鉄則作者: スコットメイヤーズ,Scott Meyers,細谷昭出版社/メーカー: ピアソン…

初めての最大エントロピー法

なぜ最大エントロピー法が必要か自然言語処理特論の授業で最大エントロピー法が紹介されました。言語モデルで、パープレキティが小さいモデルを作るのが目標なんですが、EMアルゴリズムでは、小さくできるパープレキシティにちょっと限界がありました。まあ…

初めてのSVM

ゼミでid:reposeがSVMについて話しました。SVRとかそういうのはとりあえずやらないで、マージン最大化とヒンジ関数を使った誤差最小化の枠組みを見たり、解のスパースネスがどうして導けるのかとかについて勉強しました。参考にしてたのはこの2冊。パターン…

PRMLのfigureをゆーっくり落としてくる

ネットに繋がらないところでゼミの準備とかをしていて、「あ、PRMLのこの図を今の資料に入れたい!でも、ネットつながらねー」ということが時々あるので、じわじわと落としてくるスクリプトを書いた。寝る前にでも走らせておいてください。くれぐれもゆーっく…

最近勉強している本

なんだかようやく調子が出てきはじめた、という感じらしいです。どれもトピックつまみぐい。書き出してみたところ「ああ、俺が好きそうなところばっかりやってるな」と思いました(謎)。工学基礎 最適化とその応用 (新・工科系の数学)作者: 矢部博出版社/メー…

初めてのEMアルゴリズム with R

混合正規分布について 混合正規分布のEMアルゴリズムによるパラメータ推定 EMアルゴリズムの単調増加性について この前はEMアルゴリズムがどんな感じのメカニズムで、どんな性質を持っているか簡単に書いた。 初めてのEMアルゴリズム - yasuhisa's blog とい…

「確率密度比」を用いた機械学習の新たなアプローチ

東工大の杉山先生の講演がすごく面白かったのでメモ。やりたいこと、特徴p(x)とp'(x)という分布を推定しようという問題があったとする。このとき、二つの分布のパラメータを推定しないといけないので普通は大変。そこで、w(x) = p'(x) / p(x)を推定するとい…

TBBのインストール

C++

基本ここを真似する。make installができないので精神衛生上よくないように思う。 http://ppwww.phys.sci.kobe-u.ac.jp/~akusumoto/linux/detail.php?d=config/tbb/install ヘッダーファイルは/usr/local/include、ライブラリは/usr/local/lib/tbbみたいな感…

差集合的なにか

C++

"cppref algorithm/set_difference"とかで調べればすぐに分かるだろう、と思ったら分からんかった><inserterって何やねん。 #include <iostream> #include <algorithm> #include <set> #include <boost/foreach.hpp> using namespace std; int main(int argc, char *argv[]) { set<int> s1; s1.insert(1); s1.</int></boost/foreach.hpp></set></algorithm></iostream>…

ある年代のディレクトリにおいてあるファイル数を調べる

こんなディレクトリ構成になっていて /Users/syou6162/dbcls/pne% ls 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 1885-1995のディレクトリ配下にあるファイルの数と1996-2006以下にあ…

アルファベット、数字、記号のみからなるような行を捨てる

Perlワンライナー。 perl -nle 'print unless $_ =~ m/^[!-~\s]+$/' result.txt ついでに半角カタカナさんも死んで欲しいとき。 perl -nle 'print $_ if $_ !~ /^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$/' umls.txt 参考 http://code.nanigac.com/so…

言語モデルの応用先

自然言語処理特論の最終課題は言語モデルを作ることで、評価はテストセットパープレキシティ(PP)によってされる。ちなみに、昨日は簡単な言語モデルを作っていた。Trigramで線形補完法*1。PPが14を下回ったら評価のAがくるのだが、線形補完法を使うとギリギ…

初めてのEMアルゴリズム

EMアルゴリズムとは今日の自然言語処理特論の内容はEMアルゴリズム。N-gram言語モデルを作るときには、未知語に関連して0頻度問題がつきまとう。TrigramからBigram、BigramからUnigramと切り替えていくback-offなどの方法もあるが、今日やったのは線形補完法…

言語モデルの準備

自然言語処理特論で使うやつの準備の準備くらいの。準備として青空文庫のテキストを食わせる。で、何か入力の文を与えるとUnigram、Bigram、Trigramの言語モデルでのその文が出てくる確率を計算する。確率は非常に小さくなるので、出力するところでは対数を…

ガウス過程についてのメモ

ガウス過程の定義 ガウス分布との違い 普通のやり方 関数空間から見た視点 ガウス過程のメリットデメリット ガウス過程のメリット ガウス過程のデメリット まだよく分かってない付近 ガウス過程の定義関数上の確率分布で、任意の点集合に対するの値の同時分…

最近のゼミ

この辺読んでます。カーネル多変量解析―非線形データ解析の新しい展開 (シリーズ確率と情報の科学)作者: 赤穂昭太郎出版社/メーカー: 岩波書店発売日: 2008/11/27メディア: 単行本購入: 7人 クリック: 180回この商品を含むブログ (32件) を見るPRMLの下巻の…

applyの普通じゃない(?)ような使い方

R

R苦手の会で説明したんだけど、なんとなくBlogでも書いてみる。こんな風なcsvファイルがあったとする。 hoge, 2 fuga, 3 piyo, 1 これは文章中にhogeが2回、fugaが3回、piyoが1回出てきたというようなものを表わしている。ここで、このcsvの情報から単語の登…

素晴しい!!

C++

PerlもRもヘルプが大変充実しているんですが、C++にはないので非常に苦痛でした。が、こんなのができたらしい! GitHub - kazuho/cppref: man-style access to cppreference.com documents これでイライラしなくてよいですね!!boostにも同じようなものがある…

Trieとかtcとか系列タギングとか

タブ区切りデータの三列目を取り出す「-F」の使い方、すぐ忘れる。。。 perl -F"\t" -anle 'print $F[2]' umls2ja.tab Trieを構築するためのライブラリTx http://www-tsujii.is.s.u-tokyo.ac.jp/~hillbig/tx-j.htm dartsのほうは日本語だとうまく動かない…?T…

Back-off smoothing

書いてるとちゅー!!先週は言語モデル(n-gram)の話があって、パープレキシティの話をして、多項分布の最尤推定だとパープレキシティが無限大にいってしまうからどうにかしないと!!ということをやりました。 言語モデルのよさをはかる指標としてのパープレキシ…

Nelder-Mead method

去年の最適化理論の課題は、準ニュートン法あたりを実装してバナナ関数に適用して軌跡書いてね、というようなものだった(はず)だけど、今年は微妙に違う。今年はNelder-Mead methodというのを使ってバナナ関数で遊んでね、というものに変わった。 wikipedia:…

マルチスレッドとstl

C++

スレッドの中でvectorに次々につっこんでいくプログラム。 #include <iostream> #include <vector> #include <boost/foreach.hpp> #include <boost/thread.hpp> #include <boost/bind.hpp> using namespace std; vector<int> v; void greetingWithID(int i) { v.push_back(i); } int main(int argc, char *argv[]) { int n = 1000; boost::</int></boost/bind.hpp></boost/thread.hpp></boost/foreach.hpp></vector></iostream>…

mapのvalueでソートしたい

C++

PerlやRubyみたいに。stlのmapはディフォルトでキーでソートされていて、valueではできないっぽい。結論からするとpriority_queueを使うとよさそう。 #include <iostream> #include <map> #include <queue> #include <string> #include <boost/foreach.hpp> typedef std::map<std::string, int> container; typedef std::pair<std::string, int> val</std::string,></std::string,></boost/foreach.hpp></string></queue></map></iostream>…

言語モデルのよさをはかる指標としてのパープレキシティ

今日の自然言語処理特論の講義がとても面白かったのでメモ。今日の自然言語処理特論では、最初に言語モデルとしてn-gramのモデルの紹介があって、それの最尤推定の話。次に言語モデルのよさをはかる尺度としてエントロピー*1を元にしたパープレキシティが紹…

Rosenbrockのbanana functionを共役勾配法で最適化して、可視化してみた

wikipedia:en:Rosenbrock_functionという有名らしい関数があるんですが、共役勾配法の動きを見てみるためにこの関数で遊んでみました。結果はこんな感じ。 極端すぎないパラメータだと大域的最適解に行ってくれました。コードも簡単。 f <- function(x) { x1 …

共役勾配法を実装してみた

本当は去年みたいなplotをしたいんだけど、面倒(ry。工学基礎 最適化とその応用 (新・工科系の数学)の4.6章で遊んでいる。二次関数の簡単なのをとりあえず。 f <- function(x) { x1 <- x[1]; x2 <- x[2] 3 / 2 * x1^2 + x1 * x2 + x2^2 - 6 * x1 - 7 * x2 } …