タグ

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

  • キーワード抽出モジュール Lingua::JA::Summarize を使うコツ (nakatani @ cybozu labs)

    いわゆる「Web2.0」っぽい要素である「タグ」。 一般にはタグ付けは手動で行うわけですが、自然言語テキストへのタグ付け(キーワード抽出)を自動で行うことができれば、あれこれと可能性が広がって楽しそう……しかし、それは実現が難しかったり高コストだったりして、簡単に手を出せる解はあまりありません。 ラボの奥さんの作成したキーワード抽出モジュール Lingua::JA::Summarize は次の特徴を持っています。 動作要件の敷居が低い 辞書のメンテナンスをしなくても、未知語や熟語もある程度抽出してくれる 希望の結果に近づけるためのチューニングが可能 モジュールを使って、サイボウズ・ラボ内での情報交換を行っている社内掲示板をスレッド単位で解析しているのですが、辞書を一切チューニングしていない状態でも「しょこたん☆ぶろぐ」や「かぶり隊隊員ニャンコ達」などの特徴的なキーワードが抽出されます(

    IMAKADO
    IMAKADO 2009/08/03
    Lingua::JA::Summarize
  • Kazuho at Work: Q4M Presentation Slides at MySQL Conference

    Today at MySQL Conference & Expro 2009, I did a presentation introducing / explaining Q4M. Thank you to people who came to listen. The presentation slides I used can be found on slideshare (slideshare). Tomorrow (Apr 23) from 6:10pm, I will be doing another presentation at Percona Performance Conference, held at the same location, to describe the techniques (mainly MySQL UDFs) used to squeeze maxi

  • Kazuho@Cybozu Labs: setlock を使って cron をぶんまわす方法

    « データベースをコピーするモジュール DBIx::Replicate | メイン | Tritonn (MySQL+Senna) の join を高速化 » 2008年01月30日 setlock を使って cron をぶんまわす方法 事前計算や DB 再構築を手軽に実行するのに cron は便利ですが、タスクのまわし過ぎによるサービスのパフォーマンス低下や実行順序の制御を別途行う必要があります。自分は、そのためのツールとして、daemontools の setlock コマンドがお気に入りです。setlock は、flock を用いて、タスクの待機や実行中止を制御することのできる、とても小回りのきくプログラムです。 1-59/* * * * * /usr/local/bin/setlock -nx /tmp/precompute.lock /usr/local/bin/setlock

    IMAKADO
    IMAKADO 2009/05/08
    cron 実行順序の制御
  • Kazuho@Cybozu Labs: Q4M Version 0.4 で高速なクローラを書いてみた

    « Parallel::Prefork - Perl でマルチプロセスなサーバを書く方法 | メイン | Japanize for IE バージョンアップのおしらせ » 2008年04月07日 Q4M Version 0.4 で高速なクローラを書いてみた 日、MySQL 5.1 のプラガブルストレージエンジンとして動作するメッセージキューQ4M のバージョン 0.4 をリリースしました。バージョンでは、条件付購読 (conditional subscription) という、特定の条件を満たす行だけをメッセージキューから読み込む機能に対応したのですが、これを使って、クローラを書いてみました。 使い方は以下のとおりです。 # url テーブルを作成 % mysql -p test mysql> CREATE TABLE url ( id int(10) unsigned NOT NULL

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

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

  • テキストをマインドマップにするText2MindMap | 秋元@サイボウズラボ・プログラマー・ブログ

    Text 2 Mind Mapは、テキスト形式の入力からマインドマップを生成してくれるサービスだ。 左側のボックスで、タブを使って言葉と言葉の階層関係を作るだけでよい。Tabキーでインデントし、Shift+Tabでインデントを一つ減らす。 あとは、”Convert to MindMap”ボタンを押すと、右側にマインドマップが生成される。右サイド(3)の調整で色やフォントサイズを変えることもできて、(4)でjpgに吐き出すこともできる。 秋元4つの活動 日語も通ったし、これはよくできていると思った この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかも

    テキストをマインドマップにするText2MindMap | 秋元@サイボウズラボ・プログラマー・ブログ
  • Kazuho@Cybozu Labs: YAPC::Asia 2008 で Pathtraq について話してきました

    « データベースの差分バックアップとウェブサービスのお引っ越し | メイン | メッセージキュー事始め with Q4M » 2008年05月16日 YAPC::Asia 2008 で Pathtraq について話してきました YAPC::Asia 2008 で、Pathtraq の裏側の技術的特徴について話してきました。統計処理を行うウェブサービスを構築する上での問題や解決技法だけでなく、インターネットにおけるロングテールの実測データや、現在のサービス規模等の話も入っていますので、興味ある方はご覧いただければ幸いです。 スライドはこちら: YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service » SlideShare 過去3年間で最大の YAPC::Asia だったのでしょうか。一参加者

  • Kazuho@Cybozu Labs: データベースの差分バックアップとウェブサービスのお引っ越し

    « C++ テンプレートを使って高速な高機能サーバを書く方法 | メイン | YAPC::Asia 2008 で Pathtraq について話してきました » 2008年05月01日 データベースの差分バックアップとウェブサービスのお引っ越し 現在、Pathtraq のサーバを、オフィス内のサーバルームに設置されたマシンからデータセンタ内の新サーバへ移行する作業を行っています。その際に問題となるのは、ダウンタイムを最小にしつつ、100GB 弱ある MySQL のデータをいかに移動させるか、という点になります。答えは言うまでもなく差分転送なのですが、rsync は双方向の接続が必須だったり、差分情報をキャッシュすることができなかったり、いろいろ融通が効かなそうです。だんだん調べるのも面倒になってきたので、自分のニーズに見合う、データベースファイル用の差分バックアッププログラムを書いてみました

  • log4ZIGOROu : nsIObserverServiceを使って複数のobserverに通知を行う

    date 2007-06-01 17:29:44 category ExtensionJavaScript permlink here comment 0 trackback 0 FirefoxやThunderbirdの拡張を作る際に、場合によっては非同期処理が入ったりします。 XPCOMではそのような場面でobserverが簡単に仕込める仕組みとして、nsIObserverServiceと言うインターフェ−スがあるので、今回はその使い方についてご紹介します。 ObserverServiceの概要 そもそもnsIObserverServiceには下記のようなメソッドが定義されています。 addObserver() removeObserver() notifyObservers() enumerateObservers() 以下簡単にそれぞれについて触れてみます。 addObserver,

  • 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 ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

  • EditArea ソースコード編集専用のJavascriptエディタ | 秋元@サイボウズラボ・プログラマー・ブログ

    via Ajaxian EditAreaは、HTMLフォームでソースコードを編集するためのJavascriptライブラリ。 デモページで使ってみていただくのが一番わかりやすい。 機能リストのところを訳すと、 スクリプトをインクルードして関数一個呼ぶだけ タブが打てる(これはいい) 検索と置換 シンタックスハイライト機能あり。他の言語用にカスタマイズもできる オートインデント 行番号表示 多言語対応。日語も 高速化用に、ライブラリを連結して圧縮(gzip)するPHPスクリプト同梱 複数配置可能 全画面モード プラグイン対応 保存や読込時のフックあり 動的なコンテンツ管理が可能(?) 他Javascriptライブラリと共存可能 主要ブラウザに対応。対応状況はこちらに。 これいいんじゃない? > 西尾さん この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合

    EditArea ソースコード編集専用のJavascriptエディタ | 秋元@サイボウズラボ・プログラマー・ブログ
  • TAKESAKO @ Yet another Cybozu Labs: Shibuya.JS Digest (for John Resig) 発表資料公開しました

    The Future of JavaScript -presented by Mozilla & Shibuya.JS- で、ゲストの John Resig 向けに Shibuya.JS Digest の発表をさせていただきました。 当日のustream中継は約200名ぐらいの方が視聴されていたと聞いています。 画面が小さくてすみませんでした。当日の録画アーカイブもustream上で見れるようになっています。 John Resig と記念撮影 筆談(主にamachang と John Resig と kawaさんの会話) ohn Resig - Speaking in Tokyoによると、 As a side note: Shibuya.JS is the only JavaScript user group that I know about - really anywhere in t

  • Kazuho@Cybozu Labs: DBIx::Printf と LIKE 式

    社の山さんに「DBIx::Printf では LIKE 式の扱いも考えるべき」と言われたので、こんな感じで対応してみました。 my $prefix = "abc"; my $sql = $dbh->printf( 'select * from t where name like %like(%s%%)', $prefix, ); print "$sql\n"; # 出力: select * from t where name like 'abc%' %like(fmt) の中に渡される引数においては、% や _ もエスケープするようにしました。これで、いちいち別のエスケープルーチンを呼ばなくても、ユーザーが入力した値が % で始まっている場合に全サーチが始まってシステムが重くなる、といった事態が起きないようになります。 やややりすぎ感がありますが、こういう面倒も見てくれるといいよね、と

    IMAKADO
    IMAKADO 2007/10/18
    printf like
  • Kazuho@Cybozu Labs: Perl で並列処理 (using マルチプロセス)

    « DBI::Printf - A Yet Another Prepared Statement | メイン | DBIx::Printf と LIKE 式 » 2007年10月02日 Perl で並列処理 (using マルチプロセス) Shibuya.pm で牧さんが Gungho の話をされたそうで、スライドを拝見しました。Pathtraq への言及もあってうれしい。 で、スライドを読んでいて、HTTP アクセスと HTML 解析/保存処理を分離すべき、となっている点が気になりました。実は Pathtraq (のうち奥が書いている部分) では、Gungho と HTML の解析/保存処理を分離することはしていません。そのかわり、複数のワーカープロセスを駆動することで、スループットを確保しています。分離モデルとマルチプロセスモデル、どちらの手法を採るべきかは、解析/保存処理の重さやエラ

    IMAKADO
    IMAKADO 2007/10/18
    並列処理
  • Kazuho@Cybozu Labs: E4X-XSS 脆弱性について

    « 安全な JSON, 危険な JSON (Cross-site Including?) | メイン | JSONP - データ提供者側のセキュリティについて » 2007年01月10日 E4X-XSS 脆弱性について Firefox でサポートされている JavaScript 拡張 E4X (ECMA-357) では、JavaScript 内に XML とほぼ同様のマークアップ言語を記述できるようになっています。しかし、マークアップ言語の解釈にはいくつかの違いがあり、この点をついたクロスサイトスクリプティングの可能性が (相当に小さいものの) 存在します。攻撃者は、 ウェブアプリケーションに E4X として解釈した場合に実行コードとして解釈されるコードを注入 (XSS) し、 1 のコンテンツを <script> タグを用いて参照するような別のウェブサイトを用意し、攻撃対象にアクセスさせ

    IMAKADO
    IMAKADO 2007/10/17
    対策もあり
  • log4ZIGOROu : JSON::DWIW vs JSON::Syck vs JSON

    date 2007-03-22 16:32:25 category CPAN permlink here comment 4 trackback 0 最近CPANにJSON::DWIWというJSON parserがリリースされて居ました。 このモジュールのPODにはBenchmarkの結果があり、JSON, JSON::Syckとのベンチ結果が載っていますが、なんとJSON::Syckより速いとの結果が出ています! ちょっと気になったので自分でもベンチマークを取ってみました。 ソース 下記のような感じです。 #!/usr/bin/perl use strict; use warnings; use Benchmark; use Data::Dump qw/dump/; use File::Slurp; use JSON qw(); use JSON::Syck; use JSON::DWI

    IMAKADO
    IMAKADO 2007/10/12
    Syckとのベンチマークあり
  • Kazuho@Cybozu Labs: prototype.js のイベント順序

    « さらば Paged List | メイン | CBL Partial Updater (20050922) リリース » 2005年09月22日 prototype.js のイベント順序 prototype.js (1.3.1) を使用していて、奇妙な現象にぶつかったので、メモをかねてブログ。 prototype.js を非同期モード (asynchronous:true) で実行している場合、 onComplete の後に onLoading が呼ばれることがある。 原因は、prototype.js のこのコード: if (this.options.asynchronous) { this.transport.onreadystatechange = this.onStateChange.bind(this); setTimeout((function() {this.respond

  • TAKESAKO @ Yet another Cybozu Labs: 最新のネットランナーでPlaggerが紹介されてるっ

    ネットランナー2007年2月号の記事の中で、Plaggerが紹介されていることを教えてもらいました。 おおお。当に紹介されてる。 「オレ専用ポッドキャストで新着Youtube動画配信」という記事で、72ページ目から4ページまるごとPlaggerです。mizzyさんのハックが全面的に紹介されています。 しかもご丁寧にダウンロードサイトも開設されています。 ツール保管庫.net/2007年2月号 特集2 編集部で用意した config.yaml とバッチファイルもダウンロードできるようになっていて、 ActivePerlのインストールから、Plaggerをタスクスケジューラに登録するところまで解説されています。 紙媒体のWindowsのインストール記事としては一番よくまとまっているのではないでしょうか。 こんなに早くネットランナーで紹介されるとはまさに想定の範囲外でした。 もしかして、Pla

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

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

  • TAKESAKO @ Yet another Cybozu Labs: [YAPC] 正規表現にフォーカスしたPerl6入門

    YAPC::Asia 2007 Tokyo で発表した資料を公開しました。 Yoshinori Takesako - s/ Perl5 Regular Expression / Perl6 Regex and Rule /mixes; Perlの黒魔術の一つであった正規表現。後付の拡張を繰り返した結果、問題解決の強力な武器に成長した反面、人間にも計算機にも読みにくい諸刃の剣にもなってしまいました。そこで再設計されたのがPerl6! 正規表現の書き方がPerl5からどのように変わるのか、これからPerl6のプログラムを書いてみようという人向けにわかりやすく解説します。 Software Design 2007年2月号の巻末特別企画「先取り Perl6正規表現カタログ ~ Perl5からの変更点を徹底解説!」の記事がベースになっています。 Perl6ではPerl5からの後方互換性は考慮しなくな

    IMAKADO
    IMAKADO 2007/09/11
    perl6 regexp