1. ก่อนเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีอัปเดตโมเดลการจัดประเภทข้อความที่สร้างจากชุดข้อมูลความคิดเห็นสแปมในบล็อกต้นฉบับ แต่ได้รับการปรับปรุงด้วยความคิดเห็นของคุณเอง เพื่อให้คุณมีโมเดลที่ทำงานกับข้อมูลของคุณได้
ข้อกำหนดเบื้องต้น
Codelab นี้เป็นส่วนหนึ่งของเส้นทางการเริ่มต้นใช้งานการแยกประเภทข้อความในอุปกรณ์เคลื่อนที่ Codelab ในเส้นทางนี้จะเรียงตามลำดับ คุณควรสร้างแอปและโมเดลที่จะใช้ทำงานไว้ก่อนหน้านี้แล้วขณะที่ทำตามเส้นทางแรก หากยังไม่ได้ทำกิจกรรมก่อนหน้าให้เสร็จ โปรดหยุดและทำกิจกรรมให้เสร็จตอนนี้
- สร้างแอปที่มีสไตล์การรับส่งข้อความพื้นฐาน
- สร้างโมเดลแมชชีนเลิร์นนิงสำหรับสแปมในความคิดเห็น
- อัปเดตแอปเพื่อใช้โมเดลแมชชีนเลิร์นนิงสำหรับการกรองสแปม
สิ่งที่คุณจะได้เรียนรู้
- วิธีอัปเดตรูปแบบการจัดประเภทข้อความที่คุณสร้างขึ้นในเส้นทางการเริ่มต้นใช้งานการจัดประเภทข้อความบนอุปกรณ์เคลื่อนที่
- วิธีปรับแต่งโมเดลเพื่อบล็อกสแปมที่พบมากที่สุดในแอป
สิ่งที่คุณต้องมี
- แอปส่งข้อความและรูปแบบการกรองจดหมายขยะที่คุณสังเกตและสร้างขึ้นในกิจกรรมก่อนหน้า
2. ปรับปรุงการจัดประเภทข้อความ
คุณดูโค้ดสำหรับฟีเจอร์นี้ได้โดยการโคลนที่เก็บ นี้และโหลดแอปจาก TextClassificationStep2 คุณดูได้ในเส้นทาง TextClassificationOnMobile->Android
คุณยังสามารถดูโค้ดที่เสร็จสมบูรณ์ได้ที่ TextClassificationStep3
หากคุณเปิดแอปส่งข้อความที่สร้างขึ้นและลองใช้ข้อความนี้ ระบบจะให้คะแนนสแปมที่ต่ำมาก

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

3. แก้ไขไฟล์ CSV
ในการฝึกโมเดลต้นฉบับ เราได้สร้างชุดข้อมูลเป็น CSV (lmblog_comments.csv) ซึ่งมีเกือบ 1, 000 ความคิดเห็นที่ติดป้ายกำกับว่าเป็นสแปมหรือไม่ใช่สแปม (เปิด CSV ในเครื่องมือแก้ไขข้อความใดก็ได้หากต้องการตรวจสอบ)
โครงสร้างของ CSV คือให้แถวแรกอธิบายคอลัมน์ ซึ่งในที่นี้มีป้ายกำกับเป็น commenttext และ spam
แถวต่อๆ ไปทั้งหมดจะเป็นไปตามรูปแบบนี้

ป้ายกำกับทางด้านขวาเป็นจริงสำหรับจดหมายขยะ และเป็นเท็จสำหรับอีเมลที่ไม่ใช่จดหมายขยะ ในกรณีนี้ บรรทัดที่ 3 จะถือว่าเป็นสแปม
หากต้องการเพิ่มความคิดเห็นของคุณเอง เช่น หากมีผู้ส่งสแปมจำนวนมากมายังเว็บไซต์ของคุณพร้อมข้อความเกี่ยวกับการซื้อขายออนไลน์ สิ่งที่คุณต้องทำคือเพิ่มตัวอย่างความคิดเห็นที่เป็นสแปมที่ด้านล่างของเว็บไซต์ เช่น
online trading can be highly highly effective,true online trading can be highly effective,true online trading now,true online trading here,true online trading for the win,true
เมื่อเสร็จแล้ว ให้บันทึกไฟล์ด้วยชื่อใหม่ (เช่น lmblog_comments.csv) แล้วคุณจะใช้ไฟล์นี้เพื่อฝึกโมเดลใหม่ได้
สำหรับ Codelab ส่วนที่เหลือ คุณจะใช้ตัวอย่างที่ให้ไว้ ซึ่งแก้ไขและโฮสต์ใน Google Cloud Storage พร้อมข้อมูลอัปเดตการซื้อขายออนไลน์ คุณเปลี่ยน URL ในโค้ดได้หากต้องการใช้ชุดข้อมูลของคุณเอง
4. ฝึกโมเดลอีกครั้งด้วยข้อมูลใหม่
หากต้องการฝึกโมเดลอีกครั้ง คุณสามารถใช้โค้ดจากก่อนหน้านี้ซ้ำได้ (SpamCommentsModelMaker.ipynb) แต่ให้ชี้ไปที่ชุดข้อมูล CSV ใหม่ซึ่งมีชื่อว่า lmblog_comments_extras.csv หากต้องการสมุดบันทึกฉบับเต็มพร้อมเนื้อหาที่อัปเดตแล้ว คุณจะดูได้ที่ SpamCommentsUpdateModelMaker.ipynb.
หากมีสิทธิ์เข้าถึง Google Colab คุณจะเปิดใช้ Colab ได้โดยตรงจากที่นี่ หรือรับโค้ดจากที่เก็บและเรียกใช้ในสภาพแวดล้อมสมุดบันทึกที่คุณเลือก
โค้ดที่อัปเดตแล้วมีดังนี้
training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
lmblog_comments_extras.csv',
extract=False)
เมื่อฝึก คุณจะเห็นว่าโมเดลยังคงฝึกให้มีความแม่นยำสูงได้

เรียกดู Notebook เพื่อดาวน์โหลดไฟล์โมเดล vocab และป้ายกำกับ ในขั้นตอนถัดไป คุณจะผสานรวมใน Android
5. อัปเดตแอป Android
- เปิดแอปใน Android Studio และตรวจสอบว่าได้เลือก Android ที่ด้านบนของโปรเจ็กต์ Explorer แล้ว
- ค้นหาไฟล์
assetsที่มีป้ายกำกับ โมเดล และคำศัพท์จากไฟล์โมเดลเวอร์ชันเก่า

- คลิกขวาที่โฟลเดอร์เนื้อหา
- ในเมนู ให้เลือกตัวเลือกเพื่อเปิดโฟลเดอร์ด้วยโปรแกรมจัดการไฟล์ของระบบปฏิบัติการ (แสดงใน Finder บน Mac ดังที่แสดง โดยจะเป็นแสดงใน Explorer ใน Windows และเปิดใน Files หรือคล้ายกันใน Linux)

- การดำเนินการนี้จะเปิดไดเรกทอรีที่มีโมเดล คำศัพท์ และป้ายกำกับในเครื่องมือจัดการไฟล์ของระบบปฏิบัติการ คัดลอกใหม่ที่คุณสร้างไว้ในขั้นตอนก่อนหน้าทับไฟล์เหล่านี้
คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ ในโค้ดในแอป เพียงเรียกใช้และทดสอบ คุณก็จะเห็นผลลัพธ์เช่นเดียวกับด้านบน ซึ่งโมเดลได้รับการปรับปรุงให้ตรวจจับสถานการณ์ข้อความ "การซื้อขายออนไลน์" ได้
โค้ดเวอร์ชันที่เสร็จสมบูรณ์จะอยู่ในที่เก็บเป็น TextClassificationStep3
6. อัปเดตแอป iOS
คุณดูโค้ดสำหรับฟีเจอร์นี้ได้โดยการโคลนที่เก็บ นี้และโหลดแอปจาก TextClassificationStep2 คุณดูได้ในเส้นทาง TextClassificationOnMobile->Android
คุณยังสามารถดูโค้ดที่เสร็จสมบูรณ์ได้ที่ TextClassificationStep3
หากเคยทำ Codelab ก่อนหน้านี้ คุณจะมี TextClassificationStep2 เวอร์ชัน iOS ที่ใช้ได้กับโมเดลพื้นฐาน หากต้องการเริ่มต้นจากเวอร์ชันที่มีอยู่ เพียงดาวน์โหลดเวอร์ชันนั้นจากที่เก็บ โดยจะทำงานร่วมกับโมเดลแรกที่ได้รับการฝึกจากข้อมูลสแปมในความคิดเห็น และคุณอาจเห็นผลลัพธ์ดังนี้

การอัปเดตแอปเพื่อใช้โมเดลใหม่นั้นทำได้ง่ายมาก วิธีที่ง่ายที่สุดคือไปที่ File Explorer แล้วดาวน์โหลด model.tflite, vocab และ labels.txt เวอร์ชันใหม่ จากนั้นคัดลอกไปยังไดเรกทอรีโปรเจ็กต์
เมื่อดำเนินการนี้แล้ว แอปจะทำงานกับโมเดลใหม่และคุณสามารถทดลองใช้ได้ ต่อไปนี้คือตัวอย่างประโยคเดียวกัน แต่ใช้โมเดลใหม่

7. ขอแสดงความยินดี
เท่านี้ก็เรียบร้อย การฝึกโมเดลอีกครั้งด้วยข้อมูลใหม่และเพิ่มลงในแอป Android และ iOS ช่วยให้คุณอัปเดตฟังก์ชันการทำงานของแอปได้โดยไม่ต้องเขียนโค้ดใหม่
ขั้นตอนถัดไป
โมเดลนี้เป็นเพียงโมเดลทดลองที่ได้รับการฝึกโดยใช้ข้อมูลเพียง 1, 000 รายการ
ขณะสำรวจการประมวลผลภาษาธรรมชาติ คุณอาจต้องการทำงานกับชุดข้อมูลขนาดใหญ่ขึ้น นอกจากนี้ คุณยังตั้งค่าไปป์ไลน์การฝึกอย่างต่อเนื่องได้ด้วย เพื่อให้เมื่อมีข้อมูลใหม่เข้ามาและได้รับการแจ้งว่าเป็นการสแปม ระบบจะฝึกโมเดลใหม่ในแบ็กเอนด์โดยอัตโนมัติ จากนั้นจึงจะนําโมเดลนั้นไปใช้งานโดยใช้โฮสติ้งโมเดลของ Firebase
ผู้ใช้จะได้รับโมเดลที่อัปเดตแล้วอย่างราบรื่นโดยที่คุณไม่ต้องคัดลอกและวางเป็นชิ้นงาน คอมไพล์ใหม่ และแจกจ่ายอีกครั้ง นอกจากนี้ คุณยังใช้การกำหนดค่าระยะไกลของ Firebase เพื่อจัดการค่าเกณฑ์สำหรับการส่งสแปมแทนค่า 0.8 ที่ใช้อยู่ในปัจจุบันได้ด้วย
ซึ่งมีตัวเลือกมากมาย และเราจะมาดูตัวเลือกเหล่านี้ใน Codelab ในอนาคตของหลักสูตรนี้