モデル構築までのはるかな道のり!ーWebアプリ制作日記その10

AIアプリ制作
こんな貼紙がいたるところに! ©︎金沢フォーラスHPより

いつまでもぐずぐずしてはいられない。

4.データの前処理・ラベル付け

に取り組もう。(これまでの作業は、こちら)

Seq2Seqの学習に使用するデータは、3種類ある。

青色で囲んだデータ’EOS’で始まっているが、今回は’BOS’(どちらでも可)

Encoderの入力値  :BOS, 名詞, ・・・ , 名詞, EOS
Decoderの入力値:BOS, 俳句 (EOSを含まない)
Decoderの目標値:俳句, EOS (BOSを含まない)
* BOS は beginning of sentence で文頭、EOS は end of sentence で文末の意味。

これらをすべて準備しなければいけない。

df = pd.read_csv(‘haiku_scraping2.csv’)

で、前回保存したcsvファイルを読み込み、

iloc コマンドで、
pandasDataFrameをスライスして、
必要なデータの列だけ切り出す。
(とりあえず、Encoder用データを変数xに、Decoder用データを変数tに格納。)

こんなのExcelでやったら一発では?

と素人のわたしは思ってしまうが、
ここでは封印。
Python で完結させることを考える。

まずは、かんたんそうな
Decoderの入力値と目標値から。

段取りは、

① 俳句に’BOS’ (先頭)と’EOS’(末尾)をつける
② Decoderの入力値 : ’EOS’を削る
③ Decoderの目標値 : ’BOS’ を削る

となるはずだが、
とりあえず①だけやって、②、③は辞書作成後に行う。

t = [‘bos {} eos’.format(text) for text in t]

とし、

t[:3]

でチェック。

で、問題は、
Encoderの入力値だ。

俳句から順に名詞だけ抜き出し、
それに’BOS’ (先頭)と’EOS’(末尾)をつけるだけじゃん、

と思われるかもしれないが、
ここでもまたfor文が出てくる。
しかも、ネスト(for文の中にfor文を入れ子に)する必要がある。

無理!

と思ったが、
テキストを何度も読み返し、

多分、こう?

と思ったものを、
キカガク長期コースの先生に送った。

コードをGoogle Colabに書き、
Slackで共有したので、
実際に通ったコードが送り返されてきた。

これはすごい!

送ってもらったコードを試してエラーが出れば、
また、やりとりしないといけない。
それをしないで済むからだ。

コードを見ると、
‘BOS’を俳句の最初につけるのに、
insert コマンドを使ったりと、
知らないテクもあり

pandas、大事! 勉強しよ。

と痛感した。

ここまでくるのにも時間がかかったが
あと2つ、

辞書の作成
zero パディング

をやらないといけない。

う〜む。
今日はここまでじゃ。

Follow me!

コメント

  1. […] さて、前回(こちら)のつづき、 Kerasで 辞書の作成と単語のID化を行う。 […]