Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NLP 100 本ノックの Ruby 版 #2

Open
mrkn opened this issue Jul 6, 2016 · 8 comments
Open

NLP 100 本ノックの Ruby 版 #2

mrkn opened this issue Jul 6, 2016 · 8 comments
Assignees

Comments

@mrkn
Copy link
Member

mrkn commented Jul 6, 2016

  • Ruby で素直に解ける場合は回答例を作る
  • Ruby で素直に解けない場合は、解けない理由 (〜が足りない、など) の調査
@himkt
Copy link

himkt commented Jul 16, 2016

85. 主成分分析による次元圧縮

84で得られた単語文脈行列に対して,主成分分析を適用し,単語の意味ベクトルを300次元に圧縮せよ.

370k x 370k の行列をつくることになるわけですが,疎行列がないと多分できません.

ちなみに,素直に行列を作ろうとすると

NoMemoryError: failed to allocate memory

@mrkn
Copy link
Member Author

mrkn commented Jul 16, 2016

@himkt NMatrix は new Yale format の sparse matrix を持っています。

@himkt
Copy link

himkt commented Jul 17, 2016

NMatrixを使ってみたのですが,こちらもメモリ確保に失敗しました(行列のサイズに上限がある?)

@mrkn
Copy link
Member Author

mrkn commented Jul 17, 2016

@himkt numo と nmatrix の両者に issue を登録してください。

@himkt
Copy link

himkt commented Jul 26, 2016

nmatrixは stypeとstyleをタイポしてるだけでした(照


nmatrixで主成分分析を試す: 固有値固有ベクトルの計算がsparse matrixには実装されていないため不可能だった

@himkt
Copy link

himkt commented Jul 26, 2016

73. 学習

https://github.com/himkt/nlp-100knock/blob/master/ruby/chapter8/knock73.rb

学習がうまくいかない.testセットでのaccuracyが1になっているのを見るとそもそも素性の抽出に失敗している?(https://github.com/himkt/nlp-100knock/blob/master/ruby/chapter8/CountVectorizer.rb)

同じことをpythonでやるとうまくいく(https://github.com/himkt/nlp-100knock/blob/master/python3/chapter8/chapter8.ipynb

scikit-learnのfeature_extraction相当のものがあると良さそう.

@himkt
Copy link

himkt commented Aug 3, 2016

学習自体はするようになった(バリデーションロスが低いのでまだ問題はありそうだが)

K-交差検定を実装する際に,NArrayオブジェクトなりNMatrixオブジェクトなりにInteger array indexingが必要(http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#integer-array-indexing)

@himkt
Copy link

himkt commented Aug 3, 2016

まとめ

言語処理100本ノックのうち,機械学習的な話題である8, 9, 10章を解いた(全部やるには時間が足りなかった)

一通り実装を試みて,NArray or NMatrixで実装する必要があると思ったものは以下の通り

  • 疎行列(NArray)
  • linalgの疎行列対応(NArray, NMatrix)
  • Integer array indexing(NArray, NMatrix)

リポジトリ(https://github.com/himkt/nlp-100knock/tree/master/ruby)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants