?Unter Verwendung des interessanten chinesischen Korpus qingyun, eines chinesischen Chat-Roboters, geschrieben von @Doragd: Schneemann:
Auch wenn sie nicht so perfekt ist :muscle:, nicht so toll :paw_prints:
Aber sie wurde von mir selbst codiert:sparkling_heart:, also
Ich hoffe, jeder kann diesem NLP-Anfänger und seinen Freunden mehr Sterne geben ?
Dieses Projekt ist eigentlich ein Untermodul des Software-Engineering-Kursdesigns. Unser Ziel ist die Entwicklung eines intelligenten Ticketverarbeitungssystems für den Kundenservice.
Der eigentliche Arbeitsablauf des intelligenten Kundendienst-Arbeitsauftragssystems ist: Wenn eine Person dem System eine Frage stellt, durchsucht das System zunächst die Wissensdatenbank, um zu sehen, ob es eine relevante Frage gibt. Wenn ja, gibt es die Antwort auf die Frage zurück. Wenn die Person zu diesem Zeitpunkt nicht zufrieden ist, kann sie direkt einen Arbeitsauftrag erteilen. Wenn er nicht in der Wissensdatenbank vorhanden ist, wird dieser Chatbot zur automatischen Antwort aufgerufen.
Das Service-Szenario dieses Systems ähnelt dem Kundenservice-System von Tencent Cloud. Kunden kommen hauptsächlich, um verwandte Themen zu konsultieren (Cloud-Server, Domänennamen usw.), daher ist die Wissensdatenbank auch eine Sammlung von Beratungen und Fehlerbehebungen (Fragen, Antworten). über Cloud-Server, Domänennamen usw. .
Die Front-End-Schnittstelle des Systems sowie die Front-End- und Back-End-Nachrichteninteraktion werden von einem anderen Klassenkameraden @adjlyadv vervollständigt, der hauptsächlich React + Django verwendet.
@Doragd ist für den Erwerb der Wissensdatenbank sowie das Schreiben, Trainieren und Testen des Chatbots verantwortlich. Auch der Inhalt dieses Repos dreht sich darum.
│ .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
Abhängigkeiten installieren
$ pip install -r requirements.txt
$ python datapreprocess.py
Verarbeiten Sie den Korpus vor, um corpus.pth zu generieren ( corpus.pth wurde hier hochgeladen, daher kann dieser Schritt weggelassen werden )
Veränderbare Parameter:
# 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' #已处理的对话数据集保存路径
Wenn Sie die Wissensdatenbank verwenden, müssen Sie den Parameter use_QA_first=True
Zu diesem Zeitpunkt werden für die Eingabezeichenfolge zuerst die beste Frage und Antwort in der Wissensdatenbank abgeglichen und zurückgegeben. Wenn es nicht gefunden werden kann, wird der Chatbot aufgerufen, um automatisch eine Antwort zu generieren.
Die Wissensdatenbank hier ist eine Sammlung von 100 häufig gestellten Fragen und Antworten, zusammengestellt aus offiziellen Dokumenten von Tencent Cloud, nur zum Testen!
$ python main.py chat --use_QA_first=True
Aufgrund der Anforderungen des Kursdesigns wurden die Frage- und Antwortpaare von Tencent Cloud hinzugefügt. Dies ist jedoch für das Chat-Roboterprojekt irrelevant. Daher ist dieser Parameter bei allgemeiner Verwendung, use_QA_first=False
, standardmäßig auf True
gesetzt
$ python main.py chat --use_QA_first=False
$ python main.py chat
exit
, quit
“ oder q
ein Erläutern Sie dies in der Datei config.py
Wenn Sie neue Parameter übergeben müssen, müssen Sie diese nur über die Befehlszeile im Format übergeben
$ python main.py chat --model_ckpt= ' checkpoints/chatbot_0509_1437 ' --use_QA_first=False
Der obige Befehl gibt den Pfad zum Laden des trainierten Modells an und gibt an, ob die Wissensdatenbank verwendet werden soll
Korpusname | Anzahl Korpus | Erläuterung der Korpusquellen | Korpuseigenschaften | Korpusprobe | Ob es partizipiert wurde |
---|---|---|---|---|---|
qingyun (Qingyun-Korpus) | 10W | Eine Chatbot-Kommunikationsgruppe | Relativ gut, lebensfreundlich | F: Es scheint, dass Sie Geld sehr lieben. A: Oh, wirklich? Dann haben Sie es fast geschafft | NEIN |
$ python train_eval.py train [--options]
Der quantitative Bewertungsteil wurde noch nicht geschrieben. Er sollte anhand der Ratlosigkeit gemessen werden. Derzeit können nur Sätze generiert und die Qualität manuell bewertet werden.
$ python train_eval.py eval [--options]