盛大な独り言日記・自分用メモ2010.11.17~
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
インスタンス:クラスの中の、実際の値としてのデータ
例)「名前、身長、体重」というクラスがあるとすれば、そのインスタンスは「田中、175、65」
引数:関数に渡す方
ポインタ:変数のアドレスを記憶する変数。
int * point →int:変数の型 *:次の変数はポインタですよ!という意味 point:変数名
だからポインタ名はpoint単体であって、*pointではない。
point単体でポインタ変数をさす→住所代入する時はpoint=***
&:アドレス演算子
変数名の頭につけると、実際の値ではなく、データが格納されたアドレスの番号を示すことが出来る。
よくわからない例)変数(田中)さんちのアドレス(東京都)をポインタ(point)に代入する時は
point=&田中;
これでpointの中に東京都が入る
とかメモしていてもいずれ忘れる気がする。
例)「名前、身長、体重」というクラスがあるとすれば、そのインスタンスは「田中、175、65」
引数:関数に渡す方
ポインタ:変数のアドレスを記憶する変数。
int * point →int:変数の型 *:次の変数はポインタですよ!という意味 point:変数名
だからポインタ名はpoint単体であって、*pointではない。
point単体でポインタ変数をさす→住所代入する時はpoint=***
&:アドレス演算子
変数名の頭につけると、実際の値ではなく、データが格納されたアドレスの番号を示すことが出来る。
よくわからない例)変数(田中)さんちのアドレス(東京都)をポインタ(point)に代入する時は
point=&田中;
これでpointの中に東京都が入る
とかメモしていてもいずれ忘れる気がする。
PR
MeCab/sdk内にあるサンプルファイルをbcc32でコンパイル→実行するときの注意事項
(参考:http://www.ie.u-ryukyu.ac.jp/~e035724/Unix/mecab-0.81/doc/libmecab.html)
・bcc32のlibファイルは他とちょっと違うので、コンパイルするときは作り直さないといけない。
・libはdllファイルから作り直す。dllのある場所で
implib.exe /a /f libmecab.lib libmecab.dll
を実行するとdllファイルからlibファイルが生成される。
*このlibファイルは作成元のdllを必要とするので、とりあえず2つのファイルは同じ階層に入れておく!
*そのdllはシステムのパスが通っている場所(?)にある必要がある。
(パスが通っている場所の範囲がよくわからないのですが、exeのあるフォルダに入れておけばとりあえずだいじょうぶなようです。)
うまくいった時の状況メモまとめ---------------------------------------------
□コンパイルに必要なもの
・example.c
・libmecab.dll →example.cと同じフォルダへ
・libmecab.lib →libmecab.dllと同じフォルダへ。配布されたものを使うのではなく、
自分でdllから作成したものを使う
・mecab.h →example.cと別のフォルダに入れるときは実行時に場所を指定する。
面倒なのでexampleと同じフォルダに入れる。
□example.cの書き換え場所
include→include"mecab.h"
最後のforループの手前の*dの定義→main最初の方、CHECK(mecab)のすぐ上へ
mecab=mecab_new2("");→手前にあるmecab_t *mecab;とくっつけた
□コンパイルの仕方
bcc32 -DDLL_IMPORT -I example.c libmecab.lib
mecab.hの場所がexampleと違う時は、-Iの後に「.\フォルダ名」をはさむ
□実行した結果
example.c内で指定した文字列を形態素解析して、何種類かの方法で結果表示した。とてもながい。
---------------------------------------------------------------------------
example.cを書き換えれば出力の方法が変えられる(はず)なので、
exampleで出力方法の変更を試しつつ、shioriからmecabを呼べるように書き換えを試みたいと思います。
(参考:http://www.ie.u-ryukyu.ac.jp/~e035724/Unix/mecab-0.81/doc/libmecab.html)
・bcc32のlibファイルは他とちょっと違うので、コンパイルするときは作り直さないといけない。
・libはdllファイルから作り直す。dllのある場所で
implib.exe /a /f libmecab.lib libmecab.dll
を実行するとdllファイルからlibファイルが生成される。
*このlibファイルは作成元のdllを必要とするので、とりあえず2つのファイルは同じ階層に入れておく!
*そのdllはシステムのパスが通っている場所(?)にある必要がある。
(パスが通っている場所の範囲がよくわからないのですが、exeのあるフォルダに入れておけばとりあえずだいじょうぶなようです。)
うまくいった時の状況メモまとめ---------------------------------------------
□コンパイルに必要なもの
・example.c
・libmecab.dll →example.cと同じフォルダへ
・libmecab.lib →libmecab.dllと同じフォルダへ。配布されたものを使うのではなく、
自分でdllから作成したものを使う
・mecab.h →example.cと別のフォルダに入れるときは実行時に場所を指定する。
面倒なのでexampleと同じフォルダに入れる。
□example.cの書き換え場所
include
最後のforループの手前の*dの定義→main最初の方、CHECK(mecab)のすぐ上へ
mecab=mecab_new2("");→手前にあるmecab_t *mecab;とくっつけた
□コンパイルの仕方
bcc32 -DDLL_IMPORT -I example.c libmecab.lib
mecab.hの場所がexampleと違う時は、-Iの後に「.\フォルダ名」をはさむ
□実行した結果
example.c内で指定した文字列を形態素解析して、何種類かの方法で結果表示した。とてもながい。
---------------------------------------------------------------------------
example.cを書き換えれば出力の方法が変えられる(はず)なので、
exampleで出力方法の変更を試しつつ、shioriからmecabを呼べるように書き換えを試みたいと思います。
最尤法が分かってること前提みたいな書き方がされている@wiki
統計学で、最尤法を用いて確率モデルのパラメータを推定する方法の一つだそうです。
観測不可能な、値も分布もよく分からない何か(潜在変数)に確立モデルが依存している場合に利用されるらしい。
確立モデルってなんぞ:対象となる物のあり得る全ての事象について確率を割り当てたもの?
さいころのでる目1~6全部とか、コインの裏表とかの全部に確立を割り当てたものが確立モデルらしいです。
EMアルゴリズムは反復法の一種で、英語で[E=期待値、M=最大化]を指す。
この期待値のパートと最大化のパートを交互に繰り返すことで計算が進行する。
Eステップ:現在推定されている潜在変数の分布に基づいて、モデルの尤度の期待値を計算する。
Mステップ:Eステップで求まった尤度の期待値を最大化するようなパラメータを求める。ここで最尤推定法なんだろうか…。
Mステップで求まったパラメータは、次のEステップで使われる潜在変数の分布を決定するために用いられる。
なのでMステップ終わったらまたEステップに戻って繰り返す。
何を書いているのか分からなくなってきた。
潜在変数があると普通の方法で確立モデルのパラメータ(θ)の最尤推定値を求めるのにすごい量の計算と時間が必要になるので、この反復方法で最尤推定値を見つけるらしい。
統計学で、最尤法を用いて確率モデルのパラメータを推定する方法の一つだそうです。
観測不可能な、値も分布もよく分からない何か(潜在変数)に確立モデルが依存している場合に利用されるらしい。
確立モデルってなんぞ:対象となる物のあり得る全ての事象について確率を割り当てたもの?
さいころのでる目1~6全部とか、コインの裏表とかの全部に確立を割り当てたものが確立モデルらしいです。
EMアルゴリズムは反復法の一種で、英語で[E=期待値、M=最大化]を指す。
この期待値のパートと最大化のパートを交互に繰り返すことで計算が進行する。
Eステップ:現在推定されている潜在変数の分布に基づいて、モデルの尤度の期待値を計算する。
Mステップ:Eステップで求まった尤度の期待値を最大化するようなパラメータを求める。ここで最尤推定法なんだろうか…。
Mステップで求まったパラメータは、次のEステップで使われる潜在変数の分布を決定するために用いられる。
なのでMステップ終わったらまたEステップに戻って繰り返す。
何を書いているのか分からなくなってきた。
潜在変数があると普通の方法で確立モデルのパラメータ(θ)の最尤推定値を求めるのにすごい量の計算と時間が必要になるので、この反復方法で最尤推定値を見つけるらしい。
確率とか統計での、ある状況で一番尤もらしい事象やデータを推定する方法。
確率は「この前提条件で結果がAになる確率はどれくらいか」を調べるのに対し、
尤度は「この観察結果Aが得られた時、前提条件がどうだと尤もらしく事象を説明できるか」を推定するそう…です…。
lik(θ)=fD(x1,x2,....,xn | θ)
x1~xnがn回行った観察の結果(定数)で、θが母数(変数)
母数θが一定の範囲の値をとる時、lik(θ)が最大になるθの値が最尤推定量になる。
この時のθが一番尤もらしい説明が出来る値になるということ。
最尤推定法は人工無能が自分で学習する時に用いられるそうです。
この推定法の記事を読んだ感じだと、「この単語が来た時はこう返すのが尤もらしいはず」とかそういう風に使うのかな。
人間と会話しながらの学習だと、AIのある発言に対しての人間の返答のデータを集めて、
逆に同じ内容のことをきかれたときに、それっぽい返答をするために集めたデータの中から
最尤推定量の応えを返すとかそういう事が出来るのかな。と思いました。
まだwikiしか読んでないけど、どこかにプログラムとか載ってるかもしれないのでいざ使う段になったらもっと調べてみます。
とりあえずあとemアルゴリズムとLシステムについてみてみる。
確率は「この前提条件で結果がAになる確率はどれくらいか」を調べるのに対し、
尤度は「この観察結果Aが得られた時、前提条件がどうだと尤もらしく事象を説明できるか」を推定するそう…です…。
lik(θ)=fD(x1,x2,....,xn | θ)
x1~xnがn回行った観察の結果(定数)で、θが母数(変数)
母数θが一定の範囲の値をとる時、lik(θ)が最大になるθの値が最尤推定量になる。
この時のθが一番尤もらしい説明が出来る値になるということ。
最尤推定法は人工無能が自分で学習する時に用いられるそうです。
この推定法の記事を読んだ感じだと、「この単語が来た時はこう返すのが尤もらしいはず」とかそういう風に使うのかな。
人間と会話しながらの学習だと、AIのある発言に対しての人間の返答のデータを集めて、
逆に同じ内容のことをきかれたときに、それっぽい返答をするために集めたデータの中から
最尤推定量の応えを返すとかそういう事が出来るのかな。と思いました。
まだwikiしか読んでないけど、どこかにプログラムとか載ってるかもしれないのでいざ使う段になったらもっと調べてみます。
とりあえずあとemアルゴリズムとLシステムについてみてみる。
atoiがとっても便利です。
int a =atoi(char型の何か)
→char型の何かの先頭にある文字型数字を自動でintに変換してaに格納してくれるそうです。
めかぶは品詞を半角数字のidで一緒に出力できるので、これで品詞ごとに分けた辞書ファイルがつくれました。
ただ区分が細かすぎるので扱いが難しいですね。名詞とかはともかく、
動詞は活用形のまま切れているので扱いにくそうです。助詞とかも。
知られている、を辞書に登録するとして、数字一つにつき一個ファイル作ってたら
31 知ら
32 れ
18 て
33 いる
7 。
という区切りででそれぞれの辞書に分けられてしまいます。
あんまりブチブチ区切るのもよくなさそうなので、ある程度まとまった辞書とかのほうがいいのかな。
書き換え規則とかを細かく指定できるならいいんですけどね。まだどこまでできるかわからないしな…
辞書分けとかについて考えたら、生成文法を使った文章生成を考えてみようかなと思います。
今のところちゃんと自然言語の喋れる無能の作成を目指しているのですが、卒研の目標はブレブレです。
無能か知能でヘルプ作るって言ってたけど、プログラム作っていくうちにどんどん違うんじゃないかこれってなってきた(^q^)
とりあえず勉強も兼ねての無能作成に専念しようかな…。やってれば何かいいアイデアが思いつくのではないかとそんな目の逸らし方をしています。
int a =atoi(char型の何か)
→char型の何かの先頭にある文字型数字を自動でintに変換してaに格納してくれるそうです。
めかぶは品詞を半角数字のidで一緒に出力できるので、これで品詞ごとに分けた辞書ファイルがつくれました。
ただ区分が細かすぎるので扱いが難しいですね。名詞とかはともかく、
動詞は活用形のまま切れているので扱いにくそうです。助詞とかも。
知られている、を辞書に登録するとして、数字一つにつき一個ファイル作ってたら
31 知ら
32 れ
18 て
33 いる
7 。
という区切りででそれぞれの辞書に分けられてしまいます。
あんまりブチブチ区切るのもよくなさそうなので、ある程度まとまった辞書とかのほうがいいのかな。
書き換え規則とかを細かく指定できるならいいんですけどね。まだどこまでできるかわからないしな…
辞書分けとかについて考えたら、生成文法を使った文章生成を考えてみようかなと思います。
今のところちゃんと自然言語の喋れる無能の作成を目指しているのですが、卒研の目標はブレブレです。
無能か知能でヘルプ作るって言ってたけど、プログラム作っていくうちにどんどん違うんじゃないかこれってなってきた(^q^)
とりあえず勉強も兼ねての無能作成に専念しようかな…。やってれば何かいいアイデアが思いつくのではないかとそんな目の逸らし方をしています。