タグ

ブックマーク / chasen.org/~taku (8)

  • きまぐれ日記: MeCabがiPhone,OSXに載っていると言うのは止めようと思う

    iPhoneのSDKの条項に変更が加わり、Flashのクロスコンパイルを含む 純正開発ツール以外で作成されたバイナリの配布が禁止となるようです。 世間でも散々言われていますが、この変更は正直とても残念です。 Apple的には「製品のクオリティーが保てないから」という理由だそうですが、 WindowsiTunesが意味もなくQuickTime入れたり、Windows非標準のUIを 使いまくっていて、お世辞にもクオリティーが高いとは言えないのを棚にあげて、 クオリティー云々と言い訳できるのでしょうか。アプリなんて所詮 玉石混淆。決めるのはユーザです。 MeCabは以前GPL/LGPLでした。Appleを含む複数の方からこのライセンスでは 使いにくいと言う指摘をうけ、前職の同僚と協議をしながらBSD/LGPL/GPL のトリプルライセンスにしたという経緯があります。結果としてこの変更は うまく

  • きまぐれ日記: Zinnia: 機械学習ベースのポータブルなオンライン手書き文字認識エンジン

    オンライン手書き文字認識エンジンZinniaを公開しました。 http://zinnia.sourceforge.net/index-ja.html Zinniaは機械学習アルゴリズム SVM を用いたポータブルで汎用的な オンライン手書き文字認識エンジンです。Zinniaは組み込みの容易さと汎用性を高めるために、 文字のレンダリング機能は持っていません。Zinniaは文字のストローク情報を座標の連続として受け取り、 確からしい順にスコア付きでN文字の認識結果を返すだけに機能を限定しています。 また、認識エンジンは完全に機械学習ベースであるために、文字のみならずユーザの任意のマウス・ペンストロークに対して任意の文字列をマッピングするような認識エンジンを小コスト作成することができます。 2年前に、Ajax手書き文字認識と言うものを作ったのですが、その認識エンジンをスクラッチからポータブルでつ

  • きまぐれ日記: Mac OS X Leopard に「標準で」インストールされている MeCabを使ってみる

    Mac OS X Leopard の Spotlight に MeCab が使われているらしいという情報を聞いたので、実際に深追いしてみました。 いとも簡単に /usr/lib/libmecab* , /usr/include/mecab.h と /usr/lib/mecab/dic/apple/{ja,tc,sc} というディレクトリを発見しました。ts, sc は traditional/simplified Chinese (繁体字/簡体字) の略で、中国語の辞書だと推察されます。辞書のディレクトリはさらに dic/apple/ja/{LE,BE} という風に、エンディアンごとに分かれています。MeCabの辞書はエンディアン依存なので、こうするしかないのかもしれません。 さて、この辞書を使って、UTF8の文字列を流し込んでみたのですが、うまいこと解析してくれません。MeCabのバイナ

  • きまぐれ日記: TinySegmenter: Javascriptだけで分かち書き

    最近新幹線に乗る機会が多々あったので、暇つぶしに Javascriptだけで(Ajax等は使わずに) 分かち書きが出来るソフトウェアを作ってみました。実用性は謎です。 http://chasen.org/~taku/software/TinySegmenter/ たった 25kbyte ですが、新聞記事でしたら、95%程度の精度で分かち書きができます。 辞書は全く持たず、文字単位で分割するか分割しないかを当てる機械学習器を 作って分割しています。 モデルをコンパクトにするために、L1ノルム正則化の トリックを使っているのですが、想像以上にコンパクトになって、しかも そこそこうまくいっていて、刺激的です。

  • きまぐれ日記: AjaxIMEのHTTPサーバは pre-pthread

    C++と Pthreads でミニマルなHTTPサーバを書く にて、ネットワークサーバのさまざまな設計・実装方針がまとめられています。 1. クライアントごとに fork 2. 事前に fork - 各プロセスで accept 3. 事前に fork - ファイルロックで accept を保護 4. 事前に fork - Mutex ロックで accept を保護 (PTHREAD_PROCESS_SHARED) 5. 事前に fork - ソケットディスクリプタパッシング 6. クライアントごとにスレッド生成 7. 事前にスレッド生成 - Mutex ロックで accept を保護 8. 事前にスレッド生成 - メインスレッドで accept AjaxIMEの変換エンジンは自作サーバで運用しているのですが、初期の実装は prefork、 すなわち4番の実装でした。 その後、fork の部

  • きまぐれ日記: Ajax で隠れた技術を表舞台に出す

    Ajax を知ったのは、今年の2~3月ぐらいだったと思います。この技術に触れたとき、「これで一般には表に出しにくい技術をデモれるかも。。。」と感じたのを覚えています。ほどなくして Ajax KIWI, Ajax IME, Ajax Migemo を作ってそれなりの反響が得られました。 私自身、Webアプリケーション開発の経験はほとんどありません。最近の Web 開発インフラの進歩の速さにはいつも驚かされています。一方、私は急激な進歩とは程遠く、表舞台には出てこない機械学習とか言語処理のツールをふだん hack しています。私がいる分野は、パフォーマンス(実行速度)が結構重要です。 いまさらながら C++ を使って実装していますし、パフォーマンス向上のためのトリビアをそれなりに蓄積しています。ほかにも高速な辞書マッチや文字列検索処理などのコードも書き溜めていました。 今思えばこれがかえって良

  • Ajax を使った手書き文字認識

    Ajax を 使った手書き文字認識です。下のキャンバスにマウスで文字を描いてみてください。 デモ

  • Ajax IME: Web-based Japanese Input Method

    Webベースの日本語入力サービスです。海外からでもブラウザさえあれば日語を入力す ることができます。 特別なソフトは必要ありません。 使い方 お使いのコンピュータの日本語入力を切りかえて直接入力にします。 Alt-o (Ctrl-9) で Ajax IMEモードに変更します。(ボタンで切り替えるかえることもできます) 適当な文をローマ字で入力します。 spaceを押して漢字に変換します。続けて押すことで候補選択を行います。 returnを押す、もしくは次の入力を開始することで入力を確定します。 F9で強制的にカタカナに、F8で強制的にアルファベットに変換します。 再度 Alt-o (Ctrl-9)で直接入力に戻ります 海外旅行先や留学先, 海外のネットカフェなど日本語入力環境が 無いパソコンからご使用ください。 Firefox と Internet Explorer で動作確認をしていま

  • 1