mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
||||||||||||||||||||||||||||||||||||||||||||||||
伊庭さん
とずっとお話しして, その後福水さんに紹介していただいて少しお話ししたり。
3月に松本研研究会で話した
話
(今はもう少し違うやり方でやっています)を最後に説明したら, 隠れ変数が5層
*1
になっているので「やりすぎ(笑)」と言われました。(笑)
帰ったのは結局午後7時半くらいだったので, 6時間くらい喋っていたような
気がする。
なければ作れ, というわけで,
アルゴリズム2巻
を参考にして実装してみた。
大羽さんの
MATLAB のページ
に公開してもいいんだけど, NLPに特化している感じがするのでここに公開して
おきます。
バグを取って速くしていたら書くのに2日かかってしまった。;
内部的には double hash になっていて, ハッシュ関数は perl 内部で使われている ものと 同じ。 ハッシュを自分で書いたのは数年ぶりなので, 勉強になった。これを使って, テキストを整数にマップするにはたとえば以下のようにします。 (/usr/share/dict/words を lexicon にする例)
slt:~% matlab > words = cellload('/usr/share/dict/words'); loading /usr/share/dict/words.. done. > map = hashtable(words,1:size(words,2)); adding key 45427/45427.. done. > text = textload('/home/dmochiha/corpus/austen/clean/emma.txt'); reading /home/dmochiha/corpus/austen/clean/emma.txt.. loading lines 14281/14281.. done. > d = textmap(map,text); mapping 14281/14281.. done. > d{100} ans = [ 19451 20830 36967 19255 38643 1369 41328 34619 28419 19897 24271 3073 0 ] > text{100} ans = { 'happier' 'if' 'she' 'had' 'spent' 'all' 'the' 'rest' 'of' 'her' 'life' 'at' 'Hartfield.' }(ans は圧縮して表記しました)
for i = 1:n a(i) = 0; endインデックスを逆からたどると, 最初に必要なだけ malloc されるので速くなります。 (要素の数が多いと, かなり劇的に違う)
for i = n:-1:1 a(i) = 0; end
タイトル一覧 |