การวิเคราะห์ความเชื่อมั่นที่ดีขึ้นด้วย BERT

ลองนึกภาพคุณมีบอตตอบลูกค้าของคุณและคุณต้องการทำให้มันฟังดูเป็นธรรมชาติมากขึ้นและเป็นมนุษย์มากขึ้น

ภาพถ่ายโดย Hybrid บน Unsplash

เพื่อให้บรรลุนั้นคุณต้องทำให้คำตอบเป็นแบบส่วนบุคคลมากขึ้น วิธีหนึ่งในการเรียนรู้เพิ่มเติมเกี่ยวกับลูกค้าที่คุณกำลังพูดถึงคือการวิเคราะห์ขั้วของคำตอบ โดยขั้วที่นี่ฉันหมายถึงการตรวจสอบว่าประโยค (หรือกลุ่มของประโยค) เขียนด้วยความตั้งใจที่จะถูกมองว่าเป็นคำสั่งบวกหรือเชิงลบ ซึ่งหมายความว่าเรากำลังประสบปัญหาการจำแนกเลขฐานสอง มีวิธีการมากมายในการแก้ปัญหา NLP นี้ ฉันทดสอบบางอันและอันที่ดีกว่าจริง ๆ คือ BERT

ภาพรวม BERT

BERT (Bidirectionnal Encoder Representations สำหรับ Transformers) เป็น "วิธีการใหม่ในการฝึกอบรมภาษาแทน" ที่พัฒนาโดย Google และวางจำหน่ายในปลายปี 2018 (คุณสามารถอ่านเพิ่มเติมได้ที่นี่) เนื่องจากได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับชุดข้อมูลทั่วไป (จาก Wikipedia และ BooksCorpus) จึงสามารถใช้เพื่อแก้ปัญหา NLP ที่แตกต่างกันได้ ซึ่งรวมถึงการจำแนกระดับประโยค (เช่นที่เราทำที่นี่) การตอบคำถามหรือการจำแนกระดับโทเค็น (เช่นส่วนหนึ่งของการติดแท็กคำพูด) และ BERT สามารถบรรลุการแสดงที่ทันสมัยในงานเหล่านี้หลายอย่าง

สถาปัตยกรรม BERT เมื่อเทียบกับรุ่นสุดล้ำอีกสองรุ่น (ที่มา: Devlin et al.)

ในทางปฏิบัติ BERT มีโมเดลภาษาที่ผ่านการฝึกอบรมมาแล้วสำหรับภาษาอังกฤษและอีก 103 ภาษาที่คุณสามารถปรับแต่งให้เหมาะกับความต้องการของคุณ ที่นี่เราจะดูวิธีการปรับรูปแบบภาษาอังกฤษเพื่อทำการวิเคราะห์ความเชื่อมั่น

ปรับจูนด้วย BERT

BERT เพิ่งจัดทำสมุดบันทึกการสอนใน Python เพื่อแสดงวิธีการตรวจสอบความเชื่อมั่นในบทวิจารณ์ภาพยนตร์ สมุดบันทึกการสอนทำออกมาได้ดีและชัดเจนดังนั้นฉันจะไม่อ่านรายละเอียด - นี่เป็นเพียงความคิดเล็ก ๆ น้อย ๆ ก่อนอื่นโน้ตบุ๊กจะใช้ชุดข้อมูล IMDb ซึ่งสามารถดาวน์โหลดได้โดยตรงจาก Keras ชุดข้อมูลนี้มีบทวิจารณ์ภาพยนตร์ 50000 บทแบ่งออกเป็นสองส่วนเท่ากันหนึ่งชุดสำหรับการฝึกอบรมและอีกชุดสำหรับการทดสอบ ชุดข้อมูลแต่ละชุดมีความสมดุลโดยมีบทวิจารณ์เชิงบวก 12500 ข้อและความคิดเห็นเชิงลบ 12500 ข้อ

ตัวอย่างบทวิจารณ์จากชุดข้อมูล IMDb การใส่ขั้วให้เป็นศูนย์หมายความว่าประโยคนั้นแสดงออกถึงความรู้สึกด้านลบในขณะที่คนหนึ่งหมายความว่ามันเป็นบวก

ในการปรับแต่งพวกเขาใช้เลเยอร์ใหม่และ softmax ที่ด้านบนของรุ่นที่ผ่านการฝึกอบรมมาแล้ว แต่คุณสามารถปรับแต่งได้ มันใช้โครงสร้างการประมาณค่า Tensorflow ในการฝึกอบรมและคาดการณ์ผลลัพธ์และพวกเขาต้องการฟังก์ชั่นบางอย่างเช่น run_config หรือ model_fn ไม่ว่าจะเป็นรหัสในสมุดบันทึกหรือนำเข้าจากไฟล์ run_classifier.py ใน GitHub ดังนั้นคุณไม่ต้องกังวลกับมัน .

การประเมินรูปแบบ

เพื่อดูว่า BERT ทำงานได้ดีแค่ไหนฉันเปรียบเทียบมันกับรุ่นอื่นอีกสองรุ่น อันแรกคือการถดถอยโลจิสติกกับ vectorization TF-IDF อันที่สองได้รับแรงบันดาลใจจาก Rezaeinia และคณะ (คอมไพล์) มันใช้งานแต่งงาน Word2Vec พร้อมกับส่วนหนึ่งของการติดแท็กคำพูดและผ่านการต่อข้อมูลทั้งสองเข้าสู่เครือข่าย 1D

ถึงแม้ว่าการถดถอยของโลจิสติกจะทำงานได้ดีอย่างน่าประหลาดใจ แต่มีประสิทธิภาพเหนือกว่าแบบจำลองระบบประสาท แต่ BERT ก็ให้คะแนนที่ดีกว่า นอกจากนี้ผลลัพธ์ BERT ยังปรับปรุงอย่างมีนัยสำคัญเมื่อโมเดลได้รับการฝึกอบรมบนชุดข้อมูลขนาดใหญ่ สิ่งที่อาจเป็นข้อเสียเปรียบก็คือมันต้องใช้เวลาค่อนข้างนานในการฝึกฝนแม้แต่กับ GPU การถดถอยโลจิสติกจะเสร็จสิ้นการฝึกอบรมภายในไม่กี่วินาทีเมื่อ BERT ต้องการประมาณ 20 นาทีในการทำเช่นนั้น (ด้วย GPU และความคิดเห็นการฝึกอบรม 25,000 ครั้ง)

ผลลัพธ์ของรุ่นต่าง ๆ

เสิร์ฟพร้อม Docker และ Tensorflow

เมื่อคุณบันทึกโมเดลของคุณเป็น save_model.pb (ได้รับตัวอย่างด้วยเมธอด export_savedmodel) คุณสามารถตั้งค่าเซิร์ฟเวอร์ซึ่งจะรันโมเดลและทำการคาดการณ์ อันดับแรกเราสร้างคอนเทนเนอร์ Docker จากการให้บริการของ tenorflow (คุณจะต้องติดตั้ง Docker ก่อน) และเราเพิ่มโมเดลของเราลงไป Model_en ควรเป็นโฟลเดอร์ที่มีโฟลเดอร์ชื่อ 1 (จำเป็นสำหรับ tensorflow) ซึ่งตัวมันเองมีรูปแบบที่คุณส่งออก นี่คือความสำเร็จโดยบรรทัดคำสั่งด้านล่าง

จากนั้นเราเขียนไคลเอนต์อย่างง่ายซึ่งจะใช้ประโยคเป็นอินพุตแปลงมันให้เป็นคุณสมบัติอินพุต BERT (เหมือนในสมุดบันทึกการสอน) และเรียกใช้คอนเทนเนอร์นักเทียบท่าซึ่งจะทำการคาดคะเน คุณสามารถเปลี่ยนลูกค้าให้กลายเป็น API อย่างง่ายโดยใช้ Flask รหัสไพ ธ อนด้านล่างแสดงขั้นตอนต่าง ๆ เหล่านั้น

จากนั้นคุณสามารถคาดการณ์ได้โดยส่งคำขอสตริงโดยใช้บุรุษไปรษณีย์

Voila! ตอนนี้คุณพร้อมที่จะทำการวิเคราะห์ความเชื่อมั่นด้วย BERT แล้วและใช้ในแอปพลิเคชันที่ใช้งานจริง