英語 | 中国語
オープンドメイン質問応答のための生成モデルによるパッセージ検索の活用
Retrievalオープンドメインの質問応答のための密なパッセージの検索
APスケジューラ
導入・実行可能なフルプロセス対話システム
TensorFlow モデル
トランス
シーケンス 2 シーケンス
SMN検索モデル
スケジュールされたサンプリングトランスフォーマー
GPT2
タスクダイアログ
パイトーチモデル
トランス
シーケンス 2 シーケンス
このプロジェクトは、オンラインで展開できる対話システムを構築することを目的としています。これには、論文の読書ノートが別のプロジェクト (TensorFlow と Pytorch) に配置されています。プロジェクトで使用されます。
ウェアハウスのデータ ディレクトリには、各コーパスのおもちゃデータが含まれており、システムの実行を検証するために使用できます。完全なコーパスとペーパーはここで参照できます。
LCCC
クロスウォズ
小さな黄色い鶏
豆板
Ubuntu
微博
青雲
ティエバ
Linux では run.sh が実行され、プロジェクト ディレクトリのチェックでは check.sh (または check.py) が実行されます。
ルート ディレクトリの actuator.py は一般的な実行入口であり、次のコマンド形式を呼び出すことで実行されます (実行前にrequirements.txtがインストールされていることに注意してください)。
python actuator.py --version [Options] --model [Options] ...
ルート ディレクトリの actuator.py を通じて実行する場合、 --version
、 --model
、 --act
は必須パラメータです。このうち、 --version
はコード バージョンtf/torch
、 --model
対応するモデルtransformer/smn...
です。 transformer/smn...
、および act は実行モード (デフォルトではpre_treat
モード) の詳細なコマンド パラメーターについては、各モデルのactuator.py
または config ディレクトリ内の対応する json 構成ファイルを参照してください。
--act
実行モードは次のように説明されます。
pre_treat モードはテキスト前処理モードです。単語分割結果セットと辞書がない場合は、最初に pre_treat モードを実行する必要があります。
トレインモードはトレーニングモードです
評価モードはインジケーター評価モードです
チャット モードは会話モードです。チャット モードで実行している場合は、ESC を入力して会話を終了します。
通常の実行シーケンスは、pre_treat->train->evaluate->chat です。
各モデルの下には個別の actuator.py があり、実行と開発のために外部結合をバイパスできます。ただし、実行中にプロジェクト ディレクトリ パスを調整することに注意してください。
ダイアログの下には、将来のカプセル化とパッケージ化を容易にするために、関連モデルのコア コードが配置されます。
チェックポイントはチェックポイントの場所を保存します
config は設定ファイルが保存されるディレクトリです
data は元のデータの保存場所です。同時に、モデルの実行中に生成される中間データ ファイルもこのディレクトリに保存されます。
モデルのモデル保存ディレクトリ
tensorflow と pytorch は、モデルの構築と各モジュールの実行のためのコア コードを配置します。
preprocess_corpus.py は、シングルラウンドおよびマルチラウンドの対話で各コーパスを処理し、統一インターフェイス呼び出しを標準化するコーパス処理スクリプトです。
read_data.py は、load_dataset.py のデータ読み込み形式の呼び出しに使用されます。
metrics.py はさまざまなインジケーターのスクリプトです
tools.py は、ワード ブレーカー、ログ操作、チェックポイントの保存/読み込みスクリプトなどが含まれるツール スクリプトです。
モデルペーパーの読み取りメモなど、ドキュメントの下にドキュメントの指示を配置します。
docker (mobile) はサーバー (モバイル端末) のデプロイメントスクリプトに使用されます
Server は UI サービス インターフェイスです。これを構築して使用するには、対応する server.py を実行するだけです。
tools は予約されたツール ディレクトリです
actuator.py (run.sh) はアクチュエータの入り口全体です
check.py (check.sh) はプロジェクト ディレクトリ チェック スクリプトです。
SMN 取得対話システムを使用する前に、Solr 環境を準備する必要があります。Solr デプロイメント システム環境には Linux を推奨します。ツールにはコンテナー デプロイメント (Docker を推奨) を使用することをお勧めします。
ソルル(8.6.3)
pysolr(3.9.0)
詳細については、以下の記事で簡単に説明します。 検索対話システムの候補回答取得 - pysolr を使用した Solr の呼び出し
Solr をオンラインで安定して実行し、その後のメンテナンスを容易にするために、DockerFile の取得アドレス: docker-solr を使用してデプロイしてください。
テスト モデルのみを使用する場合は、次の最も単純なビルド手順を使用できます。
docker pull solr:8.6.3 # 然后启动solr docker run -itd --name solr -p 8983:8983 solr:8.6.3 # 然后创建core核心选择器,这里取名smn(可选) docker exec -it --user=solr solr bin/solr create_core -c smn
Solr の単語分割ツールには、IK Analyzer、Smartcn、ピンイン単語分割ツールなどがあります。対応する jar をダウンロードし、Solr コア構成ファイルのマネージド スキーマに構成を追加する必要があります。
特記事項: TF-IDF を使用する場合は、マネージド スキーマでの類似性構成も有効にする必要があります。
Solr をオンラインでデプロイした後、Python で pysolr を使用して接続し、使用します。
pip install pysolr
インデックスデータを追加する方法(通常は最初にセキュリティチェックが必要です)は次のとおりです。応答データにインデックスを追加します。応答は [{},{},{},...] の形式の json であり、応答のニーズに応じて構築されます。
solr = pysolr.Solr(url=solr_server, always_commit=True, timeout=10) # 安全检查 solr.ping() solr.add(docs=responses)
クエリ方法は次のとおりです。TF-IDF を使用してすべてのステートメントをクエリする場合、クエリ ステートメントの方法は次のとおりです。
{!func}sum(product(idf(utterance,key1),tf(utterance,key1),product(idf(utterance,key2),tf(utterance,key2),...)
使用する前に、Solr にデータを追加する必要があります。この SMN モデルで使用するには、最初に pre_treat モードを実行するだけです。
必要なのは注意だけです: 集中的に読む価値のある『Transformer』の先駆的な著作、2017
シーケンシャル マッチング ネットワーク: 検索ベースのチャットボットにおけるマルチターン応答選択のための新しいアーキテクチャ 読書メモ: SMN 検索対話モデル、多層および多粒度の情報抽出 | Devlin et al、2018
ニューラル機械翻訳アーキテクチャの大規模な探索 | 読書メモ: NMT アーキテクチャのハイパーパラメータを例として使用した最初の大規模な分析が、NMT アーキテクチャの構築と拡張に関する新しい洞察と実用的な提案をもたらします。 | デニーほか、2017
Transformer のスケジュールされたサンプリング | 読書メモ: Transformer でのスケジュールされたサンプリングの適用 | Mihaylova et al、2019
Apache License、バージョン 2.0 に基づいてライセンスされています。ライセンスのコピーは 2021 DengBoCong にあります。