Dialogbot bietet eine vollständige Dialogmodelltechnologie, die ein suchbasiertes Dialogmodell , ein aufgabenbasiertes Dialogmodell und ein generatives Dialogmodell kombiniert, um die optimale Dialogantwort auszugeben.
Dialogbot implementiert eine Vielzahl von Dialogroboterlösungen wie Frage-und-Antwort-Dialoge, aufgabenbasierte Dialoge und chatbasierte Dialoge. Es unterstützt Fragen und Antworten zum Netzwerkabruf, Fragen und Antworten zu Domänenwissen, aufgabengesteuerte Fragen und Antworten die Kiste.
Führung
Mensch-Maschine-Dialogsysteme waren schon immer eine wichtige Richtung der KI. Der Turing-Test nutzt den Dialog, um festzustellen, ob eine Maschine über ein hohes Maß an Intelligenz verfügt.
Wie baut man ein Mensch-Computer-Dialogsystem oder einen Dialogroboter auf?
Das Dialogsystem hat sich über drei Generationen hinweg weiterentwickelt:
Dialogsysteme werden in drei Kategorien unterteilt:
Berechnen Sie die Ähnlichkeit zwischen der Frage des Benutzers und der Frage in der Frage- und Antwortdatenbank, wählen Sie die Frage mit der größten Ähnlichkeit aus und geben Sie die entsprechende Antwort an.
Die Berechnung der Satzähnlichkeit umfasst die folgenden Methoden:
Rufen Sie Antworten aus Suchergebnissenzusammenfassungen auf Baidu und Bing ab
Offizielle Demo: https://www.mulanai.com/product/dialogbot/
Das Projekt basiert auf Transformers 4.4.2+, Torch 1.6.0+ und Python 3.6+. Dann gehen Sie einfach wie folgt vor:
pip3 install torch # conda install pytorch
pip3 install -U dialogbot
oder
pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install
Beispiel: examples/bot_demo.py
from dialogbot import Bot
bot = Bot ()
response = bot . answer ( '姚明多高呀?' )
print ( response )
Ausgabe:
query: "姚明多高呀?"
answer: "226cm"
Beispiel: examples/taskbot_demo.py
Ein chatbasiertes Dialogmodell, das auf der Grundlage des generativen GPT2-Modells trainiert wurde.
Das Modell wurde für Huggingface-Modelle freigegeben: shibing624/gpt2-dialogbot-base-chinese
Beispiel: examples/genbot_demo.py
from dialogbot import GPTBot
bot = GPTBot ()
r = bot . answer ( '亲 你吃了吗?' , use_history = False )
print ( 'gpt2' , r )
Ausgabe:
query: "亲 吃了吗?"
answer: "吃了"
Erstellen Sie einen Datenordner im Projektstammverzeichnis, benennen Sie den ursprünglichen Trainingskorpus train.txt und speichern Sie ihn in diesem Verzeichnis. Das Format von train.txt ist wie folgt. Jeder Chat ist durch eine Zeile getrennt.
真想找你一起去看电影
突然很想你
我也很想你
想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Führen Sie preprocess.py aus, tokenisieren Sie das Dialogmaterial data/train.txt, serialisieren Sie es und speichern Sie es dann in data/train.pkl. Der in train.pkl serialisierte Objekttyp ist List[List], der das in jeder Konversation enthaltene Token in der Konversationsliste aufzeichnet.
cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
Führen Sie train.py aus und verwenden Sie die vorverarbeiteten Daten, um ein autoregressives Training für das Modell durchzuführen. Das Modell wird im Modellordner im Stammverzeichnis gespeichert.
Während des Trainings können Sie durch Angabe des Geduldsparameters vorzeitig aufhören. Wenn Geduld = n ist und der Verlust des Modells im Verifizierungssatz in n aufeinanderfolgenden Epochen nicht abnimmt, wird ein vorzeitiger Stopp durchgeführt, um das Training zu stoppen. Wenn Geduld = 0, wird kein vorzeitiger Stopp durchgeführt.
Der frühe Stopp ist im Code standardmäßig deaktiviert, da das durch den frühen Stopp generierte Modell in der Praxis möglicherweise nicht unbedingt bessere Ergebnisse liefert.
python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl
Weitere Informationen zu den Trainingsparametern finden Sie in der Parameterbeschreibung in der Funktion set_args() in train.py
Führen Sie „interact.py“ aus und verwenden Sie das trainierte Modell, um eine Mensch-Computer-Interaktion durchzuführen. Nachdem Sie „q“ eingegeben haben, um die Konversation zu beenden, wird der Chat-Datensatz in der Datei „sample.txt“ gespeichert.
python interact.py --no_cuda --model_dir path_to_your_model
Wenn Sie „interact.py“ ausführen, können Sie versuchen, den erzeugten Effekt anzupassen, indem Sie Parameter wie „topk“, „topp“, „repetition_penalty“, „max_history_len“ usw. anpassen. Weitere Parametereinführungen finden Sie direkt in der Parameterbeschreibung in der Funktion set_args() von interagieren.py. Wenn Sie die GPU zur Generierung verwenden möchten, rufen Sie den Parameter --no_cuda nicht auf und geben Sie über - an, welche GPU verwendet werden soll. -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:好哒
Chinesischer Chat-Korpus | Datensatzadresse | Korpusbeschreibung |
---|---|---|
Gemeinsamer chinesischer Chat | chinese_chatbot_corpus | Einschließlich Xiaohuangji-Korpus, Douban-Korpus, TV-Drama-Dialogkorpus, Tieba-Forum-Antwortkorpus, Weibo-Korpus, PTT-Klatschkorpus, Qingyun-Korpus usw. |
500.000 chinesische Chat-Körper | Baidu Netdisk [Extraktionscode: 4g5e] oder GoogleDrive | Enthält Originalkorpus und vorverarbeitete Daten von 500.000 Multi-Turn-Gesprächen |
1 Million chinesischer Chat-Korpus | Baidu Netdisk [Extraktionscode: s908] oder GoogleDrive | Enthält Originalkorpus und vorverarbeitete Daten von 1 Million Multi-Turn-Gesprächen |
Beispiele für chinesische Chat-Körper sind wie folgt:
谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好
你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊
今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
Modell | gemeinsame Adresse | Modellbeschreibung |
---|---|---|
model_epoch40_50w | shibing624/gpt2-dialogbot-base-chinese oder Baidu Cloud Disk (Extraktionscode: taqh) oder GoogleDrive | Nach einem Training über 40 Epochen mit 500.000 Runden Dialogdaten sank der Verlust auf etwa 2,0. |
Wenn Sie Dialogbot in Ihrer Forschung verwenden, zitieren Sie es bitte im folgenden Format:
@misc{dialogbot,
title={dialogbot: Dialogue Model Technology Tool},
author={Xu Ming},
year={2021},
howpublished={ url {https://github.com/shibing624/dialogbot}},
}
Die Lizenzvereinbarung ist die Apache-Lizenz 2.0, die für die kommerzielle Nutzung kostenlos ist. Bitte fügen Sie den Link zu Dialogbot und die Lizenzvereinbarung in der Produktbeschreibung bei.
Der Projektcode ist noch sehr grob. Wenn Sie Verbesserungen am Code haben, können Sie ihn gerne an dieses Projekt zurücksenden. Bitte beachten Sie vor dem Absenden die folgenden zwei Punkte:
tests
python -m pytest
um alle Komponententests auszuführen und sicherzustellen, dass alle Komponententests erfolgreich sindAnschließend können Sie eine PR einreichen.