Dialogbot, fournit une technologie complète de modèle de dialogue combinant un modèle de dialogue basé sur la recherche , un modèle de dialogue basé sur les tâches et un modèle de dialogue génératif , génère la réponse de dialogue optimale.
Dialogbot implémente une variété de solutions de robots de dialogue telles que le dialogue questions-réponses, le dialogue basé sur les tâches et le dialogue basé sur le chat. Il prend en charge les questions-réponses de récupération de réseau, les questions-réponses sur la connaissance du domaine, les questions-réponses guidées par les tâches et les questions-réponses par chat, le tout à partir de la boîte.
Guide
Les systèmes de dialogue homme-machine ont toujours été une direction importante de l'IA. Le test de Turing utilise le dialogue pour détecter si une machine possède un degré élevé d'intelligence.
Comment construire un système de dialogue homme-machine ou un robot de dialogue ?
Le système de dialogue a évolué à travers trois générations :
Les systèmes de dialogue sont divisés en trois catégories :
Calculez la similarité entre la question de l'utilisateur et la question dans la base de données de questions et réponses, sélectionnez la question la plus similaire et donnez la réponse correspondante.
Le calcul de similarité de phrases comprend les méthodes suivantes :
Récupérer les réponses des résumés des résultats de recherche sur Baidu et Bing
Démo officielle : https://www.mulanai.com/product/dialogbot/
Le projet est basé sur Transformers 4.4.2+, Torch 1.6.0+ et Python 3.6+. Ensuite, faites simplement :
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
ou
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
exemple : exemples/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
sortir:
query: "姚明多高呀?"
answer: "226cm"
exemple : exemples/taskbot_demo.py
Un modèle de dialogue basé sur le chat formé sur la base du modèle génératif GPT2.
Le modèle a été publié sur les modèles huggingface : shibing624/gpt2-dialogbot-base-chinese
exemple : exemples/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
sortir:
query: "亲 吃了吗?"
answer: "吃了"
Créez un dossier de données dans le répertoire racine du projet, nommez le corpus de formation d'origine train.txt et stockez-le dans ce répertoire. Le format de train.txt est le suivant. Chaque chat est séparé par une ligne.
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Exécutez preprocess.py, tokenisez le matériel de dialogue data/train.txt, puis sérialisez-le et enregistrez-le dans data/train.pkl. Le type d'objet sérialisé dans train.pkl est List[List], qui enregistre le jeton contenu dans chaque conversation dans la liste des conversations.
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
Exécutez train.py et utilisez les données prétraitées pour effectuer un entraînement autorégressif sur le modèle. Le modèle est enregistré dans le dossier modèle du répertoire racine.
Pendant l'entraînement, vous pouvez vous arrêter plus tôt en spécifiant le paramètre patience. Lorsque patience = n, si la perte du modèle sur l'ensemble de vérification ne diminue pas pendant n époques consécutives, un arrêt anticipé sera effectué pour arrêter l'entraînement. Lorsque patience=0, l'arrêt anticipé n'est pas effectué.
L'arrêt anticipé est désactivé par défaut dans le code, car en pratique, le modèle généré par l'arrêt anticipé ne produit pas nécessairement de meilleurs résultats.
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
Pour plus d'introduction aux paramètres de formation, vous pouvez voir directement la description du paramètre dans la fonction set_args() dans train.py
Exécutez Interactive.py et utilisez le modèle entraîné pour effectuer une interaction homme-machine. Après avoir entré q pour mettre fin à la conversation, l'enregistrement de discussion sera enregistré dans le fichier sample.txt.
python interact.py --no_cuda --model_dir path_to_your_model
Lors de l'exécution d'interact.py, vous pouvez essayer d'ajuster l'effet généré en ajustant des paramètres tels que topk, topp, repetition_penalty, max_history_len, etc. Pour plus d'introduction aux paramètres, vous pouvez voir directement la description du paramètre dans la fonction set_args() d'interact.py. Si vous souhaitez utiliser le GPU pour la génération, n'appelez pas le paramètre --no_cuda et spécifiez quel GPU utiliser via -. -device gpu_id.
user :在干嘛
chatbot:睡觉
user :这么早就睡觉啦
chatbot:嗯啊你也早点睡啊
user :我再玩一会儿手机
chatbot:早点休息晚安
user :拜拜啦
chatbot:晚安晚安
user :多喝热水
chatbot:哈哈哈
user :多喝热水
chatbot:好的咯
user :在吗
chatbot:在
user :我不开心
chatbot:怎么啦
user :最近好累啊
chatbot:是挺累的
user :作业好多啊
chatbot:还好还好
user :我觉得我快要挂科了
chatbot:我也是啊,但是我觉得我快熬出头了
user :不说了,我还有好多作业没写
chatbot:我也是啊好多啊
user :那先这样,下次再聊,再见了
chatbot:好哒
Corpus de discussion chinois | Adresse de l'ensemble de données | Description du corpus |
---|---|---|
Chat chinois commun | chinois_chatbot_corpus | Y compris le corpus Xiaohuangji, le corpus Douban, le corpus de dialogues de séries télévisées, le corpus de réponses du forum Tieba, le corpus Weibo, le corpus de potins PTT, le corpus Qingyun, etc. |
500 000 corpus de discussion chinois | Baidu Netdisk [code d'extraction : 4g5e] ou GoogleDrive | Contient le corpus original et les données prétraitées de 500 000 conversations multitours |
1 million de corpus de discussion chinois | Baidu Netdisk [code d'extraction : s908] ou GoogleDrive | Contient le corpus original et les données prétraitées de 1 million de conversations multitours |
Des exemples de corpus de discussion chinois sont les suivants :
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Modèle | adresse partagée | Description du modèle |
---|---|---|
modèle_époque40_50w | shibing624/gpt2-dialogbot-base-chinese ou Baidu Cloud Disk (code d'extraction : taqh) ou GoogleDrive | Après un entraînement de 40 époques utilisant 500 000 séries de données de dialogue, la perte est tombée à environ 2,0. |
Si vous utilisez Dialogbot dans votre recherche, veuillez le citer au format suivant :
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
Le contrat de licence est The Apache License 2.0, qui est gratuit pour un usage commercial. Veuillez joindre le lien vers dialogbot et le contrat de licence dans la description du produit.
Le code du projet est encore très approximatif. Si vous avez des améliorations au code, vous êtes invités à le soumettre à nouveau à ce projet. Avant de le soumettre, veuillez faire attention aux deux points suivants :
tests
python -m pytest
pour exécuter tous les tests unitaires afin de vous assurer que tous les tests unitaires réussissentVous pouvez ensuite soumettre un PR.