タグ

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

  • きまぐれ日記: 手書き文字認識エンジン Zinnia on iPhone

    手書き文字認識エンジンZinniaを先日公開しました。全くデモがなくていまいちどういうライブラリか分かりにくかったのですが、Youtube 上に Zinnia を iPhone 上で動作させたというデモ動画を見つけました。すばらしい。 http://www.youtube.com/watch?v=i88uaIu3Khk ほかにもいくつかフィードバック等を見つけました。 Mathieu Blondel さんは、zinnia と tomoe, そして自身が開発なさっている hmm ベースの手書き文字認識エンジンを客観的に比較なさっています。 私自身こういう比較を 行なったことなかったのですが、tomoe に比べて、速度面でも精度面でもsignificantに上回っているようです。特に速度は 10倍ぐらいtomoenに比べて高速なようです。 他にも、tomoe体の認識エンジンに zinniaを

    facet
    facet 2008/10/10
  • TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア

    TinySegmenterはJavascriptだけ書かれた極めてコンパクトな日語分かち書きソフトウェアです。 わずか25kバイトのソースコードで、日語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。 Yahoo!形態素解析のように サーバーサイドで解析するのではなく、全てクライアントサイドで解析を行うため、セキュリティの 観点から見ても安全です。分かち書きの単位はMeCab + ipadicと互換性があります。 デモ 日語の文章を入力し、解析ボタンをクリックしてください。 ダウンロード TinySegmenterはフリーソフトウェアです. 修正BSDライセンスに従ってソフトウェアを使用,再配布することができます. Download TinySegmenter version 0.2 使い方 <script type="text/javascript" src

    facet
    facet 2008/02/11
    学習データにRWCPコーパス、L1ノルム正則化、Boosting、AdaBoost
  • きまぐれ日記: IMEにおける「文節」とは何ぞや

    とあるIME開発者と仮名漢字変換(IME)における「文節」についてディスカッションする 機会がありました。今まであまり真剣に考えたことなかったのですが、 この「IME文節」、いろんな意味で興味深いということを改めて認識しました。 学校文法や自然言語処理におけるいわゆる「文節」とは 統語的な性質からほぼ一意に決定できる単位です。 簡単には 自立語連続+付属語 と言えるでしょう。 たとえば、 「東京特許許可局で工藤は講演をした。」 は 東京特許許可局で|工藤は|講演した。 の3文節になります。小学校のときに「~ね」を挿入できる単位として 習ったかと思います。 しかし、IMEで上記の文を変換してみると。 東京|特許|許可局で|工藤は|講演した|。 と分割されます。(WinXP) あきらかにNLP業界の文節と単位が異なるようです。 このIMEが使っている分割の単位を「IME文節」と呼ぶことにしまし

    facet
    facet 2008/02/08
    たしかに。何ぞや。
  • きまぐれ日記: 情報抽出アルゴリズムEspresso の謎、私の勘違いでした。

    昨日のエントリーは私の完全な勘違いでした。大学数学やりなおします。orz 行列表現にはまちがいはないのですが、あの形はマルコフ連鎖そのものなので、 x_instance = A * x_instance の解は、x_instance = A^{n} * x_instance0 なので、x_instance0 の初期値 に依存します。A^{n} が収束し B になるとすれば、x_instance = B * x_instance0 となります。 A^{n} が収束することが条件ですが、相互情報量の最大値で正規化されているので、たぶん収束するでしょう。 しかし、Espresso のおもしろいところは, B が求まってしまえば、どんな初期値でもただ1回の行列のかけ算で 最終的な答えがでてしまうところです。 B は、全パターンと全インスタンスの類似度から生成される行列で、信頼度とは無関係です。相互

  • きまぐれ日記: Javascript でキャレットの位置を取得できる?

    Ajax IME は Javascript を悪用しつつ強引にインラインかな漢字変換を実現しています. 簡単そうに見えて以外とややこしいのが,変換候補の表示. textarea のキャレット(カーソル) のピクセル単位での位置をなんとかして取得してその位置に変換候補を 出す必要があります. ありがちな google suggest ような補完インタフェイスだと inputbox の真下に出せばいいので位置は完全にわかるのですが,textarea は簡単ではありません. 調べた限り,どうやら標準ではキャレットの位置を取得できないそうです. ただし IE だと以下の方法でピクセル単位での位置がわかります. var caretPos = document.selection.createRange(); y = (caretPos.offsetTop + document.documentEle

    facet
    facet 2006/09/25
    ホントだ。かぶってるかぶってるw | テキストエリア内の話。→brazilさんの http://d.hatena.ne.jp//brazil/20060917/1158485060
  • きまぐれ日記: ajax IME パワーアップ

    Sumibiが wikipedia を使ってモデル/辞書を更新してるようなので、負けじと Ajax IME でも Wikipedia から自動単語抽出し、辞書にドカッっと単語登録してみました。 まず、CRF ベースの分かち書きツール(BIOモデル)を使い、周辺確率の高い単語候補を全日wikipedia から収集。期待頻度が 0.9以下のものは無視し、あと雑多なフィルタリングの後、約 28万の単語候補を抽出。周辺確率から HMM のユニグラム確率を計算して (単純に negative log * 400) 辞書に登録。品詞の推定は現状では難しいので、すべての単語は「名詞、サ変」だと仮定しています。 単語(未知語)抽出は、それなりにうまくいっているようです。カタカナ語はほぼ網羅的に収集できました。「電車男」のような漢字だけの語もそれなりに取れています。 現在の Ajax IME は、語彙

    facet
    facet 2006/08/01
    Sumibi対抗でWikipediaから語彙収集。28万語増強! CRF, HMM, ...
  • きまぐれ日記: やっぱり SWIG が好き

    http://d.hatena.ne.jp/lestrrat/20060713#1152777605 なぜ私がSWIGを勧めるのかというと, エンジニアが身につける道具としてSWIGの投資効果が 高いからです. SWIGは, バインディングを「キッチリ」作る道具というよりはむしろ今ある問題を「サクっと」片づけるのに向いています. In-house の仕事や personal use もいいでしょう. C/C++ とスクリプト言語, 両方使っている方組織は, この機会にSWIGを導入してみるのはいかがでしょうか. 私だけかもしれませんが, スクリプト言語とC/C++ にはもやもやとした誤解を感じます - バインディングの作成は, 言語依存で複雑なフレームワークの修得が不可避 - C/C++ はある程度触れるけど, バインディングって敷居高そう - とりあえず誰かがバインディングを作っていない

  • きまぐれ日記: MeCab: 制約つき解析を実装してみた

    実装しようと思って先延ばしにしていた制約付き解析を実装してみました。制約付き解析とは部分解析とも呼ばれ、部分的に正解がわかっているときに、それを制約として解析する機能のことを言います。これが実現できると - 絶対に間違ってはいけない定型部分を制約として解析 - 形態素解析のマルコフ的なモデルでは解消できないあいまい性を高次の処理で解消しフィードバック - 固有表現抽出の前処理 - 人間とのインタラクション - かな漢字変換への応用 (ユーザの修正を反映して再解析) などといったことができます。 さて、ChaSen 2.4.0 ではすでに実装されています。 MeCab もほぼそれを踏襲しました。 基的には、MeCab のデフォルトの出力結果をいじって制約を記述するという格好になります。 - 品詞の部分に * が指定されると、その単語で切り出し、品詞は適当に最適なものを付与します。 にわ *

    facet
    facet 2006/03/19
  • きまぐれ日記: Autolink: 前方最長一致ではなく最長キーワード優先一致を実現する

    Hatena のキーワード置換アルゴリズムがTRIE ベースの手法に変更になったようです。以前に AC法でやる方法の記事を書いたのですが、それと似たことをやってるのでしょうか。 AC法のやり方は単純で、前方から最長一致でキーワードを見つけていきます。これまでは長いキーワードから順番に見つけていく方法(最長キーワード優先一致)だったそうですが、前方から見つけていく方法だと短いキーワードが優先される場合があります。 http://d.hatena.ne.jp/ita/20060119/p1 http://d.hatena.ne.jp/hatenadiary/20060119/1137667217 文:あいうえおかきくけこさしすせそ KW1 いう KW2 うえおかき KW3 かきく KW4 きくけこさし という文でKW1-KW4のキーワードがマッチする場合、新しくなった方法では「いう」と「かき

    facet
    facet 2006/01/22
    動的計画法、重み→コスト//Why?
  • きまぐれ日記: colinux から VMware Player に乗り換え

    一年以上 windows 上で colinux を使っていてこれといった不自由はなかったのですが、vmware player に乗り換えようと思い立ちました。colinux の環境のほとんどをある方に作ってもらって(カスタマイズされた linux kernel, xfs などなど)アップグレードの煩雑さや可搬性の問題があったからです。vmware player の利点は - ディスクイメージさえコピーすれば、Linux でも Windows でも同じようにゲストOS を動かせてポータブル - 普通のカーネルが使える - Linux 以外の OS も動かせる (Solaris 10 など) - 音が鳴る (あまり重要ではないけど) - USB デバイスが使える qemu を使って vmware 用のディスクイメージを作る方法がいろんなところで紹介されています。その通りにやるとあっけなくインス

  • きまぐれ日記: MeCab 0.90 だけをつかって Auto Link

  • http://chasen.org/~taku/blog/archives/2005/10/popularity_qual.html

    facet
    facet 2005/10/12
    「popularity と randomness」「precison と recall」
  • きまぐれ日記: Ajax で隠れた技術を表舞台に出す

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

    facet
    facet 2005/10/06
  • http://chasen.org/~taku/blog/archives/2005/09/post_813.html

    facet
    facet 2005/09/25
    データ二万件。
  • きまぐれ日記: Ajax を使った手書き文字認識

    Ajax で手書き文字認識を作ってみました。 http://chasen.org/~taku/software/ajax/hwr/ Javascript で描画処理を行い、非同期に座標情報をサーバに送ります。サーバでは文字認識を行い、尤もらしい結果を返します。 前回の Ajax IME と違い、今回はクライアントサイドではなくサーバーサイドの認識エンジンの開発をがんばってみました。画像処理は専門外で経験がありません。逆に言えば、チャレンジングな問題だったし、精度が向上していく様を見てるとわくわくしました。 認識には、機械学習アルゴリズムのひとつである SVM を用いています。学習データとして、オープンソースの手書き文字認識エンジンの Tomoe のデータを使っています。完全に機械学習ベースなので、適当に入力して正解を提示することを繰り返せば、精度が上がっていくと思います。 まだまだ、精度が

    facet
    facet 2005/09/21
  • Ajax を使った手書き文字認識

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

    facet
    facet 2005/09/20
  • きまぐれ日記: はてなキーワードを高速に付与

    facet
    facet 2005/09/07
  • http://chasen.org/~taku/blog/archives/2005/08/ajax_ime_4.html

  • きまぐれ日記: Ajax IME

    以前に作った Ajax IME を拡張してみました。通常のIMEと同様に候補選択ができます。blog の更新やメールを書いたりといった用途にはほぼ問題ないレベルだと思います。 http://chasen.org/~taku/software/ajax/fullime/ さて、JavaScript についていろいろ勉強になりました。クロージャーはそのひとつです。イベントハンドリングにクロージャーを使っているため、グローバル変数は一切使わなくて済みました。さらにオブジェクト指向で書かれているため、同一文書に複数の textarea があっても複数のIMEインスタンスを持つことができます。 ただ、textarea の操作はバッドノウハウの塊です。キャレットの位置を取得する 一般的な方法はなく、ブラウザ依存です。Firefox では、キャレットの位置をピクセル単位で取得できないようです。固定長フォ

    facet
    facet 2005/08/10
    ネタ元。//って本人様宅ですが。
  • 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 で動作確認をしていま

    facet
    facet 2005/08/10
    前回の改良版。今回のは凄い。Fullの名に相応しい。