naoya_t@hatenablog

いわゆるチラシノウラであります

GCCのビルトイン関数メモ

http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html より

関数名末尾に l が付いてるのは long、ll なら long long、無印は unsigned int。
他にもいろいろあるけど、コンテストで使うかもしれないやつだけとりあえず。

__builtin_popcount, __builtin_popcountl, __builtin_popcountll

立ってるビット数を数えて返す
0x11 (2進で10001) なら2
0x57 (2進で1010111) なら5

__builtin_parity, __builtin_parityl, __builtin_parityll

立ってるビット数の偶奇を返す。(popcount % 2 に相当)
0x11 (2進で10001) なら0(偶数)
0x57 (2進で1010111) なら1(奇数)

__builtin_ffs, __builtin_ffsl, __builtin_ffsll

2進で表した場合に小さい方から何桁目に初めて1が現れるか。
0x07 (2進で111) なら1。0x08 (2進で1000) なら 4。
0の場合は0を返す。

__builtin_clz, __builtin_clzl, __builtin_clzll

2進で表した場合に左側にいくつ0を埋める必要があるか (the number of leading 0-bits in x)
(32bit unsigned intの場合)0x07 (2進で111) なら29。
0の場合は未定義。

__builtin_ctz, __builtin_ctzl, __builtin_ctzll

2進で表した場合に、1の位からいくつ0が連なっているか (the number of trailing 0-bits in x)
0x08 (2進で1000) なら3。
0の場合は未定義。

量子情報勉強会 |4> に参加してきました

「初級ラテン語リーディング」でいつもお世話になってる @7shi さんの池袋バイナリ勉強会で開催された「量子情報勉強会」に参加してきました。
http://connpass.com/event/4858/

勉強会で使われる教科書

を探しに、始まる前にジュンク堂に行ってみたのだけれど売ってなくて、魔が差してファインマン物理学第5巻(量子力学)を買ってきたりとか。

今回は、

あたりをやりました。

以前にCourseraで受けた授業で概ね習っているので、復習っぽい感覚で参加できそうです。

次回 |5> は 2/15(土) 18時から、池袋バイナリ勉強会にて開催予定です。
http://connpass.com/event/4858/

Les lois de Newton

Courseraで受講中のEPELの力学のクラス (Physique générale - mécanique) でニュートンの法則が3つ出てきたのでプリンキピアのラテン語原文を探してみた、というメモ。自分用。

プリンキピア (Principia) ないしプリンキピア・マテマティカ (Principia Mathematica) と言っても

があるわけですが前者のニュートン力学の方のプリンキピアです

ラテン語原文の下に、クラスで出てきたフランス語版を並べてあります

LEX I. - 慣性の法則

Corpus omne perseverare in statu suo quiescendi vel movendi uniformiter in directum, nisi quatenus a viribus impressis cogitur statum illum mutare.

(Première loi de Newton) "Tout corps persévère dans l'état de repos ou de mouvement uniforme en ligne droite à moins que quelque force n'agisse sur lui et ne le contraigne à changer d'état".

LEX II. - ニュートンの運動方程式, F=ma

Mutationem motus proportionalem esse vi motrici impressae, et fieri secundum lineam rectam qua vis illa imprimitur.

(Deuxième loi de Newton) "Les changements de mouvement sont proportionnels à la force motrice, et se font dans la ligne droite dans laquelle cette force est imprimée à l'objet."

LEX III. - 作用・反作用の法則

Actioni contrariam semper et aequelem esse reactionem: sive corporum duorum actiones in se mutuo semper esse aequales et in partes contrarias dirigi.

(Troisième loi de Newton) "A toute action, il y a toujours une réaction égale qui lui est opposée" ; autrement dit, les actions mutuelles de deux corps l'un sur l'autre sont toujours égales et opposées.

PRML復々習レーン#14(再)

http://connpass.com/event/3529/

前回、ワルプルギスの夜が来た為に延期(というか嵐のハッカソン)になった復々習レーン。
今日は9章。k-meansと混合ガウスとEMアルゴリズム

sleepy_yoshiさんがsklearnとか使って10行ぐらいでさくっとコードを書いている間に、matplotlibと格闘しながら混合ガウス分布EMアルゴリズムをごりごり実装しておりました。
図9.8(下巻p.153)的なものの再現です。

データセットはold faithful間欠泉データです。

実装はgithubに上げてあります:
https://github.com/naoyat/PRMLrevenge/tree/5632b99f79c7833c99faf3257cefaccb9a84e204/chap9

次回(11/9 or 11/23)は9章の残りと10章を読みます。
10章(近似推論法)はみんなでextreme readingします。頑張ろう!

おまけ

初級ラテン語リーディング

http://connpass.com/event/3371/
@池袋バイナリ勉強会

今日から新しい教科書になった。

Lingua Latina Per Se Illustrata: Familia Romana
Hans H. Orberg
Focus Pub R Pullins & Co
売り上げランキング: 9,951

辞書使わなくても読める。読んで1文ずつ訳してて、みんなラテン語分かった気になってた。
小学1年生の国語の教科書みたい。

帰りにファミレス崩れのお財布に優しい中華やさんで会食。
メンツが半分ぐらいPRMLと被ってるよね。

PRML Hackathon #4 〜嵐のPRMLハッカソン〜

http://connpass.com/event/3479/
@西戸山生涯学習館 視聴覚室

ワルプルギスの夜的な物が関東上空を通過したためにPRML復々習レーンは中止となり、空いた会場で代わりに開かれたのが「嵐のPRMLハッカソン」。傘が壊れそうな強風の中を頑張って行ってきました。
主催者欄に「naoya_tと有志スタッフ」とあるので今回は主催者のようです。

視聴覚室開催という事で、hashk1さんが "Puella Magi Madoka Magika" (PMMM) の北米版BDを持って来てくれたのですが、Macからプロジェクタに接続するコネクタを誰も持っていなかったので別のハッキングが開始されたりとか。

英語で上映されるP*M*を見ながら黙々とPRML予習に励む人とか、scikit-learnと格闘する人とか、高校数学を復習してる人とかいる中で今回やったのは、ラテン語動詞の活用を普通にニューラルネットワークで学習させたいなー、とか思って教師データを作るところまで。
f:id:n4_t:20130919150127j:plain

続きを読む

word2vecに英辞郎データを放り込んでみた

英辞郎word2vecに放り込んでみたらちょっと面白かったのでメモを。word2vecについては前回の記事を参照。

使ったのはEIJI-138.TXT(最新より1つ古いバージョンです)
EDPさんから1980円ぐらいで買えます。

■semantically-motivated  {形} : 意味論的{いみろん てき}に動機付けられた
■semantically-restricted  {形} : 意味的{いみ てき}に制限{せいげん}された
■semantics  {名-1} : 意味論{いみろん}、記号論{きごうろん}
■semantics  {名-2} : 《コ》〔プログラムの〕動作
■semantics : 【@】セマンティックス、【分節】se・man・tics
■semantics course : 意味論{いみろん}のコース
■semaphore  {名-1} : 手旗信号{てばた しんごう}、信号装置{しんごう そうち}
■semaphore  {名-2} : 《コ》セマフォ◆共有リソースへの同時アクセスを一定数以下に制限する手続き
■semaphore  {自他動} : 〔手旗{てばた}などで〕信号{しんごう}を送る
■semaphore : 【発音】se'mэfo`:(r)、【分節】sem・a・phore
■semaphore signal : 腕木信号機
■semaphorically  {副} : シグナル[信号{しんごう}]のように[を使って]
■Semarang  {地名} : スマラン◆インドネシア

みたいな、いわゆるPDIC一行形式のテキストです

前処理(pre.sed)は適当。→https://gist.github.com/naoyat/6511066

$ nkf -Sw EIJI-138.TXT | sed 's|^■||g; s| : | |g' | mecab -Owakati | sed -f pre.sed > eiji-sep.txt
$ ./word2vec -train eiji-sep.txt -output eijiro.bin -cbow 0 -size 200 -window 5 -ne 1e-3 -threads 12 -binary 1

で。さっきの例だと

semantically motivated 意味 論 的 に 動機付け られ た 
semantically restricted 意味 的 さ れ た 
semantics 意味 論 
semantics 動作 
semantics se man tics 
semantics course 意味 論 の コース 
semaphore 手旗 信号 
semaphore セマフォ 共有 リソース へ の 同時 アクセス を 一定 数 以下 に 制限 する 手続き 
semaphore 手旗 を 送る 
semaphore sem a phore 
semaphore signal 腕木 信号 機 
semaphorically シグナル 
semarang スマ ラン インドネシア 

みたいな形で出てきます。この作業は数分で終わります。

distance

英語だけ / 日本語だけ出てきた例

(1) "find"

$ ./distance eijiro.bin 
Enter word or sentence (EXIT to break): find

Word: find  Position in vocabulary: 540

                                              Word       Cosine distance
------------------------------------------------------------------------
                                          discover		0.647269
                                              have		0.579349
                                           perhaps		0.573466
                                            enjoys		0.573027
                                           wanting		0.569895
                                           explain		0.569127
                                             finds		0.568667
                                              make		0.563059
                                         remembers		0.558325
                                             prove		0.558116
                                             seems		0.557699
...

(2) "found"

Enter word or sentence (EXIT to break): found

Word: found  Position in vocabulary: 3623

                                              Word       Cosine distance
------------------------------------------------------------------------
                                              came		0.632690
                                               was		0.619852
                                          murdered		0.618065
                                        discovered		0.597480
                                              knew		0.596393
                                          believed		0.594432
                                            warned		0.580562
                                            always		0.580353
                                           arrived		0.579750
                                           perhaps		0.567445
...

(3) 「決める」

Enter word or sentence (EXIT to break): 決める

Word: 決める  Position in vocabulary: 2919

                                              Word       Cosine distance
------------------------------------------------------------------------
                                      確かめる		0.549179
                                            日時		0.487234
                                               範		0.486695
                                         定める		0.474006
                                               否		0.466640
                                            試す		0.464715
                                      知らせる		0.460535
                                         ゴール		0.459710
                                      見つける		0.455723
                                         日取り		0.454051
                                      そろえる		0.453285
                                            選ぶ		0.448462
...

Wordの右端が揃わないのはword2vecさんがprintfで"%-50s"とかで出力してるからだけど気分悪いのでそろそろパッチあてたい…

英語と日本語がいい感じに混ざって出てくる例

(1) 「甘い」

Enter word or sentence (EXIT to break): 甘い

Word: 甘い  Position in vocabulary: 5821

                                              Word       Cosine distance
------------------------------------------------------------------------
                                            美味		0.557716
                                         いため		0.543678
                                         気立て		0.535328
                                            臭い		0.523367
                                            香り		0.519421
                                   甘ったるい		0.514284
                                      おいしい		0.514217
                                            甘党		0.512827
                                         食べる		0.504979
                                             sweet		0.504394
                                               汁		0.503534
                                            甘み		0.502789
                                            sweets		0.501972
                                      おいしく		0.501309
                                         食べ物		0.499953
                                         お菓子		0.497123
                                            風味		0.497013
                                         飲める		0.496544
                                         味わい		0.496355
                                      口当たり		0.495846
                                            菓子		0.495530
                                            sugary		0.493757
                                      ごちそう		0.491298
                                            触り		0.491183
                                            快い		0.486044
                                            派手		0.485320
                                      着こなし		0.483575
                                ドッグフード		0.483424
                                            塩気		0.482835
                                      柔らかい		0.477246
                                      にんにく		0.477052
                                            果物		0.476662
                                      おおらか		0.476204
                                      柔らかく		0.475804
                                      脂っこい		0.475188
                                            濁す		0.474357
                                            野菜		0.471492
                                           tasting		0.470279
                                チョコレート		0.468524
                                            砂糖		0.467779

日本語の類義語が出てきたり、対応する英単語が出てきたりで面白い。

(2) "semaphore"

Enter word or sentence (EXIT to break): semaphore

Word: semaphore  Position in vocabulary: 91870

                                              Word       Cosine distance
------------------------------------------------------------------------
                                            手旗		0.747331
                                       chrominance		0.696490
                                        tachometer		0.659605
                             マルチプレクサ		0.655955
                                       demodulator		0.646253
                                        commutator		0.623882
                                      シンクロ		0.620550
                                           decoder		0.619331
                                          selector		0.613113
                                       transmitter		0.613081
                                      energization		0.612786
                                       transceiver		0.611227
                                       regenerator		0.608915
                                            信号		0.602611
                             ジャイロトロン		0.600938
                                            sorter		0.599987
                             トランスポンダ		0.599316
                                          gyrotron		0.598349
                                            除算		0.596615
                                            励磁		0.596164
                                         アレー		0.595458
                                           sounder		0.593749
                                   ストローブ		0.593125
                                        transducer		0.593007
                                            腕木		0.592226
                                       multiplexer		0.591710
                                      ディザー		0.591218
                                           exciter		0.590356
                                            測深		0.587591
                                   セレクター		0.586178
                                            signal		0.586045
                                        reproducer		0.585224
                                   サイリスタ		0.585093
                                      energisation		0.584465
                                          clocking		0.583642
                                        theodolite		0.583461
                                            復調		0.582414
                                          baseband		0.580201
                                ファインダー		0.579673
                                          repeater		0.579630

word-analogy してみる

訳語を探すならこれ。
("see" と「見る」の関係が、"find" と何の関係に似ているかを調べます)

$ ./word-analogy eijiro.bin 
Enter three words (EXIT to break): see 見る find

Word: see  Position in vocabulary: 345
Word: 見る  Position in vocabulary: 68
Word: find  Position in vocabulary: 540

                                              Word              Distance
------------------------------------------------------------------------
                                      見つける		0.450238
                                      見いだす		0.439524
                                            喜ぶ		0.435330
                                      ちらりと		0.422546
                                      垣間見る		0.412824
                                とてつもなく		0.398096
                                         盗み見		0.397557
                                      食い入る		0.396959
...

"bread" における「パン」は "rice" における何?

Enter three words (EXIT to break): bread パン rice

Word: bread  Position in vocabulary: 5895
Word: パン  Position in vocabulary: 3637
Word: rice  Position in vocabulary: 3062

                                              Word              Distance
------------------------------------------------------------------------
                                            穀物		0.532821
                                               稲		0.521359
                                            小麦		0.507522
                                            鶏肉		0.502062
                                            白米		0.492565
                                         トマト		0.481958
                                            cereal		0.477263
                                            穀類		0.476511
                                            水稲		0.474788
                                         全粒粉		0.470013

なんかこれ日本語Wordnetみたいな使い方が出来そうな気がしますね。meronym/holonym, hyponym みたいなのが出てくるだけでなく訳語が一緒にくっついて来る感じ。