タグ

ブックマーク / labs.cybozu.co.jp (32)

  • スマートフォンのカメラに映った人の名前・趣味や社会保障番号を特定する技術

    (この写真は2009年に別の人が作ったコンセプト) カーネギーメロン大学のAlessandro Acquistiさんのチームが、市販の顔認識ソフトウェア、クラウドコンピューティングサービス、ソーシャルネットワークサービス […] (この写真は2009年に別の人が作ったコンセプト) カーネギーメロン大学のAlessandro Acquistiさんのチームが、市販の顔認識ソフトウェア、クラウドコンピューティングサービス、ソーシャルネットワークサービスの三つを組み合わせることで、オフラインの人物の顔と、オンライン側の情報を突き合わせるという実験を行なったそうです。 「自分の名前のタグがオンラインの写真につけられるようになったことで、これまで匿名性が守られると思われていた状況でも、他人があなたの名前とあなたの情報を結びつけることができるようになりつつあります」というコメント。近い将来は、あなたの友

    スマートフォンのカメラに映った人の名前・趣味や社会保障番号を特定する技術
  • HAC に使える feature selection を試す (nakatani @ cybozu labs)

    プチ間空きましたが、「IIR の「効果的な」階層的クラスタリング」の続き。 「次回は feature selection で次元を落とすのを試してみるべき」と書いたとおり、feature selection(特徴選択)を行ってみます。 要は「25文書しかないのに 8000 語とか多すぎる。文書増えてったらガクブル。よし減らそう。全部必要な訳ないしね。でも、どうやって?」という話です。 IIR では、Chapter 13 にて feature selection を扱っており、 また Chapter 18 では LSI(latent semantic indexing)、乱暴に言えば固有ベクトルを求めることでその空間が来持っている次元数(階数)を導いている。 しかし、Ch.13 の内容は Bayesian のような「教師有り分類」の場合の feature selection しかカバーして

  • Perceptron を勉強する前にオンライン機械学習ライブラリを試してみる (nakatani @ cybozu labs)

    今度は CLUTO を試してみた話を書こうと思っていたのですけど、あまりふくらみそうにないので、保留。 オンライン学習(逐次学習)に興味があるので、まずは Perceptron 周辺を勉強し始めてます。 が、その前に動くものをさわっておこうということで、岡野原さんのオンライン機械学習ライブラリをちょっぴり試してみました。 oll プロジェクトページ(日語) ビルド Linux なら ./configure & make でOK。 Windows の場合 oll.hpp の先頭のどこかに #include <algorithm> を追加すれば VC++ でもコンパイルできました。 サンプルデータ サンプルデータには、プロジェクトページにも実験としてあがっている news20.binary をまずは使ってみることにしましょう。 「シャッフルし、15000例の訓練データと4996例のテストデー

  • IIR の「効果的な」階層的クラスタリング (nakatani @ cybozu labs)

    IR の階層的クラスタリングを試すの続きです。 "efficient" な HAC(hiererachical agglomerative clustering) を実装してみます。 今回は、コード全体をぺたぺた貼り付けるのも見にくいし面倒だしということで、github に置いてみました。 git://github.com/shuyo/iir.git 前回作った corpus パックも commit してありますので、 clone すればいきなり動く、はず。 git clone git://github.com/shuyo/iir.git cd iir/hac ruby hac.rb 4million.corpus おのおの手元でちょこちょこ改変して試してみるには CodeRepos より git の方が向いてるんじゃあないかなあと思ったんですが、git まだ使いこなせてないのでなんか色々

  • Webページの自動カテゴライズ (nakatani @ cybozu labs)

    パストラックは、「社会」「政治」「スポーツ」などのカテゴリごとにページのランキングを見る機能があります。 パストラックの注目・人気・定番のページ一覧で右上のセレクトボックスからカテゴリを選ぶと、そのカテゴリの一覧が表示されます。 例: 「政治」の人気ページ一覧(人気ページ=昨日・今日あたりによく見られたページ)http://pathtraq.com/popular?category=Politics「スポーツ」の注目ページ一覧(注目ページ=ここウン時間によく見られたページ)http://pathtraq.com/popular?m=upcoming&category=Sports「車/二輪」の人気ページ一覧http://pathtraq.com/popular?category=Motor「/グルメ」の注目ページ一覧http://pathtraq.com/popular?m=upcomi

  • Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)

    Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J

  • Yahoo形態素解析サービスを使って閲覧中ページのキーワードクラウドを表示するGreaseMonkeyスクリプト (nakatani @ cybozu labs)

    « Twitter & もごもごクライアント Twiggee 新版リリース | メイン | Javascriptでdiffる ( with 形態素解析 ) » Yahoo形態素解析サービスを使って閲覧中ページのキーワードクラウドを表示するGreaseMonkeyスクリプト Yahoo! Japan から 日形態素解析Webサービス がリリースされて、「ほほう」と思っている人も多いかと思います。 mecab などをサーバにインストールすれば今まででも形態素解析を使用したサービス(特に需要が多いのは分かち書きかな?)を提供することは可能だったわけですが、形態素解析は結構重い処理なので、非力なサーバだと少々しんどくて困っていたり、そもそもそういったアプリケーションをインストールできないサーバなために形態素解析の利用を断念していたなんて人には結構朗報かもしれません。 個人的には JSONP に

  • Perceptron を手で計算して理解してみる (nakatani @ cybozu labs)

    Perceptron の実装とか見ると、ものすごく簡単なので、当にこれで学習できちゃうの? と不安になってしまいました(苦笑)。 こういうときは、実際にパーセプトロンが計算しているとおりに、紙と鉛筆で計算してみて、期待する結果が出てくることを確認してみたくなります。 参照する教科書は「パターン認識と機械学習・上」(PRML) の「 4.1.7 パーセプトロンアルゴリズム」。 短い節です。必要最低限のことを一通り書いてある感じかな。 計算に用いるサンプルですが、手で計算できる規模でないといけないので、論理演算の AND を試してみることにします。 簡単に勉強 ちゃんとした説明は PRML などを見て欲しいですが、とても簡単にまとめます。 2値の線形識別モデルは、N 次元空間内を (N-1) 次元の超平面(決定面)で分割することで、入力ベクトル x から得られる特徴ベクトル φ(x) が2つ

  • Kazuho@Cybozu Labs: SSD (フラッシュメモリ) のベンチマークと選定基準

    ベンチマークに使用したのは、一般的な HDD、高速性で有名な Intel の SSD、ネットブック (DELL Inspiron Mini 9) の内蔵 SSD (STEC 製, 32GB)、および SanDisk の SDHC カード (SanDisk Extreme III) です注。 この表を見て2つの SSD を比較すると、読み込みパフォーマンスの差がそれほど大きくないことに気づきます。また、SD カードの読み込み速度も、HDD を大きく上回っています。つまり、ランダムリードについては、メーカーや SSD 間の差は、あまり大きくない、ということになります。 一方で、書き込みパフォーマンスについては、非常に大きな差があります。X25-M と STEC の SSD の差は、実に 50 倍にのぼります (SSD の書き込みバッファをオフにした場合の値はこちらの表を参照のこと)。また、SD

  • Kazuho@Cybozu Labs: Q4M - MySQL 上で動作するメッセージキュー

    « ウェブアプリケーションにおけるHDDの正しい使い方 | メイン | Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) » 2008年01月15日 Q4M - MySQL 上で動作するメッセージキュー 数年来ずっと「RDBMSに統合されたメッセージキューがほしい」と言ってきたわけですが、昨年末にストレージエンジンをプラグインとして開発できる MySQL 5.1 が RC になっていることに気づき、自分で作ってみました。 Q4M (Queue for MySQL) は MySQL 5.1 のプラガブル・ストレージ・エンジンとして動作するメッセージキューであり、堅牢・高速・柔軟であるよう設計されています。昨年12月遅くに開発が開始され、まだ非常に原始的ですが、かなり高速に動作します。 q4m.31tools.com 自分の英語を日語訳するというのも変なものですが

  • Kazuho@Cybozu Labs: なぜサイボウズ・ラボで働くのか

    « ウェブサービスの SSD 化について話してきました | メイン | MySQL の order by 〜 limit を高速化する方法 » 2008年12月08日 なぜサイボウズ・ラボで働くのか 12月6日に大阪で開催されたサイボウズの採用説明会で、話をさせていただきました。大学生の方々向けということで、あまり技術面に振ったプレゼンをするのもどうかと悩んだ末、自分が、なぜサイボウズ・ラボで働いているのか、ということを、大学生の頃から振り返ってみることにしました。 ふだん、しなれていない類いの話なので、うまく伝わったか、正直不安です。ただ、自分自身にとっては、何が好きなのか、何がやりたいのか、ということを改めて見つめ直すいい機会になりました。また、来場者の方々といろいろ話をできたことも、自分にとっていい刺激になったと感じています。 ですので、ご来場いただいた方々には、サイボウズに興味をも

  • Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました

    « 開発しているウェブアプリケーションフレームワーク NanoA について話してきました | メイン | なぜサイボウズ・ラボで働くのか » 2008年11月27日 ウェブサービスの SSD 化について話してきました 日 (11/27) 開催の Shibuya Perl Mongersテクニカルトーク#10 で、ウェブサービスの SSD 化について話しました。スライドを置いておきますので、開発しているウェブアプリケーションフレームワーク NanoA について話してきました とあわせてご覧いただければ幸いです。 末筆となりますが、Shibuya.pm の実行委員(?)の方々、ありがとうございました&おつかれさまです。 (まだ終わってないけど ^^;)

  • Kazuho@Cybozu Labs: ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性

    « Filter::SQL でデータベースを叩くワンライナーを簡単に書く方法 | メイン | ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法) » 2008年10月28日 ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 実際に試してみた結果については、ウェブサービスの SSD 化について話してきましたをご参照ください。 検索エンジンや小さな行が多いデータベース等で使用する目的での SSD (Intel X25-M) のベンチマーク結果については、Kazuho at Work: Benchmarking SSD for MySQL をご覧ください (InnoDB の話をしていますが、Senna / Tritonn でも基的に同じ) Sun が SSD 製品の投入を表明 (マイコミジャーナル) したり、Google

  • 秋元@サイボウズラボ・プログラマー・ブログ

    This Layoff does not exist (このレイオフは実在しない)は、機械学習で存在しない情報を作る一連のwebサイトの流行”does not exist”シリーズの新顔で、ページを読み込むたびに新しい企業レイオフのアナウンスメッセージを生成するという不穏なジョークサイトです。 自動生成された嘘のレイオフアナウンス ページの一番上には3つのパラメーターが表示されています。 社名 レイオフの原因 CEOは責任を認めているか(true = 認めている) これらがランダムに選ばれ、パラメーターに応じた「社長からの苦渋のメッセージ」が表示されます。 たとえば、太陽光ラップトップの開発失敗による10%のレイオフ。 Daniel’s idea was embraced and we went ahead and developed a prototype for the laptop.

    秋元@サイボウズラボ・プログラマー・ブログ
  • Kazuho@Cybozu Labs: MySQL の ORDER BY を高速化

    « MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 | メイン | なんとなくリフレクション in C++ » 2008年06月20日 MySQL の ORDER BY を高速化 Pathtraq の拡張にむけて、いろいろ技術的な可能性を調査していると、MySQL の ORDER BY に負荷がかかっていることが分かりました。他にもボトルネックはあるのですが、ここは比較的最適化しやすそうだったので、試しに書いてみました。 mysql51-sort-opt.patch やっていることは、ソートルーチンのベタな最適化です。ORDER BY 句によって悪名高き filesort が実行される場合に、最大30%〜50%ほど高速に動作するようになりました。ただ、自分が書く類いのクエリだと、質的には top n sort を実装すべきなので、どうしたものかと思っていま

  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

    « MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原

  • Kazuho@Cybozu Labs: MySQL のクエリ最適化における、もうひとつの検証方法

    « メッセージキュー事始め with Q4M | メイン | フレンド・タイムライン処理の原理と実践 » 2008年06月09日 MySQL のクエリ最適化における、もうひとつの検証方法 EXPLAIN を使用して MySQLSQL を最適化するというのは、良く知られた手法だと思います。しかし、EXPLAIN の返す結果が、かならずしもアテになるわけではありません。たとえば、以下のような EXPLAIN を見て、このクエリが最適かどうか、判断ができるでしょうか。私には分かりません。 mysql> EXPLAIN SELECT message.id,message.user_id,message.body FROM message INNER JOIN mailbox ON message.id=mailbox.message_id WHERE mailbox.user_id=2 OR

  • Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件

    « Pathtraq 最新ランキング ガジェットを公開しました | メイン | Q4M (Queue for MySQL) 0.3 リリース » 2008年03月10日 高速なCometサーバを書いてみた件 もう昨年の2月になりますが、Comet について調査を行いました。その際の成果をまとめたスライドは既に公開していた (Comet の正しい使い方) のですが、同時に実際に作ってみた実装についても、オープンソース化することとなりました。コードは CodeRepos に置いておきますので、どうぞご覧ください。 (Revision 7754: /lang/perl/fastr) 使い方は example ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

  • 一つの指標に頼らないこと | 秋元@サイボウズラボ・プログラマー・ブログ

    ウェブの質を理解せずに、どこか一社が提供している指標でもって、広告やSEOの成果測定をおこなったり、広告料金の算定に使ったりする無知が、不正の温床となります。 複数のサービスの値を見て比較することで、ある特定のサービスで急な変化があったときに、それが確からしいのか、何か操作が行われているのか、を知ることができるかもしれません。 そういう意味では、アレクサ以外のサービスが多数出てきて使えるようになったのはよいことでしょう。 この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかもしれません