? Menggunakan corpus qingyun Tiongkok yang menarik, robot obrolan Tiongkok yang ditulis oleh @Doragd: manusia salju:
Meskipun dia tidak sesempurna :muscle:, tidak terlalu hebat :paw_prints:
Tapi dia diberi kode sendiri:sparkling_heart:, jadi
Saya harap semua orang dapat memberikan lebih banyak bintang untuk mendukung pemula NLP ini dan teman-temannya?
Proyek ini sebenarnya merupakan sub-modul dari desain mata kuliah rekayasa perangkat lunak. Tujuan kami adalah mengembangkan sistem pemrosesan tiket layanan pelanggan yang cerdas.
Alur kerja sebenarnya dari sistem perintah kerja layanan pelanggan cerdas adalah: ketika seseorang mengajukan pertanyaan ke sistem, sistem terlebih dahulu mencari basis pengetahuan untuk melihat apakah ada pertanyaan yang relevan, sistem akan mengembalikan jawaban atas pertanyaan tersebut. Jika saat ini orang tersebut belum puas, dia bisa langsung menyerahkan perintah kerja. Jika tidak ada di basis pengetahuan, chatbot ini dipanggil untuk balasan otomatis.
Skenario layanan sistem ini mirip dengan sistem layanan pelanggan Tencent Cloud. Pelanggan sebagian besar datang untuk berkonsultasi tentang masalah terkait (server cloud, nama domain, dll.), sehingga basis pengetahuan juga merupakan kumpulan konsultasi dan pemecahan masalah (pertanyaan, jawaban) tentang server cloud, nama domain, dll.
Antarmuka front-end sistem dan interaksi pesan front-end dan back-end diselesaikan oleh teman sekelas lainnya @adjlyadv, terutama menggunakan React+Django.
@Doragd bertanggung jawab untuk memperoleh basis pengetahuan dan menulis, melatih, dan menguji chatbot. Isi repo ini juga tentang hal ini.
│ .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
Instal dependensi
$ pip install -r requirements.txt
$ python datapreprocess.py
Proses awal korpus untuk menghasilkan corpus.pth ( corpus.pth telah diunggah di sini, jadi langkah ini dapat dihilangkan )
Parameter yang dapat dimodifikasi:
# 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' #已处理的对话数据集保存路径
Saat menggunakan basis pengetahuan, Anda harus memasukkan parameter use_QA_first=True
Saat ini, untuk string masukan, pertanyaan dan jawaban terbaik terlebih dahulu dicocokkan di basis pengetahuan dan dikembalikan. Jika tidak dapat ditemukan, chatbot dipanggil untuk menghasilkan balasan secara otomatis.
Basis pengetahuan di sini adalah kumpulan 100 pertanyaan umum dan jawaban yang dikumpulkan dari dokumen resmi Tencent Cloud, hanya untuk pengujian!
$ python main.py chat --use_QA_first=True
Karena kebutuhan desain kursus, pasangan tanya jawab Tencent Cloud telah ditambahkan, tetapi tidak relevan dengan proyek robot obrolan, jadi ketika digunakan secara umum, use_QA_first=False
, parameter ini defaultnya adalah True
$ python main.py chat --use_QA_first=False
$ python main.py chat
exit
, quit
, atau q
Jelaskan di file config.py
Saat Anda perlu memasukkan parameter baru, Anda hanya perlu meneruskannya dari baris perintah, dalam bentuk
$ python main.py chat --model_ckpt= ' checkpoints/chatbot_0509_1437 ' --use_QA_first=False
Perintah di atas menunjukkan jalur untuk memuat model yang dilatih dan apakah akan menggunakan basis pengetahuan
Nama korpus | Jumlah korpus | Penjelasan sumber korpus | Ciri-ciri tubuh | Sampel korpus | Apakah sudah berpartisipasi |
---|---|---|---|---|---|
qingyun (korpus Qingyun) | 10W | Grup komunikasi chatbot | Relatif bagus, ramah kehidupan | Q: Sepertinya kamu sangat mencintai uang. A: Oh, benarkah? Maka Anda hampir sampai | TIDAK |
$ python train_eval.py train [--options]
Bagian evaluasi kuantitatif belum ditulis, harus diukur dengan kebingungan, saat ini hanya dapat menghasilkan kalimat dan mengevaluasi kualitas secara manual.
$ python train_eval.py eval [--options]