機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

RNN

PyTorch:Bi-LSTM+CRF②(予測)

はじめに 前回は学習に関するコードを読んだ。 kento1109.hatenablog.com今回は「予測」の部分を読んでいく。 予測 予測時は、viterbi algorithm を用いて効率的に計算する。 最後に_viterbi_decode関数を確認する。 _viterbi_decode グラフの最短経路を求め…

PyTorch:Bi-LSTM+CRF①(学習)

はじめに 今回は、Bi-LSTM+CRFに関して整理する。 最近の深層学習を用いた系列ラベリングに関する論文は、この手法でSOTAを達成していることが多い。尚、Bi-LSTM+CRFの基本的なことに関しては、以前のTheanoでの記事で述べた。 kento1109.hatenablog.comTh…

PyTorch:LSTMの実践(CoNLL)

はじめに 前回、LSTMの基礎的な使い方を整理した。 kento1109.hatenablog.comだいたい、使い方は分かったので実際にタスクに取り組んでみる。今回は「固有表現抽出」で試してみる。 CoNLLについて CoNLLは、「Conference on Computational Natural Language …

PyTorch:LSTMの基礎

はじめに 今回はNLPでよく使われるLSTMネットワークについて整理する。 自分で各ゲートのパラメータを記述したTheanoに比べると簡単。 下記のTutorialのコードを説明しながらLSTMの書き方について理解していく。 Sequence Models and Long-Short Term Memory…

TheanoでNER(モデル構築)

前回は前処理部分を簡単に理解した。 kento1109.hatenablog.com 前回も載せたがコードはここ。 github.com今回はメインのモデル構築について整理していく。 モデル構築(model.py) train.pyの f_train, f_eval = model.build(**parameters) でモデルを構築…

TheanoでNER(前処理)

NER(Named Entity Recognition) 系列ラベリングの一種。 日本語では、固有表現抽出と言われるタスク。具体例としてはこんなの 太郎は5月18日に花子に会いに行った。 これに含まれる固有表現を抽出(タグ付け)すると以下となる。 <PERSON>太郎</PERSON>は<DATE>5月18日</DATE>の<TIME>朝9時</TIME>に<PERSON>花</person>…

TheanoでLSTM③

前回の続き kento1109.hatenablog.com前回は、lstm_layerの内容を見てきた。 このように呼んでいたので、 proj = lstm_layer(tparams, emb, options, prefix=options['encoder'], mask=mask) projには、lstm_layerの戻り値のhがセットされる。 ※hは文字の長…

TheanoでLSTM②

前回の続き kento1109.hatenablog.com今回はLSTM層の構築から見ていく。 lstm_layer nsteps = state_below.shape[0] if state_below.ndim == 3: n_samples = state_below.shape[1] else: n_samples = 1 state_belowは、emb、 つまり、nstepsは、文書の長さ ※…

TheanoでLSTM①

下記のdocumentationについて整理する。LSTM Networks for Sentiment Analysis — DeepLearning 0.1 documentation はじめに コードを読んでいく前に全体の概要を掴む。コードについては下記の2ファイル lstm.py : モデルの定義&訓練 imdb.py : IMDB データ…

TheanoでRNN②

RNNの続きkento1109.hatenablog.com前回で、elman.pyの__init__部をまとめた。 今回は、elman-forward.pyのRNNインスタンス生成後のコードを呼んでいく。前回の内容で rnn = model(nh = s['nhidden'], nc = nclasses, ne = vocsize, de = s['emb_dimension']…

TheanoでRNN①

下記のdocumentationについて整理する。Recurrent Neural Networks with Word Embeddings — DeepLearning 0.1 documentation タスクについて assigning a label to each word given a sentence. It’s a classification task. とある通り、文章の各単語のタグ…