พื้นที่เก็บข้อมูลนี้โฮสต์การดำเนินการของรายงาน "การเพิ่มการสร้างการตอบสนองของระบบประสาทด้วยความสนใจเฉพาะที่ตามบริบท"
THRED เป็นระบบสร้างคำตอบแบบหลายรอบที่มีจุดมุ่งหมายเพื่อสร้างคำตอบตามบริบทและตามหัวข้อ โค้ดเบสได้รับการพัฒนาจากที่เก็บ Tensorflow NMT
TL;DR ขั้นตอนในการสร้างตัวแทนการสนทนาโดยใช้เฟรมเวิร์กนี้:
conda env create -f thred_env.yml
(หากต้องการใช้ pip
ดูการพึ่งพา)MODEL_DIR
เป็นไดเร็กทอรีที่โมเดลจะถูกบันทึกไว้ เราขอแนะนำให้ฝึกฝนบน GPU อย่างน้อย 2 ตัว ไม่เช่นนั้นคุณสามารถลดขนาดข้อมูล (โดยละการสนทนาออกจากไฟล์การฝึก) และขนาดโมเดล (โดยการแก้ไขไฟล์กำหนดค่า) python -m thred --mode train --config conf/thred_medium.yml --model_dir
--train_data --dev_data --test_data
python -m thred --mode interactive --model_dir
1 แพ็คเกจที่จำเป็นสำหรับการแยกวิเคราะห์และล้างข้อมูล Reddit เท่านั้น 2 ใช้สำหรับทดสอบโมเดลบทสนทนาในโหมดโต้ตอบบรรทัดคำสั่งเท่านั้น
หากต้องการติดตั้งการพึ่งพาโดยใช้ pip
ให้รัน pip install -r requirements
และสำหรับ Anaconda ให้รัน conda env create -f thred_env.yml
(แนะนำ) เมื่อเสร็จสิ้นการขึ้นต่อกันแล้ว ให้รัน pip install -e .
เพื่อติดตั้งแพ็คเกจthed
ชุดข้อมูล Reddit ของเรา ซึ่งเราเรียกว่า Reddit Conversation Corpus (RCC) รวบรวมจาก 95 subreddits ที่เลือก (แสดงไว้ที่นี่) เราประมวลผล Reddit เป็นระยะเวลา 20 เดือนตั้งแต่เดือนพฤศจิกายน 2016 ถึงเดือนสิงหาคม 2018 (ไม่รวมเดือนมิถุนายน 2017 และกรกฎาคม 2017 เราใช้สองเดือนนี้ร่วมกับข้อมูลเดือนตุลาคม 2016 เพื่อฝึกโมเดล LDA) โปรดดูที่นี่สำหรับรายละเอียดเกี่ยวกับวิธีการสร้างชุดข้อมูล Reddit รวมถึงการประมวลผลล่วงหน้าและการล้างไฟล์ Raw Reddit ตารางต่อไปนี้สรุปข้อมูล RCC:
คอร์ปัส | #รถไฟ | #ผู้พัฒนา | #ทดสอบ | ดาวน์โหลด | ดาวน์โหลดพร้อมคำศัพท์ตามหัวข้อ |
---|---|---|---|---|---|
3 รอบต่อบรรทัด | 9.2ล้าน | 508K | 406K | ดาวน์โหลด (773MB) | ดาวน์โหลด (2.5GB) |
4 รอบต่อบรรทัด | 4M | 223K | 178K | ดาวน์โหลด (442MB) | ดาวน์โหลด (1.2GB) |
5 รอบต่อบรรทัด | 1.8M | 100K | 80K | ดาวน์โหลด (242MB) | ดาวน์โหลด (594MB) |
ในไฟล์ข้อมูล แต่ละบรรทัดสอดคล้องกับการสนทนาเดียวโดยแยกคำพูดด้วย TAB คำในหัวข้อจะปรากฏขึ้นหลังคำพูดสุดท้ายโดยคั่นด้วย TAB
โปรดทราบว่าไฟล์ 3 รอบ/4 รอบ/5 รอบมีเนื้อหาคล้ายกัน แม้ว่าจำนวนเสียงต่อบรรทัดต่างกันก็ตาม ล้วนมาจากแหล่งเดียวกัน หากคุณพบข้อผิดพลาดหรือคำพูดที่ไม่เหมาะสมในข้อมูล โปรดรายงานข้อกังวลของคุณที่นี่
ในไฟล์กำหนดค่าโมเดล (เช่น ไฟล์ YAML ใน conf) ประเภทการฝังอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้: glove840B
, fastText
, word2vec
และ hub_word2vec
สำหรับการจัดการเวกเตอร์ที่ฝังไว้ล่วงหน้า เราใช้ประโยชน์จาก Pymagnitude และ Tensorflow-Hub โปรดทราบว่าคุณยังสามารถใช้ random300
ได้อีกด้วย (300 หมายถึงมิติของเวกเตอร์ที่ฝังและสามารถแทนที่ด้วยค่าใดก็ได้) เพื่อเรียนรู้เวกเตอร์ระหว่างการฝึกโมเดลการสร้างการตอบสนอง การตั้งค่าที่เกี่ยวข้องกับโมเดลการฝังมีอยู่ใน word_embeddings.yml
ควรกำหนดการกำหนดค่าการฝึกในไฟล์ YAML ที่คล้ายกับ Tensorflow NMT ตัวอย่างการกำหนดค่าสำหรับ THRED และเส้นพื้นฐานอื่นๆ มีให้ที่นี่
โมเดลที่นำไปใช้ ได้แก่ Seq2Seq, HRED, Topic Aware-Seq2Seq และ THRED
โปรดทราบว่าแม้ว่าพารามิเตอร์ส่วนใหญ่จะเหมือนกันในรุ่นต่างๆ แต่บางรุ่นอาจมีพารามิเตอร์เพิ่มเติม (เช่น โมเดลเฉพาะมีพารามิเตอร์ topic_words_per_utterance
และ boost_topic_gen_prob
)
หากต้องการฝึกโมเดล ให้รันคำสั่งต่อไปนี้:
python main.py --mode train --config < YAML_FILE >
--train_data < TRAIN_DATA > --dev_data < DEV_DATA > --test_data < TEST_DATA >
--model_dir < MODEL_DIR >
ใน
ไฟล์คำศัพท์และไฟล์โมเดล Tensorflow จะถูกจัดเก็บ สามารถดำเนินการฝึกอบรมต่อได้โดยดำเนินการ:
python main.py --mode train --model_dir < MODEL_DIR >
ด้วยคำสั่งต่อไปนี้ คุณสามารถทดสอบโมเดลกับชุดข้อมูลทดสอบได้
python main.py --mode test --model_dir < MODEL_DIR > --test_data < TEST_DATA >
สามารถแทนที่พารามิเตอร์การทดสอบระหว่างการทดสอบได้ พารามิเตอร์เหล่านี้ได้แก่: ความกว้างของลำแสง --beam_width
, น้ำหนักการปรับโทษความยาว --length_penalty_weight
และอุณหภูมิในการสุ่มตัวอย่าง --sampling_temperature
มีการนำอินเทอร์เฟซบรรทัดคำสั่งอย่างง่ายมาใช้ซึ่งช่วยให้คุณสามารถสนทนากับโมเดลที่เรียนรู้ได้ (คล้ายกับโหมดทดสอบ พารามิเตอร์การทดสอบสามารถแทนที่ได้เช่นกัน):
python main.py --mode interactive --model_dir < MODEL_DIR >
ในโหมดโต้ตอบ จำเป็นต้องใช้โมเดล LDA ที่ได้รับการฝึกอบรมล่วงหน้าเพื่อป้อนคำหัวข้อที่อนุมานลงในโมเดล เราฝึกโมเดล LDA โดยใช้ Gensim บนคลังข้อมูล Reddit ซึ่งรวบรวมไว้เพื่อจุดประสงค์นี้ สามารถดาวน์โหลดได้จากที่นี่ ไฟล์ที่ดาวน์โหลดไม่ควรถูกบีบอัดและส่งผ่านไปยังโปรแกรมผ่าน --lda_model_dir
โปรดอ้างอิงบทความต่อไปนี้หากคุณใช้งานของเราในการวิจัยของคุณ:
@article{dziri2018augmenting,
title={Augmenting Neural Response Generation with Context-Aware Topical Attention},
author={Dziri, Nouha and Kamalloo, Ehsan and Mathewson, Kory W and Zaiane, Osmar R},
journal={arXiv preprint arXiv:1811.01063},
year={2018}
}