? En utilisant l'intéressant corpus chinois qingyun, un robot de discussion chinois écrit par @Doragd : bonhomme de neige :
Même si elle n'est pas si parfaite :muscle:, pas si géniale :paw_prints:
Mais elle a été codée par moi-même :sparkling_heart:, donc
J'espère que tout le monde pourra donner plus d'étoiles pour soutenir ce débutant en PNL et ses amis ?
Ce projet est en fait un sous-module de la conception du cours de génie logiciel. Notre objectif est de développer un système intelligent de traitement des tickets de service client.
Le flux de travail réel du système intelligent de bons de travail du service client est le suivant : lorsqu'une personne pose une question au système, le système recherche d'abord dans la base de connaissances pour voir s'il y a une question pertinente. Si tel est le cas, il renvoie la réponse à la question. Si la personne n'est pas satisfaite à ce moment-là, elle peut directement soumettre un bon de travail. S'il n'existe pas dans la base de connaissances, ce chatbot est appelé en réponse automatique.
Le scénario de service de ce système est similaire au système de service client de Tencent Cloud. Les clients viennent principalement consulter des problèmes connexes (serveurs cloud, noms de domaine, etc.), la base de connaissances est donc également un ensemble de consultations et de dépannage (questions, réponses). sur les serveurs cloud, les noms de domaine, etc.
L'interface frontale du système et l'interaction des messages front-end et back-end sont complétées par un autre camarade de classe @adjlyadv, utilisant principalement React+Django.
@Doragd est responsable de l'acquisition de la base de connaissances ainsi que de la rédaction, de la formation et des tests du chatbot. Le contenu de ce dépôt concerne également cela.
│ .gitignore
│ config.py #模型配置参数
│ corpus.pth #已经过处理的数据集
│ dataload.py #dataloader
│ datapreprocess.py #数据预处理
│ LICENSE
│ main.py
│ model.py
│ README.md
│ requirements.txt
│ train_eval.py #训练和验证,测试
│
├─checkpoints
│ chatbot_0509_1437 #已经训练好的模型
│
├─clean_chat_corpus
│ qingyun.tsv #语料库
│
├─QA_data
│ QA.db #知识库
│ QA_test.py #使用知识库时调用
│ stop_words.txt #停用词
│ __init__.py
│
└─utils
beamsearch.py #to do 未完工
greedysearch.py #贪婪搜索,用于测试
__init__.py
Installer les dépendances
$ pip install -r requirements.txt
$ python datapreprocess.py
Prétraitez le corpus pour générer corpus.pth ( corpus.pth a été téléchargé ici, cette étape peut donc être omise )
Paramètres modifiables :
# datapreprocess.py
corpus_file = 'clean_chat_corpus/qingyun.tsv' #未处理的对话数据集
max_voc_length = 10000 #字典最大长度
min_word_appear = 10 #加入字典的词的词频最小值
max_sentence_length = 50 #最大句子长度
save_path = 'corpus.pth' #已处理的对话数据集保存路径
Lorsque vous utilisez la base de connaissances, vous devez transmettre le paramètre use_QA_first=True
À ce stade, pour la chaîne d'entrée, la meilleure question et la meilleure réponse sont d'abord mises en correspondance dans la base de connaissances et renvoyées. Lorsqu'il est introuvable, le chatbot est appelé pour générer automatiquement une réponse.
La base de connaissances ici est une collection de 100 questions et réponses fréquemment posées compilées à partir des documents officiels de Tencent Cloud, à des fins de test uniquement !
$ python main.py chat --use_QA_first=True
En raison des besoins de conception du cours, les paires de questions et réponses de Tencent Cloud ont été ajoutées, mais cela n'a aucun rapport avec le projet de robot de chat, donc lorsqu'il est utilisé de manière générale, use_QA_first=False
, ce paramètre est par défaut True
$ python main.py chat --use_QA_first=False
$ python main.py chat
exit
, quit
ou q
. Expliquez dans le fichier config.py
Lorsque vous devez transmettre de nouveaux paramètres, il vous suffit de les transmettre depuis la ligne de commande, sous la forme de
$ python main.py chat --model_ckpt= ' checkpoints/chatbot_0509_1437 ' --use_QA_first=False
La commande ci-dessus indique le chemin pour charger le modèle entraîné et s'il faut utiliser la base de connaissances
Nom du corpus | Nombre de corpus | Explication des sources du corpus | Caractéristiques du corpus | Échantillon de corpus | Qu'il ait été participe |
---|---|---|---|---|---|
qingyun (Corpus Qingyun) | 10W | Un groupe de communication chatbot | Relativement bon, convivial | Q : Il semble que vous aimez beaucoup l’argent. A : Oh, vraiment ? Alors tu y es presque | Non |
$ python train_eval.py train [--options]
La partie évaluation quantitative n'a pas encore été écrite. Elle devrait être mesurée par perplexité. Actuellement, elle ne peut générer que des phrases et évaluer manuellement la qualité.
$ python train_eval.py eval [--options]