2011-01-01から1年間の記事一覧

多値(クラス)分類

多値分類とは 2値分類(Aか否か)はクラス数が2の場合の分類 多値分類とはクラス数が3以上の場合の分類 多値分類の方法 one-versus-rest法 nクラスの場合は、n個の分離平面を求め、各クラスがそのクラスに属するかどうか もし、1事例が1クラスにしか属すること…

コーパス・言語データ

はじめに 言語処理するのに基となるデータ(言語データ、コーパス)についてまとめてみる。 データ・テキストマイニングなどに。必要に応じてダウンロードして試してみたい。 コーパス(corpus)とは 自然言語処理の研究に用いるために、自然言語の文章(用例)を…

言語モデルの評価尺度

エントロピー、パープレキシティ 言語Lにおいて、単語列の生起確率がのとき、1単語あたりのエントロピーは、 になる。 ある単語について、平均して個の単語が次につながりうることを表す。 このはパープレキシティと呼ばれる。なので、パープレキシティを見…

XORshift乱数

XORshiftとは XORshiftは、random number generator(乱数生成器, RNG)の一つ。周期が十分長く、演算も簡単なので生成速度も速いのが特徴。 コード wikipediaや論文に載っているのは、周期が2^128-1のもの。 C/C++では、「^」はビットXOR、「>>」はビットシフ…

Perceptronの学習過程のプロット

はじめに SGDによるパーセプトロンの学習がどんな感じに収束していくかを見たかったので確認用にflashで作ってみた。 いじっている限りではちゃんと収束してくれた。 プロット結果 ぱーせぷとろんのがくしゅう - wonderfl build flash online

全文検索エンジンメモ

検索の種類 逐次検索(grep)型 すべてのドキュメントを順次探していく方法 ドキュメントの増加により検索速度が低下する 普通に探索、KMP法、BM法など 全部見るので、検索漏れがない 並列化しやすい Suffix型 事前に全てのドキュメントを検索可能な構造に変換…

言語モデル

はじめに 自然言語処理だけでなく、音声認識、スペルチェック、情報検索など多くの分野で使われている「(確率的)言語モデル」について、少しまとめてみる。 言語モデル 「今日/は/晴れ」や「明日/は/雨」などの文はよく使われるのに対し、「晴れ/は/今日」や…

N-gram

はじめに 文書の数学的表現をするためによく用いられるものに「N-gram」というものがある。 最近ちょっと混乱ので、ちゃんとまとめてみる。 N-gramとは? 「文章などで隣り合うn個のこと」文書を数学的に扱うために、普通に考え付くのが「その単語がでたかど…

バイアス項

バイアス項とは 識別関数での切片bのこと。 wは分離平面の方向ベクトルで、としてベクトルにバイアスをいれ、bをw_0として扱うことで、として扱ったりする。 バイアス項は、固定されたオフセット量を許容するためのもの。 イメージ的には、バイアス項を含ま…

RBFカーネルと線形カーネルで文書分類精度に差が出たわけ

はじめに 1か月ぐらい前にやったセリフ分類で、 libsvmを使って線形カーネルとRBFカーネルの精度に差がでてた(そもそも成功はしてないけど)。 結論からいうと、パラメータをいじることで改善するけど、そこら辺の言及されているものを教えてもらったのでメモ…

TF-IDF

TF-IDFについて いくつかの文書が与えられたとき、文書中の単語の重みを決める手法の一つ。 TF(Term Frequency, 文書中の単語出現頻度) 「よくでてくる単語はその文書の主題を表しやすい」 ある文書dに単語tがでてきた個数をtf(t,d)と定める tfの定義として…

シャッフルアルゴリズム

はじめに 配列が与えられたとき、それをバラバラに並び替えたい。 C++のSTLのrandom_shuffle関数を実現したい。 Fisher-Yates shuffle http://en.wikipedia.org/wiki/Fisher-Yates_shuffle一番使われていると思われるシャッフルアルゴリズム。 n個の配列のう…

ナイーブベイズ

はじめに 「言語処理のための機械学習入門」の第4章のナイーブベイズを勉強のため実装してみた。 多変数ベルヌーイモデルについて、最尤推定のものと、最大事後確率推定のものをc++で動かしてみた。 ナイーブベイズ分類器とは? 古典的な分類器 事例dがどの…

黄金分割探索

はじめに 黄金分割探索というものを見つけたので、まとめてみる。 黄金分割探索(Golden Section Search) ある連続な1次元関数f(x)の最小値(または最大値)を求めたい。区間[a,b]を定め、その内分点を使って区間を狭めていくことで最適値を求める。(区間[a,b]…

Perceptronメモ

線形識別モデル 識別=入力ベクトルがどのクラスに属するか 線形識別=どのクラスに属するかを表す境界が「超平面」によって決まる 各入力ベクトルから直接クラスを推定する識別関数を作成 この識別関数に入力ベクトルをいれることで、どのクラスに属するか…

自然言語処理タスクまとめ

はじめに 「自然言語処理」研究にはどういう目標やタスクがあるかについて簡単に調べてみたので、まとめてみる。 タスク 語義曖昧性解消 単語には複数の意味があったりする。wikipediaでは「やる」の例を出しているが、「誰かに物をあげる」のか「宿題をする…

固有表現抽出メモ

固有表現抽出とは? 自然言語処理の目標の1つに「自然言語理解」というのがある →コンピュータに文章理解力を持たせたい! どうやって"理解できた"を確かめるの? 質問応答や自動要約をさせることで確かめる 自然言語理解で重要なことは「テキストの重要なポ…

共通部分文字列

問題 情報オリンピックJOI2008本選 AOJ05282つの文字列が与えられたとき、両方の文字列に含まれる文字列のうち最も長いものの長さを返す。 考え方 最も単純な方法は、片方の部分文字列を作ってそれがもう片方に含まれるかを探す方法。 しかし、これではO(n^4…

K-meansによるクラスタリング

PRML第9章にK-meansアルゴリズムがあって、Old Faithful間欠泉データを2つのクラスタに分解した図が載ってたので、自分でも書いてやってみた。 準備 ■Old Faithful間欠泉データ http://research.microsoft.com/en-us/um/people/cmbishop/prml/index.htm 上の…

g++で日本語を使う in Windows7+Cygwin

日本語の取り扱いって面倒くさいことこの上ないという印象で、今まではpython使えばいいやって思ってたのですが、やっぱり使い慣れたc++でも使えるようにしたいと思い、ちょっと調べてみた。 環境 OS : Windows 7 Professional 64bit cygwin上の設定 $ local…

「耳をすませば」の月島雫のセリフは分類できるか?

はじめに 最近、自然言語処理とかちゃんと勉強始めたので、まずはやってみようということで文書分類をやってみた。 本当だったらもっと一般的な題材(ニュースカテゴリ分類やスパムフィルタとか)からやるべきだろうけど、前々から気になってた「映画のキャラ…

備忘録

いろいろ残していきたいと思います。基本的に雑記。