タグ

ブックマーク / tkng.hatenablog.com (6)

  • 単語分割器Micterを公開しました - 射撃しつつ前転 改

    しばらく日記書いてなかったら、また文体忘れて敬体で書いちゃったよ…。でも常体に書き換えるのもめんどくさいのでこのままうpします。 単語分割器を作ったので、githubで公開しました。→http://github.com/tkng/micter 名前は単純にMIC segmenTERでmicterにしました。作ってから気づいたのですが、segmentという単語のうち、最後のtしか名前に入っていません。今更名前を変えるのも面倒なのでこのままにしておきますが、微妙に失敗した感がありますね…。 形態素解析器としては既にmecabやらchasenやらjumanやらがありますし、最近では単語分割&読み推定のkyteaもあります。そんなにいろいろある中でまた似たようなツールを書いたのは、自分のパッケージに取りこめる小さな単語分割器が欲しかったのが理由です。文章を単語に分割する機能だけあればいいんだけど、

    単語分割器Micterを公開しました - 射撃しつつ前転 改
    rin1024
    rin1024 2010/06/30
    おおーすごい
  • 京都テキスト解析ツールキットを使ってみた - 射撃しつつ前転 改

    KyTea(京都テキスト解析ツールキット)は京大のGraham Neubigさんが中心となって開発している単語分割&発音推定ツールである。 私はかな漢字変換用の学習データを作るのにこれまではmecabを使っていたのだが、mecab-ipadicのデータには、そもそも読み推定に力が入ってない、という問題があった。形態素解析は文章を単語に区切ることと品詞を推定する事が主目的な感じなのでそこを期待するのはそもそも筋違いなのだが。 かといって自分で作ろうにも、こういうものは学習用コーパスが必要なので、コードだけで簡単にどうにかできる問題ではない。コーパス作りはとても手間のかかる作業なので、気軽に週末に作れるようなものでもない。というわけで、根的な解決は棚上げして、これまではmecabの解析結果を後付けで適当に確率的に揺らしてみたりとかしながら使ってきたのである。 そこに新しくKyTeaが現れた。

    京都テキスト解析ツールキットを使ってみた - 射撃しつつ前転 改
  • Language-Independent Set Expansion of Named Entities using the Web - 射撃しつつ前転 改

    Language-Independent Set Expansion of Named Entities using the Web (R. C. Wang and W. W. Cohen, 2007)を読んだ。例のSEAL(Google SetsとかBayesian Setsに似た奴)のアルゴリズムについて書いた論文だ。ちゃんと固有表現抽出までやってるとしか思えないとか書いてたが、実際には全然違った。固有表現抽出どころか形態素解析すらしてない。 SEALがやってくれることはGoogle Setsなどと同じだ。いくつか単語を与えると、その単語と同じグループに含まれるような単語を返してくれる。この論文ではそのようなグループの例として、メジャーリーグの球団名とか、時計のブランド名とか、そういったものを使って実験している。 アルゴリズムは以下の3ステップによって構成される。 与えられた単語を用い

    Language-Independent Set Expansion of Named Entities using the Web - 射撃しつつ前転 改
  • いろいろな言語用のSinatra的フレームワークまとめ - 射撃しつつ前転 改

    Sinatraはよくできたウェブアプリ開発用フレームワークだと思う。前にも書いたが、URLから呼び出されるメソッドを決定するところがよくできているし、依存するライブラリもRackだけなので使いやすい。beforeフィルタの存在やstatus, content_typeといったメソッドなど、細かいところまで開発がやりやすいように作られているように感じる。 しかし、SinatraはRubyで書かれているので、他の言語では使えない。趣味で書いているならRubyを使えばいい話なのだが、仕事だとそうもいかないこともあるだろう。 そこで、Sinatraに似た感じで使えそうなフレームワークを探してみた。 ※コメント欄などで教えていただいたものをいくつか追加しました。感謝! sinatra-on-perl perl用 http://code.google.com/p/sinatra/ 名前の通り、かなりS

    いろいろな言語用のSinatra的フレームワークまとめ - 射撃しつつ前転 改
  • Sinatraで自作before_filterを使った場合と使わない場合でコードがどれぐらい変わるか? - 射撃しつつ前転 改

    もはや誰も望んでいなさそうなSinatraの細かいネタですがねちねちと続けます。 今回は、前回作った自作のbefore_filterを使った場合と、使わずに直接beforeメソッドを使った場合とで、コードがどう変わるか、簡単に比較してみる。 まずは使わない場合から。 before do if request.path_info =~ /^\/admin\// if not login_as_admin? throw :halt, "required admin privilege." end end end まぁこんなもんかなぁという感じ。個人的には/^\/admin\//という正規表現はあまり読みやすいとは思えないけど、他の部分は特に文句はない。request.path_infoにパス情報が入っているので、それを正規表現でチェックして、フィルタ対象のURLである場合にはさらにadmin権

    Sinatraで自作before_filterを使った場合と使わない場合でコードがどれぐらい変わるか? - 射撃しつつ前転 改
  • Class N-gramモデルとHMM、もしくはどこが隠れてるねん - 射撃しつつ前転 改

    Class N-gramモデルというのは、各単語はあるクラスに所属するものとし、クラスの連なりによって次の単語の確率分布を予測する言語モデルである。各単語がどのクラスに所属するかは、コーパスの対数尤度を最大化するように決定される。 このモデルはHMMと非常に似ている。HMMとの違いは、HMMでは単語があるクラスへと所属する確率が存在するのに対し、Class N-gramモデルでは単語はあるクラスへと確実に所属するところだ。つまり、クラスAに所属する単語は、クラスBやCには絶対に所属しない。(HMMだと、クラスAへの所属確率0.8, クラスBへの所属確率0.1、みたいになる。)比べてみるとつまり、HMMの方がちょっと柔らかい印象を受ける。 今、ちょっと嘘を書いた。もしかするとClass N-gramモデルという言葉で、各単語のクラスへの所属確率をイメージする人もいるかもしれない。ただ、この日

    Class N-gramモデルとHMM、もしくはどこが隠れてるねん - 射撃しつつ前転 改
    rin1024
    rin1024 2009/06/04
  • 1