自動学習updateメモ
自動学習ツイートプログラムを改修したため記録
主な改修項目
- 文章生成時に連鎖しない場合はツイートしない
- 放置アカウント対策
- 感情分析
それぞれの詳細は以下のとおり
- 文章生成時に連鎖しない場合はツイートしない
- 経緯
- 学習元の文言そのままをツイートすることがあったため、それはあまりよくないだろうし、かつ何も生成していないので回避したかった
- 内容
- 文章生成時、次の言葉を決める際にどれだけ選択肢があるのかチェックをいれるようにした。選択肢が複数無いまま文章を最後まで生成してしまった場合はツイートしない対応とした
- 結果
- 新たに生成された文章のみツイートするようになった。例外としてたまたま元の文章と同じになることはある。あくまで結果であり、それに関しては許容している
- 経緯
- 放置アカウント対策
- 経緯
- 古い文章が残ったままの放置アカウントから学習してしまい。同じような文章を複数回生成するようなことがあったため対策必要と考えた
- 内容
- created_at をチェックすることで放置分については処理対象外とした
- 結果
- 放置対策がうまくいき、より直近の話題を学習できるようになった
- 経緯
- 感情分析
- 経緯
- たまたまネガティブな内容を生成&ツイートしてしまうことああった。ネガティブ度合にもよるがあまり好ましくないと感じた
- 内容
- 極性辞書ベースだと結構文言管理が大変だったりするので別のやり方がないか探していたところ、asari あるいは huggingface の bert-base-japanese-sentiment が良さげに見えた。どちらも試そうと試みたが、scikit-learn や numpy 他、いくつかのモジュールのエラー対応が必要だった。asariに関してはそれほど周辺のエラー除去が大変でなかったためこれを採用させて頂き、negative ツイートはしない方向とした
- 結果
- 現在稼働中でしばらく様子見、結果良好そうならそのまま稼働予定
- 経緯
その他環境的なメモ
- scikit-learn 0.22
- numpy 1.22.0
- asari 0.0.4
- joblib 1.1.0
- sklearn/feature/extraction/text.py でlen(original_tokens) の箇所がエラーのようだったので修正(list(original_token)したものをlenに入れる)
- AWS t2.micro では asari 起動時にKilledとなる。/var/log/syslog を確認したところOOM kill されているようだった。t2.small にインスタンスを変更(swapを設定する方法とどちらにするか迷ったが)
以上