タグ

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

  • きまぐれ日記: 「読めてしまう」コピペがなぜ読めてしまうのか

    http://www.asks.jp/users/hiro/59059.html http://www.itmedia.co.jp/news/articles/0905/08/news021.html 最初読んだとき、違和感なく読めてしまったのですが、よくよく見てみると、そんなトリックがあったのですね。 さて、この「読めてしまう」がなぜよめてしまうのでしょうか? 人間の言語モデルの単語パープレキシティは、約100ぐらいであると言われています。どういうことかというと、 人間が文章を読んでいるときに、次の単語を過去の文章から推測するのは 1/100 程度の 確率で正解するということです。 件のコピペですが、最初の文字は変わらないので、その正解率は平仮名の数(52)倍になります。 すなわち、52/100 =~ 0.5 実際には、最後の文字も変わらないし、 単語の長さが変わらないというもの、大きな

  • きまぐれ日記: 肥大化して破綻するオープンソースプロジェクト

    一時期オープンソースがはやった時期がありましたが、今はどうなんでしょう? 当時はオープンソースでバラ色の人生みたく過大評価されていたような記憶があります。 過大評価は言い過ぎですが、いまこうやってブログをかけるのもオープンソースの おかげであることは間違いありません。 しかし、すべてのオープンソースプロジェクトが成功したかというと、簡単に YES といえないような気がします。こういう話を某エンジニアとしたら、彼も 同じような視点(というかその方の場合は実経験かもしれませんが)を持ってて、 なんか話が盛り上がってしまいました。 その問題点とは肥大化です。オープンソースは誰でもプロジェクトに参加できるのですが、 ディベロッパーの技術もピンキリなため、時にはどーでもいい拡張がコミットされてしまう ことがあります。その最たるものが周辺技術との統合。ホニャララメタデータをMySQLに保存, ○○バッ

    rhosoi
    rhosoi 2008/05/24
    「安易な拡張が入らないようにするには、ガチガチにAPIを用意して、他の世界とできるだけ疎結合になるようなè
  • TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア

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

    rhosoi
    rhosoi 2008/02/08
    すっげー!すっげーのにさっぱり使い道が思い浮かばない俺はヤバイ!?
  • きまぐれ日記: Yahoo!の形態素解析をMeCabで無理やり再現してみる

    MeCabで形態素解析器を作りたい場合は以下の二つの言語リソースが必要です。 1. 辞書 (単語と品詞のペアの集合) 2. 入力文と、それに対応する正解出力ペア(正解データ) 現在公開している mecab-ipadic は、ipadicとRWCPコーパスという正解データを使っています。 ここから分かるとおり、少なくともMeCabを使う場合は、コスト値を丹念にチューニング するといった職人芸は要りません。形態素解析への入力文とそれに対応する(理想)出力 があればコスト値を機械学習的なアプローチで構築することができます。 さらに、正解データを人手で作る必要は必ずしもありません。 すなわち、Yahoo!形態素解析器の出力結果を「擬似正解」とみなして MeCabの学習プログラムを走らせれば、Yahoo!の出力を高い精度で再現できる MeCab用辞書を作成することが原理的に可能です。 ふだんはあま

    rhosoi
    rhosoi 2007/06/24
    (しかし、ちょっと使ってみるとすぐライセンス問題が謎になりますなWeb2.0ってヤツは)
  • きまぐれ日記: MECAPIを182倍高速にしてみた

    MeCabのWebService, MECAPI を182倍高速にして<みました。(2.68qps → 488qps) http://api.chasen.org/mecapi/ - Perlによる実装はやめて、完全に C++ で書き直し - CGI ではなくて、C++ による自作 HTTPServer - mecab のプロセスを prefork することで永続化 たつをさんのオリジナルMECAPIの機能はまだ完全に実装しておらず、基的な機能しか提供しておりませんが、随時サポートしていきたいと思います。 補足: 実際はネットワークのレイテンシーがあるので、外部ホストから計測すると体感としては、10倍程度の 高速化だと思います。 オリジナルMECAPI: Server Software: Apache/2.0.53 Server Hostname: chasen.org Server P

    rhosoi
    rhosoi 2007/05/02
    C++でサーバ書いてpreforkしとくとこんなにも違いがでるのねぇ〜
  • Ajax IME ブックマークレット

    Ajax IME ブックマークレットを作ってみました.右クリックしてブックマークに登録してみてください. Ajax IME ブックマークにアクセスするだけで現在表示しているページにある textarea と inputbox が Ajax IME 経由で入力可能になるはずです.成功すれば2秒ほどで textarea の色が変わって Ajax IME 入力状態になります.Alt-O で元に戻ります. たいていはうまくいくようですが,まだまだ完璧ではなくて CSS がらみから入力のカーソル位置が激しくずれたり,javascript のイベントがフックできなくて変化なしといったことが頻発します.気長に修正していくつもりですが,みなさんのフィードバックお待ちしております. Mixi の日記投稿や Movable Type の投稿も若干癖がありますが問題なかったです.海外からの日記更新がかなり楽にな

    rhosoi
    rhosoi 2006/10/17
    す、すごすぎ〜!
  • きまぐれ日記: MeCab: 制約つき解析を実装してみた

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

    rhosoi
    rhosoi 2006/03/20
    「部分的に正解がわかっているときに、それを制約として解析する機能」
  • きまぐれ日記: MeCab 0.90 だけをつかって Auto Link

    rhosoi
    rhosoi 2006/01/20
    コストが最小のものを選ぶ。なるほど
  • きまぐれ日記: Bloom filter

    最近 Bloom filter というアルゴリズムを知りました。1970年に考案された古いアルゴリズムです。 http://en.wikipedia.org/wiki/Bloom_filter http://www.cs.wisc.edu/~cao/papers/summary-cache/node8.html#SECTION00053000000000000000 http://www.perl.com/pub/a/2004/04/08/bloom_filters.html Bloom filter は、キー(通常は文字列)の存在のみをコンパクトなデータ構造で高速に判定するためのアルゴリズムです。キーの存在のチェックでしたら通常の hash でいいのですが、コンパクトになるとは限りません。 Bloom filter は "false positive"、つまり「キーが存在していないのに存

    rhosoi
    rhosoi 2006/01/07
    「キーの存在のみをコンパクトなデータ構造で高速に判定するためのアルゴリズム」へぇ〜
  • きまぐれ日記: キーワード抽出: tf-idf の意味づけ

    単語の重み付けの古典的な方法に tf-idf があります。文書中の各単語の tf-idf 値計算し、値でソートすると、その文書に特徴的な単語リストを得ることができます。 http://nais.to/~yto/clog/2005-10-12-1.html tf-idf は、単なるヒューリスティックスだと考えられていましたが、最近言語モデルに基づく情報検索手法がさかんに研究されるようになり、tf*idf の解釈が明らかになってきました。言語モデルに基づく手法は、ヒューリスティックスばりばりの手法と同性能にもかかわらず、文書のランキングに理論的で合理的な説明を与えることができます。 情報検索は、クエリ q に対し、もっとも適合する文書 d_opt を求めるタスクです。つまり、q が与えられたとき、文書 d が出現する確率 p(d|q) の最大化問題と解釈できます。 d_opt = argmax

    rhosoi
    rhosoi 2005/11/07
    TF-IDFの解釈
  • きまぐれ日記: タグとマルチラベル問題と機械学習

    ネット上のサービスを見ていると、メールなりWebページをある一意のカテゴリに分類するという整理法から、タグ(ラベル)をつけるという整理法に変わってきているようです。 代表的な例は Gmail。フォルダという概念はなくメールにラベルを付与していきます。私が良く使う方法は、「リマインダー」のラベル(メールの重要さという観点)と「内容」のラベルです。二つはそれぞれ独立した分類方法ですが、フォルダだと同居できません。他の例だと「はてなブックマーク」があります。ユーザが任意のタグを付与することができます。 機械学習の言葉を使えば、従来のフォルダは「シングルラベル」の分類問題、後者のタグは「マルチラベル」分類問題となります。文字どおり、前者はインスタンスに対し1つのラベルのみを付与する問題、後者は複数のラベルを付与する問題です。 さて、機械学習の分野でマルチラベル問題はどう進展してるのでしょうか?実際

  • きまぐれ日記: Ajax を使った手書き文字認識

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

    rhosoi
    rhosoi 2005/09/21
    学習データをサーバ側でとれるってのがポイントだ。みんなで使えば賢くなるわけで
  • Ajax を使った手書き文字認識

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

    rhosoi
    rhosoi 2005/09/20
    サーバ側はけっこう重そうな
  • http://chasen.org/~taku/blog/archives/2005/09/_swig_perlrubyp.html

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

    rhosoi
    rhosoi 2005/09/07
    TRIEの使い方
  • MeCab: Yet Another Part-of-Speech and MorphologicalAnalyzer

    MeCab に至るまでの形態素解析器開発の歴史等はこちらをご覧ください メーリングリスト 一般ユーザ向けメーリングリスト 開発者向けメーリングリスト 新着情報 2008-02-03 MeCab 0.97 マルチスレッド環境で辞書を開くときの排他制御がうまくいっていなかったバグの修正 Windows版でインストール時に辞書の文字コードを指定できるようになった 一部のコンパイラで正しくコンパイルできなかった問題の修正 部分解析モードを変更するAPI の追加 (Tagger::set_partial()) ラティスの生成レベルを変更するAPI の追加 (Tagger::set_lattice_level()) 温度パラメータを変更するAPIの追加 (Tagger::set_theta()) 全候補出力モードを変更するAPIの追加 (Tagger::set_all_morphs()) 2007-

  • 1