Anglais | Chinois
Tirer parti de la récupération de passages avec des modèles génératifs pour répondre aux questions de domaine ouvert
RetrievalDense Passage Récupération pour répondre aux questions en domaine ouvert
Planificateur APS
Un système de dialogue complet qui peut être déployé et exécuté
Modèle TensorFlow
Transformateur
Séq2Séq
Modèle de récupération SMN
Transformateur d'échantillonnage programmé
GPT2
Dialogue de tâches
Modèle Pytorche
Transformateur
Séq2Séq
Ce projet vise à construire un système de dialogue pouvant être déployé en ligne. Il comprend à la fois des systèmes de dialogue à domaine ouvert et orientés tâches. Il reproduit des modèles associés. Les notes de lecture papier sont placées dans un autre projet : TensorFlow et Pytorch. dans le projet. À mettre en œuvre.
Le répertoire de données de l'entrepôt contient des données sur les jouets pour chaque corpus, qui peuvent être utilisées pour vérifier l'exécution du système. Le corpus complet et l'article peuvent être consultés ici.
LCCC
CrossWOZ
petit poulet jaune
Douban
Ubuntu
Qingyun
Tiéba
Linux exécute run.sh et pour vérifier le répertoire du projet, exécutez check.sh (ou check.py)
activateur.py dans le répertoire racine est l'entrée d'exécution générale, qui est exécutée en appelant le format de commande suivant (notez que Requirements.txt est installé avant l'exécution) :
python actuator.py --version [Options] --model [Options] ...
Lors de l'exécution via activateur.py dans le répertoire racine, --version
, --model
et --act
sont des paramètres obligatoires, parmi lesquels --version
est la version du code tf/torch
--model
est le modèle transformer/smn...
correspondant. pour l'exécution. transformer/smn...
, et act est le mode d'exécution (mode pre_treat
par défaut). Pour des paramètres de commande plus détaillés, veuillez vous référer à actuator.py
sous chaque modèle ou au fichier de configuration json correspondant dans le répertoire de configuration.
Le mode d'exécution --act
est décrit comme suit :
Le mode pre_treat est le mode de prétraitement du texte. S'il n'y a pas de jeu de résultats de segmentation de mots ni de dictionnaire, vous devez d'abord exécuter le mode pre_treat.
le mode train est le mode entraînement
le mode d'évaluation est le mode d'évaluation de l'indicateur
Le mode chat est un mode conversation. Lorsque vous êtes en mode chat, entrez ESC pour quitter la conversation.
La séquence d'exécution normale est pre_treat->train->evaluate->chat
Il existe un activateur.py distinct sous chaque modèle, qui peut contourner le couplage externe pour l'exécution et le développement. Cependant, faites attention à l'ajustement du chemin du répertoire du projet pendant l'exécution.
Sous dialogue, le code de base du modèle concerné est placé pour faciliter l'encapsulation et le packaging futurs.
les points de contrôle enregistrent l'emplacement des points de contrôle
config est le répertoire où le fichier de configuration est enregistré
data est l'emplacement de stockage des données d'origine. Parallèlement, les fichiers de données intermédiaires générés lors de l'exécution du modèle sont également enregistrés dans ce répertoire.
modèles enregistrer le répertoire pour les modèles
tensorflow et pytorch placent le code de base pour la construction du modèle et l'exécution de chaque module
preprocess_corpus.py est un script de traitement de corpus, qui traite chaque corpus dans des dialogues à un ou plusieurs tours, et standardise les appels d'interface unifiés.
read_data.py est utilisé pour l'appel au format de chargement des données de load_dataset.py
metrics.py est un script pour divers indicateurs
tools.py est un script d'outil, qui contient des séparateurs de mots, des opérations de journalisation, des scripts de sauvegarde/chargement de point de contrôle, etc.
Placez les instructions de documentation sous les documents, y compris les notes de lecture du modèle de papier.
docker (mobile) est utilisé pour les scripts de déploiement de serveur (terminal mobile)
Le serveur est l'interface du service UI. Utilisez flask pour le créer et l'utiliser. Exécutez simplement le server.py correspondant.
tools est le répertoire d'outils réservé
activateur.py (run.sh) est l'entrée totale de l'actionneur
check.py (check.sh) est le script de vérification du répertoire du projet
Avant d'utiliser le système de dialogue de récupération SMN, vous devez préparer l'environnement Solr. Linux est recommandé pour l'environnement du système de déploiement Solr. Il est recommandé d'utiliser le déploiement de conteneurs (Docker est recommandé) pour les outils et de préparer :
Solr(8.6.3)
pysolr(3.9.0)
Une brève explication est fournie ci-dessous. Pour plus de détails, veuillez vous référer à l'article : Obtenir la récupération de la réponse du candidat du système de dialogue de récupération - utiliser pysolr pour appeler Solr.
Pour garantir que Solr fonctionne de manière stable en ligne et faciliter la maintenance ultérieure, veuillez utiliser DockerFile pour le déploiement. Adresse d'acquisition de DockerFile : docker-solr.
Pour une utilisation sur le modèle de test uniquement, vous pouvez utiliser les instructions de construction les plus simples suivantes :
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
Concernant les outils de segmentation de mots dans Solr, il existe IK Analyzer, Smartcn, Pinyin word segmenter, etc. Vous devez télécharger le fichier jar correspondant, puis ajouter la configuration dans le schéma géré du fichier de configuration principal de Solr.
Remarque spéciale : si vous utilisez TF-IDF, vous devez également activer la configuration de similarité dans le schéma géré.
Après avoir déployé Solr en ligne, utilisez pysolr en Python pour vous connecter et utiliser :
pip install pysolr
La méthode d'ajout de données d'index (nécessitant généralement un contrôle de sécurité en premier) est la suivante. Ajoutez un index aux données de réponse. Les réponses sont un json sous la forme : [{},{},{},...].
solr = pysolr.Solr(url=solr_server, always_commit=True, timeout=10) # 安全检查 solr.ping() solr.add(docs=responses)
La méthode de requête est la suivante : Pour interroger toutes les instructions à l'aide de TF-IDF, la méthode d'instruction de requête est la suivante :
{!func}sum(product(idf(utterance,key1),tf(utterance,key1),product(idf(utterance,key2),tf(utterance,key2),...)
Avant utilisation, vous devez ajouter les données à Solr. Pour les utiliser dans ce modèle SMN, exécutez d'abord le mode pre_treat.
L'attention est tout ce dont vous avez besoin | Notes de lecture : Le travail pionnier de Transformer, digne d'une lecture intensive |
Réseau de correspondance séquentielle : une nouvelle architecture pour la sélection de réponses multi-tours dans les chatbots basés sur la récupération | Notes de lecture : modèle de dialogue de récupération SMN, extraction multicouche et multi-granularité d'informations Devlin et al, 2018
Exploration massive des architectures de traduction automatique neuronale | Notes de lecture : La première analyse à grande échelle utilisant les hyperparamètres de l'architecture NMT comme exemple est présentée. L'expérience apporte de nouvelles informations et des suggestions pratiques pour créer et étendre des architectures NMT. Denny et coll., 2017
Échantillonnage programmé pour les transformateurs | Notes de lecture : application de l'échantillonnage programmé dans le transformateur | Mihaylova et al, 2019
Sous licence Apache, version 2.0 Copyright 2021 DengBoCong Copie de la licence.