[Brendan Shillingford, Yannis Assael, Chris Dyer]
สำหรับการปฏิบัตินี้คุณจะได้รับสมุดบันทึก Ipython ที่สมบูรณ์บางส่วนซึ่งเป็นสภาพแวดล้อมการคำนวณ Python บนเว็บแบบโต้ตอบที่ช่วยให้เราสามารถผสมข้อความรหัสและแปลงแบบโต้ตอบ
เราจะได้รับการฝึกอบรมโมเดล Word2vec ในข้อมูล TED Talk และ Wikipedia โดยใช้การใช้งาน Word2vec ที่รวมอยู่ในแพ็คเกจ Python gensim หลังจากฝึกอบรมแบบจำลองเราจะวิเคราะห์และแสดงภาพการฝังตัวที่เรียนรู้
บนเวิร์กสเตชันห้องปฏิบัติการโคลนที่เก็บที่ใช้งานได้จริงและเรียก . install-python.sh เชลล์สคริปต์ในเทอร์มินัลเพื่อติดตั้ง Anaconda ด้วย Python 3 และแพ็คเกจที่จำเป็นสำหรับการใช้งานจริง
เรียกใช้ ipython notebook ในไดเรกทอรีที่เก็บและเปิดสมุดบันทึก practical.ipynb ในเบราว์เซอร์ของคุณ
รหัสสำหรับการดาวน์โหลดชุดข้อมูลและการประมวลผลล่วงหน้าเป็นการเขียนล่วงหน้าเพื่อประหยัดเวลา อย่างไรก็ตามคาดว่าคุณจะต้องทำงานดังกล่าวในการปฏิบัติในอนาคตโดยให้ข้อมูลดิบ อ่านและตรวจสอบให้แน่ใจว่าคุณเข้าใจ บ่อยครั้งที่หนึ่งใช้ไลบรารีเช่น nltk เพื่อทำให้งานนี้ง่ายขึ้น แต่เรายังไม่ได้ทำที่นี่และเลือกที่จะใช้นิพจน์ทั่วไปผ่านโมดูล re ของ Python
ทำรายการคำที่พบบ่อยที่สุดและจำนวนการเกิดขึ้นของพวกเขา ลองดูที่ 40 คำบน คุณอาจต้องการใช้ sklearn.feature_extraction.text Module Module ของคลาส CountVectorizer หรือคลาส Counter ของโมดูล collections
ใช้คำ 1,000 คำบนและพล็อตฮิสโตแกรมของจำนวนของพวกเขา รหัสการพล็อตสำหรับฮิสโตแกรมแบบโต้ตอบได้รับในสมุดบันทึกแล้ว
Handin: แสดงฮิสโตแกรมการกระจายความถี่
ตอนนี้เรามีรายการประโยคที่ประมวลผลแล้วมาฝึกอบรม Word2vec เริ่มต้นด้วยการอ่านเอกสาร Gensim สำหรับ Word2vec ที่ https://radimrehurek.com/gensim/models/word2vec.html เพื่อหาวิธีใช้คลาส Word2Vec เรียนรู้การฝังใน min_count=10 เพื่อให้คำไม่บ่อยถูกละเว้น กระบวนการฝึกอบรมควรใช้เวลาไม่ถึงครึ่งนาที
หากอินสแตนซ์ Word2Vec ที่ผ่านการฝึกอบรมของคุณเรียกว่า model_ted คุณควรจะสามารถตรวจสอบขนาดคำศัพท์โดยใช้ len(model_ted.vocab) ซึ่งควรจะอยู่ที่ประมาณ 14427 ลองใช้วิธี most_similar() เพื่อส่งคืนรายการคำที่คล้ายกันมากที่สุดกับ "man" และ "คอมพิวเตอร์"
HANDIN: ค้นหาคำอีกสองสามคำที่น่าสนใจและ/หรือน่าประหลาดใจเพื่อนบ้านที่ใกล้ที่สุด
HANDIN: ค้นหาคลัสเตอร์ที่น่าสนใจในพล็อต T-SNE
ทางเลือกสำหรับนักเรียนที่กระตือรือร้น: ลองดึงเวกเตอร์สองคำด้วยตนเองโดยใช้ตัวดำเนินการจัดทำดัชนีตามที่อธิบายไว้ในเอกสารของ Gensim จากนั้นคอมพิวเตอร์ระยะทางโคไซน์ของพวกเขา (จำได้ว่ามันถูกกำหนดเป็น np.dot() และ np.linalg.norm() ดูเอกสาร NumPy สำหรับรายละเอียด เปรียบเทียบสิ่งนี้กับระยะทางที่คำนวณโดยฟังก์ชั่นของ Gensim
เราได้ให้รหัสการดาวน์โหลด/ประมวลผลล่วงหน้า (คล้ายกับรหัสก่อนหน้า) สำหรับชุดข้อมูล Wikitext-2 รหัสใช้ตัวอย่างย่อยแบบสุ่มของข้อมูลดังนั้นจึงเทียบได้กับขนาดกับข้อมูล TED Talk
ทำซ้ำการวิเคราะห์เดียวกันข้างต้น แต่ในชุดข้อมูลนี้
HANDIN: ค้นหาคำสองสามคำที่มีเพื่อนบ้านที่ใกล้ที่สุดใกล้เคียงกัน
HANDIN: ค้นหาคลัสเตอร์ที่น่าสนใจในพล็อต T-SNE
HANDIN: มีความแตกต่างที่น่าสังเกตระหว่างการฝังข้อมูลที่เรียนรู้จากข้อมูลเมื่อเทียบกับที่เรียนรู้เกี่ยวกับข้อมูล TED Talk หรือไม่?
หากคุณมีเวลาเพิ่มเติมลองดำเนินการจัดกลุ่ม k-mean (เช่นการใช้ sklearn.cluster.kmeans ) บน embeddings ปรับจำนวนกลุ่มจนกว่าคุณจะได้รับกลุ่มที่น่าสนใจหรือมีความหมาย
ดูชิ้นส่วน " Handin: " ที่เป็นตัวหนา: "ด้านบน บนกระดาษหรือด้วยวาจาแสดงการสาธิตการตอบสนองของคุณต่อสิ่งเหล่านี้เพื่อลงชื่อออก