1. ก่อนเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีอัปเดตโมเดลการจัดประเภทข้อความ ซึ่งสร้างขึ้นจากชุดข้อมูลความคิดเห็นสแปมของบล็อกแบบเดิม แล้วนำไปปรับปรุงด้วยความคิดเห็นของคุณเอง คุณจึงมีโมเดลที่ทำงานกับข้อมูลของคุณได้
ข้อกำหนดเบื้องต้น
Codelab นี้เป็นส่วนหนึ่งของเส้นทางเริ่มต้นใช้งานการแยกประเภทข้อความบนอุปกรณ์เคลื่อนที่ Codelab ในเส้นทางนี้ตามลำดับ แอปและโมเดลที่คุณจะใช้ควรสร้างขึ้นก่อนหน้านี้แล้ว ในขณะที่คุณติดตามเส้นทางแรก หากยังทำกิจกรรมก่อนหน้านี้ไม่เสร็จ โปรดหยุดและทำตอนนี้เลย
- สร้างแอปรูปแบบการรับส่งข้อความพื้นฐาน
- สร้างโมเดลแมชชีนเลิร์นนิงสำหรับสแปมความคิดเห็น
- อัปเดตแอปเพื่อใช้โมเดลแมชชีนเลิร์นนิงสำหรับการกรองสแปม
สิ่งที่คุณจะได้เรียนรู้
- วิธีอัปเดตโมเดลการจัดประเภทข้อความที่คุณสร้างไว้ในเส้นทางการเริ่มต้นใช้งานการแยกประเภทข้อความในอุปกรณ์เคลื่อนที่
- วิธีปรับแต่งโมเดลให้บล็อกสแปมที่แพร่หลายที่สุดในแอป
สิ่งที่ต้องมี
- แอปรับส่งข้อความและโมเดลการกรองสแปมที่คุณสังเกตและสร้างขึ้นในกิจกรรมก่อนหน้านี้
2. ปรับปรุงการจัดประเภทข้อความ
คุณสามารถรับโค้ดสำหรับกรณีนี้ได้โดยโคลนที่เก็บนี้ แล้วโหลดแอปจาก TextClassificationStep2
ซึ่งจะอยู่ในเส้นทาง TextClassificationOnMobile->Android
คุณยังใช้รหัสที่เสร็จสิ้นแล้วได้ด้วย TextClassificationStep3
หากคุณเปิดแอปรับส่งข้อความที่สร้างและลองใช้ข้อความนี้ คุณจะเห็นคะแนนสแปมต่ำมาก
การสะกดผิดในลักษณะนี้เป็นวิธีทั่วไปในการหลีกเลี่ยงตัวกรองจดหมายขยะ และแม้ว่าข้อความนั้นจะไม่เป็นภัย แต่นักส่งสแปมมักจะเพิ่มลิงก์ใน User ID (แทนที่จะเพิ่มลิงก์ไปยังข้อความ ซึ่งการมีลิงก์อาจทริกเกอร์ตัวกรอง)
ในห้องทดลองนี้ คุณจะเห็นวิธีอัปเดตโมเดลด้วยข้อมูลใหม่ เมื่อเสร็จแล้ว การเรียกใช้ข้อความเดียวกันจะแสดงผลลัพธ์ตามด้านล่าง ซึ่งระบุข้อความนี้ว่าเป็นจดหมายขยะ
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 คุณก็เปิดจากที่นี่ได้โดยตรง หรือรับโค้ดจากที่เก็บและเรียกใช้ในสภาพแวดล้อมของสมุดบันทึกที่ต้องการ
นี่คือโค้ดที่อัปเดตแล้ว
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)
เมื่อฝึก คุณควรเห็นว่าโมเดลจะยังคงฝึกให้มีความถูกต้องอยู่ในระดับสูงต่อไป
ไปที่สมุดบันทึกเพื่อดาวน์โหลดไฟล์ model, vocab และ labels ในขั้นตอนถัดไป คุณจะต้องผสานรวมแอปกับ Android
5. อัปเดตแอป Android
- เปิดแอปใน Android Studio แล้วตรวจสอบว่าได้เลือก Android ที่ด้านบนของเครื่องมือสำรวจโปรเจ็กต์
- ค้นหาไฟล์
assets
ที่มีป้ายกำกับ โมเดล และคำศัพท์จากไฟล์โมเดลเวอร์ชันเก่า
- คลิกขวาที่โฟลเดอร์เนื้อหา
- ในเมนู ให้เลือกตัวเลือกเพื่อเปิดโฟลเดอร์ด้วยโปรแกรมจัดการไฟล์ของระบบปฏิบัติการ (เปิดเผยใน Finder บน Mac ตามที่แสดง ซึ่งจะแสดงใน Explorer บน Windows และเปิดใน Files หรือที่คล้ายกันใน Linux)
- ซึ่งจะเป็นการเปิดไดเรกทอรีที่มีโมเดล คำศัพท์ และป้ายกำกับในโปรแกรมจัดการไฟล์ของระบบปฏิบัติการ คัดลอกคอลัมน์ใหม่ที่คุณสร้างไว้ในขั้นตอนก่อนหน้าทับรายการเหล่านี้
คุณไม่จําเป็นต้องทําการเปลี่ยนแปลงใดๆ กับโค้ดในแอป เรียกใช้และทดสอบ แล้วคุณจะเห็นผลลัพธ์เช่นเดียวกับข้างต้น ซึ่งมีการปรับปรุงรูปแบบเพื่อตรวจหา "การซื้อขายออนไลน์" สถานการณ์ข้อความ
โค้ดเวอร์ชันที่เสร็จแล้วจะอยู่ในที่เก็บเป็น TextClassificationStep3
6. อัปเดตแอป iOS ของคุณ
คุณสามารถรับโค้ดสำหรับกรณีนี้ได้โดยโคลนที่เก็บนี้ แล้วโหลดแอปจาก TextClassificationStep2
ซึ่งจะอยู่ในเส้นทาง TextClassificationOnMobile->Android
คุณยังใช้รหัสที่เสร็จสิ้นแล้วได้ด้วย TextClassificationStep3
หากคุณทำงานผ่าน Codelab ก่อนหน้านี้ คุณจะมี TextClassificationStep2 เวอร์ชัน iOS ที่ใช้งานได้กับโมเดลฐาน หากคุณต้องการเริ่มต้นจากเวอร์ชันที่มีอยู่ ก็เลือกเวอร์ชันนั้นจากที่เก็บได้เลย โดยจะทำงานกับโมเดลแรกที่ได้รับการฝึกเกี่ยวกับข้อมูลสแปมความคิดเห็น และคุณอาจเห็นผลลัพธ์ดังนี้
การอัปเดตแอปเพื่อใช้โมเดลใหม่เป็นเรื่องง่ายมาก วิธีที่ง่ายที่สุดคือไปที่โปรแกรมสำรวจไฟล์ รับ model.tflite
, vocab
และ labels.txt
เวอร์ชันใหม่ แล้วคัดลอกไปยังไดเรกทอรีโปรเจ็กต์
เมื่อทำเสร็จแล้ว แอปของคุณจะทำงานร่วมกับรูปแบบใหม่ได้ และคุณลองใช้งานดูได้เลย ต่อไปนี้เป็นตัวอย่างของประโยคเดียวกัน แต่ใช้รูปแบบใหม่
7. ขอแสดงความยินดี
เท่านี้ก็เรียบร้อย การฝึกโมเดลอีกครั้งด้วยข้อมูลใหม่และการเพิ่มลงในทั้งแอป Android และ iOS ทำให้คุณสามารถอัปเดตฟังก์ชันการทำงานของโมเดลได้โดยไม่ต้องเขียนโค้ดใหม่
ขั้นตอนถัดไป
โมเดลนี้เป็นเพียงของเล่นที่ผ่านการฝึกกับข้อมูลเพียง 1, 000 รายการ
ขณะสำรวจการประมวลผลภาษาธรรมชาติ คุณอาจต้องทำงานกับชุดข้อมูลที่ใหญ่ขึ้น นอกจากนี้ คุณยังสามารถตั้งค่าไปป์ไลน์การฝึกอย่างต่อเนื่อง เพื่อให้เมื่อมีข้อมูลใหม่เข้ามาและถูกแจ้งว่าเป็นสแปม ข้อมูลนั้นจะฝึกโมเดลอีกครั้งโดยอัตโนมัติบนแบ็กเอนด์ แล้วทำให้โมเดลนั้นใช้งานได้โดยใช้โฮสติ้งโมเดลของ Firebase
ผู้ใช้จะใช้โมเดลที่อัปเดตได้อย่างราบรื่นโดยที่คุณไม่จำเป็นต้องคัดลอกและวางโมเดลเป็นชิ้นงาน ทำการคอมไพล์ซ้ำ และแจกจ่ายซ้ำ ตัวอย่างเช่น คุณอาจใช้การกำหนดค่าระยะไกลของ Firebase เพื่อจัดการค่าเกณฑ์สำหรับการส่งจดหมายขยะแทนค่า 0.8 ที่มีอยู่
มีความเป็นไปได้มากมาย และเราจะสำรวจสิ่งเหล่านี้ใน Codelab ในอนาคตในหลักสูตรนี้