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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ พ.ค. 17, 2021
account_circleเขียนโดย Laurence Moroney

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 ในอนาคตในหลักสูตรนี้