ブックマーク / naoya-2.hatenadiary.org (21)

  • Titanium Mobile についての勉強会資料 - naoyaのはてなダイアリー

    昨日は gumiStudy#5 でした。何か Tech Talk を、ということだったので最近いじっていた Titanium Mobile について整理して、紹介してきました。 Titanium MobileView more presentations from Naoya Ito. (フォントがひどいですね・・・すみません。http://www.slideshare.net/naoya1977/titanium-mobile/download からダウンロードできます) 先日書いたエントリ (http://d.hatena.ne.jp/naoya/20101011/1286799669) のとおり、Titanium Mobile を使うと JavaScript でネイティブアプリを開発することができます。しかも iPhone/Android マルチプラットフォーム対応。最近は Blac

    Titanium Mobile についての勉強会資料 - naoyaのはてなダイアリー
  • Titanium - JavaScript で iPhone/Android アプリを作る - naoyaのはてなダイアリー

    Titanium Mobile は JavaScriptiPhone/Android のアプリ (not Webアプリ) を開発できる開発環境。詳しくは Titaniumで始めるモバイルアプリ作成の基礎知識 (1/3):Web技術でネイティブアプリを作れるTitanium(2) - @IT などに解説があります。 少し時間があったので、JavaScript で作るというのがどんな感じか試してみました。作ったアプリは こんな感じで TableView があり、選択すると WebView でアプリ内ブラウザが立ち上がる、ブラウザはツールバーで「戻る」や「リロード」が可能。あとはタブコントロールがあったり・・・という単純なもの。初期起動画面のサイトリストは、HTTP でローカルに立てたサーバーから JSON で読み込んでいます。 Web上のドキュメントを見ながら2, 3時間試行錯誤で一応の

    Titanium - JavaScript で iPhone/Android アプリを作る - naoyaのはてなダイアリー
  • Scripting Layer for Android で Perl x Android - naoyaのはてなダイアリー

    Shibuya Perl Mongers テクニカルトーク#14 に行ってきました。諸々面白かったですがパネルディスカッション、LT ともに id:kazuhooku さんの発表が良かったですね。 さて、Scripting Layer for Android (SL4A) を使って、PerlAndroid を hack する話をしてきました。SL4A は jRuby、PerlPythonPHP などの言語を Android で使えるようにするアプリ。それぞれの言語からは AndroidFacade API と呼ばれる API で、AndroidUIやカメラを操作できるというものです。 発表資料は以下です。 Scripting Layer for Android + Perl (SlideShare) http://www.slideshare.net/naoya1977/sc

    Scripting Layer for Android で Perl x Android - naoyaのはてなダイアリー
  • B木 - naoyaのはてなダイアリー

    昨年から続いているアルゴリズムイントロダクション輪講も、早いもので次は18章です。18章のテーマはB木(B Tree, Bツリー) です。B木はマルチウェイ平衡木(多分木による平衡木)で、データベースやファイルシステムなどでも良く使われる重要なデータ構造です。B木は一つの木の頂点にぶら下がる枝の数の下限と上限を設けた上、常に平衡木であることを制約としたデータ構造になります。 輪講の予習がてら、B木を Python で実装してみました。ソースコードを最後に掲載します。以下は B木に関する考察です。 B木がなぜ重要なのか B木が重要なのは、B木(の変種であるB+木*1など)が二次記憶装置上で効率良く操作できるように設計されたデータ構造だからです。データベースを利用するウェブアプリケーションなど、二次記憶(ハードディスク)上の大量のデータを扱うソフトウェアを運用した経験がある方なら、いかにディ

    B木 - naoyaのはてなダイアリー
    publichtml
    publichtml 2009/04/15
    18章 "B Tree"
  • naoyaのはてなダイアリー

    ときどき、たまたま自分がそのとき考えていたことについてそれを補強するような材料が偶然たくさん集まってくる、なんてことがあります。そんな出来事があったので、ちょっとブログを書いてみようかなと。 以前に HBFav を作ったときこんなことを書きました。 Mark Zuckerberg は、いずれみんな、ニュースは友人知人経由で知ることになるだろうと言っていました。自分もそうなるだろうと思います。 4年ぐらいが経ちましたが、その思いは以前よりも増して確信めいたものになってきています。 ところで先日、Twitter の iOS アプリに「ニュース」という機能が追加されました。人によっては出てないそうなのでまだテスト中か、もしくは既に削除されているのかもしれないですが。 この機能についての自分の感想は以下のようなものでした。 もうすこし補足します*1。 Facebook や Twitter のような

    naoyaのはてなダイアリー
    publichtml
    publichtml 2009/03/01
    18章 "Matrix decompositions and latent semantic indexing"
  • Latent Semantic Indexing - naoyaのはてなダイアリー

    情報検索におけるベクトル空間モデルでは、文書をベクトルとみなして線形空間でそれを扱います。この文書ベクトルは、文書に含まれる単語の出現頻度などを成分に取ります。結果、以下のような単語文書行列 (term document matrix) が得られます。 d1 d2 d3 d4 Apple 3 0 0 0 Linux 0 1 0 1 MacOSX 2 0 0 0 Perl 0 1 0 0 Ruby 0 1 0 3 この単語文書行列に対して内積による類似度などの計算を行って、情報要求に適合する文書を探すのがベクトル空間モデルによる検索モデルです。 見ての通り、単語文書行列の次元数は索引語の総数です。文書が増えれば増えるほど次元は増加する傾向にあります。例えば索引語が100万語あって検索対象の文書が 1,000万件あると、100万次元 * 1,000万という大きさの行列を扱うことになりますが、単

    Latent Semantic Indexing - naoyaのはてなダイアリー
  • Introduction to Information Retrieval #17 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 17章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_17.ppt 17章のテーマは "Hierarchical clustering" で、前回 16 章の非階層型クラスタリングに続き、階層型クラスタリングの話です。 階層型クラスタリング 階層型クラスタリングはその名の通り、階層構造を伴ったクラスタリングの手法です。例えば「はてなダイアリー」に関するクラスタと、「はてなブックマーク」に関するクラスタは、二つが合わさって上位に「はてな」というクラスタを形成し、更に上位に「ウェブサービス」というクラスタを形成するかもしれません。こうして階層構造はデンドログラムと呼ばれる二分木を構成します。 ウェブサービス -+- はてな -+- は

    Introduction to Information Retrieval #17 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2009/02/10
    第17章 "Hierarchical clustering" (階層型クラスタリング)
  • Introduction to Information Retrieval #16 の復習資料 - naoyaのはてなダイアリー

    しばらく間が空いてしまいました。Introduction to Information Retrieval 輪読会 16章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_16.ppt 16章のテーマは、"Flat Clustering" で話題はクラス分類からクラスタリングへと移ります。16章ではクラスタとクラスタの間に関係性がないフラットクラスタリングを扱い、続く 17章ではクラスタ間に階層的構造を見出す階層型クラスタリング (Hierachical clustering) を扱います。 クラスタリング 13章から15章までは Naive Bayes や SVM などによる "Classification" が話の主題でした。クラスタリングも同様に情報のグルーピングを行うものですが、Classification

    Introduction to Information Retrieval #16 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2009/01/22
    16章 "Flat Clustering"
  • Introduction to Information Retrieval #12 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 12章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_12.ppt 12章は、は "Language models for information retrieval" ということで、確率的言語モデルを情報検索に適用する話でした。 確率的言語モデル 確率的言語モデルとは、自然言語を数学的に扱うモデルに単語列、文字列が起こる確率を与えたものです。例えば "frog said that toad likes dog" という単語列 s があったとして、それぞれの単語の生起確率が与えられているとします。 frog said that toad likes that dog M1 0.01 0.03 0.04 0.01 0.02 0.04

    Introduction to Information Retrieval #12 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/10/02
    12章 "Language models for information retrieval"
  • Introduction to Information Retrieval #11 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 11章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_11.ppt 11章は、は "Probabilistic information retrieval" すなわち確率的検索モデルです。 IIR 10章までにあつかった検索モデル IRシステムをどのような概念を用いて実現するかが「検索モデル」であり、IIR ではここまで以下の2つのモデルを扱いしました。 ブーリアンモデル ベクトル空間モデル ブーリアンモデルは比較的単純な検索モデルで、ブール代数を基礎とした論理式によりクエリを組み立て、検索するモデルです。基的にスコアリングは行いません。 ベクトル空間モデルは、クエリや文書を索引語の重みベクトルで表現して、クエリベクトルと文書ベ

    Introduction to Information Retrieval #11 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/09/09
    「11章は、 "Probabilistic information retrieval" すなわち確率的検索モデルです」
  • Array::Gap - naoyaのはてなダイアリー

    明日は一ヶ月ぶりのIIR輪読会 です。主催のたつをさんから「教科書の話題から何か適当に実装せよ」という課題が出ていたので、5章 のインデックスの圧縮の所で見た Variable byte codes (以下 VB code) を使った圧縮の実装を作ってみました。 整列済みの整数を圧縮する手法 ここでの圧縮のポイントは二つ。 昇順に並べられた整数を、整数そのままの数で扱うのではなく、一つ前の要素との差で扱う。差で扱うと 21,314,156 → 21,314,157 という数は "1" というより小さい数で表現することができる。(整列済みなので、差が分かれば逆の操作で復元が可能) 32 ビット int の整数を固定長 32 ビットで表現するのではなく可変長バイトで表現する。(これが VB code) VB code なら小さな数字は 32ビット = 4バイトよりも小さなビット数で表現できる

    Array::Gap - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/09/08
    IIR関連の夏休みの宿題。インデックスの圧縮手法を実装。
  • Introduction to Information Retrieval #10 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 10章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_10.ppt 10章は、は "XML retrieval" です。XML が題材になっては居ますが、実際には XML がどうこうというよりも、構造化されたドキュメント (structured document) に対して IR システムを拡張しようとすると、どのような困難があるか、それをどのように解決すべきか、拡張された IR システムはどう評価されるべきか、という話が主だったところです。 対象が structured な物である場合「その構造の中のどの部分を検索結果として返却すれば良いか」など、自明でない点が出てきます。XML retrieval であれば、XML docum

    Introduction to Information Retrieval #10 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/08/04
    #10 XML retrieval
  • Introduction to Information Retrieval #9 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 9章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_09.ppt 9章は、検索結果の適合性を改善するするための二つのアプローチ、Relevance Feedback (RF) とクエリ拡張についての話です。 検索結果のドキュメントに対してユーザーから追加の入力 (Relevant か Non-relevant か) を受け取るのが RF です。受け取ったフィードバックは、ベクトル空間でベクトルの重心を使ってクエリベクトルを最適化することに利用できます。最適化のアルゴリズムとして Rocchio アルゴリズムを利用します。ただし、特に Web 検索などにおいては、ユーザーは明示的なフィードバックを好みません。そこで、ユーザーからの入

    Introduction to Information Retrieval #9 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/07/28
    #9 Relevance feedback and query expansion
  • Introduction to Information Retrieval #8 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 8章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_08.ppt 8章は、検索結果の適合性を定量的に評価する指標の解説が主です。適合性判断のための最も基的な指標である Precision と Recall、その二値のトレードオフを加重調和平均値で表現する F measure がまず最初に紹介されています。ランク付けされた検索結果に関してはこれらの指標をもう少し拡張する必要があります。そのために Precision - Recall 曲線を分析する方法や、検索結果指標を一つの統計量で表現する MAP (Mean Average Precision) などが紹介されています。また、Web 検索のような先頭数十件の検索結果が重要な場合

    Introduction to Information Retrieval #8 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/07/09
    #8 Evaluation in information retrieval
  • Introduction to Information Retrieval #7 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 輪読会 7章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_07.ppt 7章の前半は、6章に引き続きスコアリングの話題です。Vector space model での内積計算を真面目にやろうとすると計算量が膨大になるため、いくつかのヒューリスティクスを導入して計算量を削減します。cos 類似性算出のアルゴリズムの見直し、idf や tf あるいは静的なドキュメントの何かしらのスコア (例えば PageRank のようなもの) を使って計算対象のドキュメントを足切りする、Impact ordering により cos 類似計算のループ回数を削減する、などの手法が紹介されています。 後半では、7章までに紹介されてきた各種コンポーネントを統合

    Introduction to Information Retrieval #7 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/06/25
    #7 Computing scores in a complete search system
  • Introduction to Information Retrieval #5 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval の5章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_05.ppt 5章はインデックス圧縮がテーマです。辞書の圧縮と postings files の圧縮に対するそれぞれのアプローチについての解説が主です。転置インデックスの振る舞いに特化した圧縮手法などが紹介されていて、とても面白い章でした。数値表現をビット単位で最適化する γ coding などは目から鱗です。 次回の輪読会は 6/8 予定です。次章の内容は、検索結果のスコアリングについて。tf-idf や Vector space model についての話が中心になります。 過去の章のアーカイブは同 URL のディレクトリ (http://bloghackers.net/~naoya

    Introduction to Information Retrieval #5 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/05/22
    "5章はインデックス圧縮がテーマです"
  • Introduction to Information Retrieval #4 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval の4章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_04.ppt 4章はインデックス構築に関するアルゴリズムなどがテーマです。 前半では単一マシン上で二次記憶装置を使ったインデックス構築手法として、入力を適当なサイズのブロックに分けて最後にマージする Blocked sort-based indexing (BSBI) と、BSBI を改良して入力をストリームで扱うようにした Single-pass in-memory indexing (SPIMI) が紹介されています。 次に、例えばウェブ検索のような、単一のマシンでは扱いきれない巨大なインデックスを扱う戦略として、並列計算クラスタで分散インデックスを構築する Google の Ma

    Introduction to Information Retrieval #4 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/04/28
    "4章はインデックス構築に関するアルゴリズムなどがテーマです。"
  • Perl のリスト操作を Ruby 風に - naoyaのはてなダイアリー

    Perl の言語組み込みのリスト操作は関数形式で、push(@array, 1, 2) のような記述になります。一つのリストに対して複数の操作をしたい場合などは、関数呼び出しを複数行にわたって書いていくことになり、少々面倒です。しかし Perl は、Perl のリスト実装である配列のリファレンスに bless してメソッドを定義したクラスを作ることができます。この独自に定義したクラスにプリミティブな操作を加えていって、Ruby のように連続したメソッドの呼び出しによるリスト操作を実現することが可能です。 ここでは List::RubyLike という配列クラスを作成します。まずは手始めに配列に bless して、size() メソッドが呼び出せるようにします。以下のようになります。 package List::RubyLike; use strict; use warnings; sub

    Perl のリスト操作を Ruby 風に - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/04/24
    "Perl のリスト実装である配列のリファレンスに bless してメソッドを定義したクラスを作ることができます。この独自に定義したクラスにプリミティブな操作を加えていって..." →jQueryみたいなメソッドチェーン
  • Introduction to Information Retrieval #2後半、#3前半 の復習資料 - naoyaのはてなダイアリー

    Introduction to Information Retrieval 2章後半と3章前半の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_02_2.ppt http://bloghackers.net/~naoya/iir/ppt/iir_03_1.ppt 今回は 2 章の後半 postings list のマージの効率的な実装方法 フレーズインデックスと positional インデックスによるフレーズ検索の実現方法 3 章前半 辞書検索のためのデータ構造 ワイルドカードクエリの実現方法 という内容です。次回はスペルミス補正 (もしかして機能) についてになります。次回の輪読会は少し間が空いて 4/12 予定ですので復習資料のアップロードも 4 月になるかと思います。 過去の章のアーカイブは同 URL のデ

    Introduction to Information Retrieval #2後半、#3前半 の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/03/09
    IIR輪講。第2章の後半 と 第3章.の前半。"Web検索では10% が明示的なフレーズ検索。残りは暗黙のフレーズ検索。stanford university → 実際には stanford AND university = “stanford university” "
  • Introduction to Information Retrieval #2 (前半) の復習資料 - naoyaのはてなダイアリー

    id:naoya:20080205:1202208135 から引き続き、Introduction to Information Retrieval 2章の復習資料を以下にアップロードしました。 http://bloghackers.net/~naoya/iir/ppt/iir_02_1.ppt 今回は 2 章の前半、インデックス作成前のドキュメントの前処理に関する話題が中心です。2章は長かったので、区切りの良いところまでとなっています。次回の輪読会は 3/8 予定です。また次回の開催日後に、先週末の復習分である 2章残りと 3章前半についての資料を公開したいと思います。 過去の章のアーカイブは同 URL のディレクトリ (http://bloghackers.net/~naoya/iir/ppt/) から一覧できます。

    Introduction to Information Retrieval #2 (前半) の復習資料 - naoyaのはてなダイアリー
    publichtml
    publichtml 2008/02/19
    IIR輪講。第2章"The term vocabulary and postings lists"の前半