投稿

12月, 2011の投稿を表示しています

色々あった1年だった

イメージ
今年一年を振り返ってみるとやはり地震の存在は大きいものの、それ以外にも色々激動だった。
が、まあ個人的なブログに偉人が亡くなったとか世の中のことを書くほど真剣に世の中と向き合っていたわけではないので、個人的なことを綴っておきたい。

TAMRON 18-200mm F/3.5-6.3 Di III VC Model B011 を買った

イメージ
NEX-5ND を買ってからしばらく経った。
わりと楽しく使っているのだが、遠くを撮影したい時にコンデジに太刀打ちできない寂しさに苛まれていたので SEL55210 を買おうと思い、数店探しまわった。しかし在庫が全然ない。でも SEL18200 は高価だしちょっと重い……。
そんなわけで結局 SONY E マウント系としてはサードパーティ製初となる TAMRON 18-200mm F/3.5-6.3 Di III VC Model B011 を買った。


本体が小さいためにどうしてもゴツい感じになってしまうものの、それほど重くもなく素敵なレンズだと思う。
これ1本で普段は済みそうだなと思っていたものの、最短撮影距離が今まで使用頻度が高かった SEL1855 の 0.25m に比べるとこのレンズは 0.5m となっていて、室内などで使うときには微妙な扱いにくさも感じた。

とはいえ、今まで撮影できなかった距離で撮影できるようになったのはとても嬉しい。
今後の撮影も楽しみになった。









PHP + MongoDB であいまい検索を作った話

先日、ちょっとしたキッカケで「あいまい検索」を作ってみようと思った。
アニメのタイトルで。

が、そもそもどうやって作るのかまったくわからない。
ただ、一応形態素解析とか N-gram とかは知っていたので、この辺を攻めればなんとかなるだろうと思ったのでちょっと考えた。
この時点で形態素解析を使ってしまうと使える範囲が限られてしまって楽しくなさそうなので、N-gram で行こうと最初に決めた。言語に依存しないし未知語に対しても強いし、アニメのタイトルのようなものに対しては相性が良さそうだから。

要するに似たものを出せばいいのだ。
例えば「らき☆すた」と「らきすた」は結構似ているが微妙に違う。Bigram を使うとすると、
らき☆すた: らきき☆ ☆す すた
らきすた: らききす すた
のように分かれて、強調にした場所のような共通項が存在する。
特に後半の2つは連続でヒットしていて結構重要なデータと言えそうだ。

そういうのを見てスコアリングして順位を決めればいいのではないだろうか?
と考えたので、実装してみた。

データは以下のような構造で保存した。

word コレクション
検索対象になる言葉の全文が入っているコレクション。
{ "_id": "(MongoDBが適当に素敵な感じのを考えてくれる)", "word": "らき☆すた" }wordNgram コレクション
検索対象になる語句を N 文字に分割した状態のコレクション。
{ "_id": "(MongoDBが適当に素敵な感じのを考えてくれる)", "w": "らき", "p": [ { "_id": "(wordコレクションでの「らき☆すた」の_id)", "pos": 0, //「らき☆すた」内での「らき」の出現位置 "len": 5 //「らき☆すた」の長さ } ] } こんな感じのものを沢山登録していく。
他にも語句を登録した時などに「らき」を持つものを登録する場合は p に…