สร้างโมเดลการจัดประเภทข้อความแบบกำหนดเองและอัปเดตแอปโดยใช้โมเดลดังกล่าว

1. ก่อนเริ่มต้น

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

ข้อกำหนดเบื้องต้น

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

  • สร้างแอปรูปแบบการรับส่งข้อความพื้นฐาน
  • สร้างโมเดลแมชชีนเลิร์นนิงสำหรับสแปมความคิดเห็น
  • อัปเดตแอปเพื่อใช้โมเดลแมชชีนเลิร์นนิงสำหรับการกรองสแปม

สิ่งที่คุณจะได้เรียนรู้

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

สิ่งที่ต้องมี

  • แอปรับส่งข้อความและโมเดลการกรองสแปมที่คุณสังเกตและสร้างขึ้นในกิจกรรมก่อนหน้านี้

2. ปรับปรุงการจัดประเภทข้อความ

คุณสามารถรับโค้ดสำหรับกรณีนี้ได้โดยโคลนที่เก็บนี้ แล้วโหลดแอปจาก TextClassificationStep2 ซึ่งจะอยู่ในเส้นทาง TextClassificationOnMobile->Android

คุณยังใช้รหัสที่เสร็จสิ้นแล้วได้ด้วย TextClassificationStep3

หากคุณเปิดแอปรับส่งข้อความที่สร้างและลองใช้ข้อความนี้ คุณจะเห็นคะแนนสแปมต่ำมาก

f111e21903d6fd1f.png

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

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

c96613a0a4d1fef0.png

3. แก้ไขไฟล์ CSV

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

CSV ประกอบด้วยแถวแรกที่อธิบายคอลัมน์ต่างๆ โดยมีป้ายกำกับคือ commenttext และ spam

แถวต่อๆ มาทั้งหมดจะมีรูปแบบดังนี้

64c0128548e1d082.png

ป้ายกำกับทางขวาเป็นค่าจริงสำหรับสแปม และเท็จหากไม่ใช่สแปม ในกรณีนี้ บรรทัดที่ 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 คุณก็เปิดจากที่นี่ได้โดยตรง หรือรับโค้ดจากที่เก็บและเรียกใช้ในสภาพแวดล้อมของสมุดบันทึกที่ต้องการ

นี่คือโค้ดที่อัปเดตแล้ว

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)

เมื่อฝึก คุณควรเห็นว่าโมเดลจะยังคงฝึกให้มีความถูกต้องอยู่ในระดับสูงต่อไป

8886033d1f8161c.png

ไปที่สมุดบันทึกเพื่อดาวน์โหลดไฟล์ model, vocab และ labels ในขั้นตอนถัดไป คุณจะต้องผสานรวมแอปกับ Android

5. อัปเดตแอป Android

  1. เปิดแอปใน Android Studio แล้วตรวจสอบว่าได้เลือก Android ที่ด้านบนของเครื่องมือสำรวจโปรเจ็กต์
  2. ค้นหาไฟล์ assets ที่มีป้ายกำกับ โมเดล และคำศัพท์จากไฟล์โมเดลเวอร์ชันเก่า

91116524e9016ed4.png

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

25f63f9629657e85.png

  1. ซึ่งจะเป็นการเปิดไดเรกทอรีที่มีโมเดล คำศัพท์ และป้ายกำกับในโปรแกรมจัดการไฟล์ของระบบปฏิบัติการ คัดลอกคอลัมน์ใหม่ที่คุณสร้างไว้ในขั้นตอนก่อนหน้าทับรายการเหล่านี้

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

โค้ดเวอร์ชันที่เสร็จแล้วจะอยู่ในที่เก็บเป็น TextClassificationStep3

6. อัปเดตแอป iOS ของคุณ

คุณสามารถรับโค้ดสำหรับกรณีนี้ได้โดยโคลนที่เก็บนี้ แล้วโหลดแอปจาก TextClassificationStep2 ซึ่งจะอยู่ในเส้นทาง TextClassificationOnMobile->Android

คุณยังใช้รหัสที่เสร็จสิ้นแล้วได้ด้วย TextClassificationStep3

หากคุณทำงานผ่าน Codelab ก่อนหน้านี้ คุณจะมี TextClassificationStep2 เวอร์ชัน iOS ที่ใช้งานได้กับโมเดลฐาน หากคุณต้องการเริ่มต้นจากเวอร์ชันที่มีอยู่ ก็เลือกเวอร์ชันนั้นจากที่เก็บได้เลย โดยจะทำงานกับโมเดลแรกที่ได้รับการฝึกเกี่ยวกับข้อมูลสแปมความคิดเห็น และคุณอาจเห็นผลลัพธ์ดังนี้

553b845565b5b822.png

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

เมื่อทำเสร็จแล้ว แอปของคุณจะทำงานร่วมกับรูปแบบใหม่ได้ และคุณลองใช้งานดูได้เลย ต่อไปนี้เป็นตัวอย่างของประโยคเดียวกัน แต่ใช้รูปแบบใหม่

9031ec260b1857a3.png

7. ขอแสดงความยินดี

เท่านี้ก็เรียบร้อย การฝึกโมเดลอีกครั้งด้วยข้อมูลใหม่และการเพิ่มลงในทั้งแอป Android และ iOS ทำให้คุณสามารถอัปเดตฟังก์ชันการทำงานของโมเดลได้โดยไม่ต้องเขียนโค้ดใหม่

ขั้นตอนถัดไป

โมเดลนี้เป็นเพียงของเล่นที่ผ่านการฝึกกับข้อมูลเพียง 1, 000 รายการ

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

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

มีความเป็นไปได้มากมาย และเราจะสำรวจสิ่งเหล่านี้ใน Codelab ในอนาคตในหลักสูตรนี้