Pythonで作る対話システムの3-3までやってみた
背景
- 言語処理を使ったシステムを何か作ってみたくなったため
- いきなり自力では作れないので,何か写経してシステム作成イメージが欲しかった
やったこと
- 3.3章までの写経.個人的に使いやすくするために使用するデータの置き場所を一つのフォルダにまとめ,使えるように元のコードを編集した.コードはこちらです.
概要
- 非タスク型指向である用例ベース方式について書かれている
- 新たに利用するのは,Pytorch,GoogleColab,ElasticSearch.
- Pytorch:BERTの利用
- GoogleColab:GPUを用いたモデルの構築
- ElasticSearch:対話文の検索
- 用例ベースとは?
- 入力文と応答文のセット(用例)を元にする方式
- ルールベースの課題点を解決するために生まれた方式
- ルールベースは自由に条件を設定し制御しやすいが,条件を拡張する際のコストが高い
- 入力文に対する用例からの応答文決定には,類似度や対話破綻スコアなどが用いられている
- 入力文との類似度比較対象は?
- 用例の入力文・応答文・両方を用いる場合があり,どれが一番良いと言うものはない
- 求める結果によってどれを選ぶのか考え,工夫することが必要
- 用例の入力文・応答文・両方を用いる場合があり,どれが一番良いと言うものはない
- 類似度は?
- ElasticSearchの検索結果のスコア:大きい方が良い
- 文同士の単語頻度ベクトルコサイン類似度:0から1の値をとり,1に近いほど類似していることを意味する
- レーベンシュタイン距離(編集距離):得られる値である編集回数が少ないほど類似していることを意味する
- Word Mover's Distance (WMD):比較する文を構成する単語の類似度をもとに計算する方法
- 対話破綻スコアは?
- 返答文が破綻していない程度を表しており,1であればよく,0に近い程破綻していることを意味する
- 入力文との類似度比較対象は?
感想
- 発話ではなく,応答文との類似性に重きを置く方法を知り驚いた.
- 発話と応答それぞれとの類似度を掛け合わせる方法もあり,どちらかの類似度が低ければスコアが低くなるので,なるほどと感じた
- 複数のラベルがついているデータについての前処理として正例の頻度の割合で編集する点が勉強になった.
- Pytorchを使うのが初めてであったため,Kerasくらい使えるようになっておきたい.
- モデル構築時にGPUを使う事による処理待ち時間が予想よりもはやく驚いた.
次にやること
- 3.4を進める
- WMDの理解
- Pytorchの勉強