1. ข้อควรทราบก่อนที่จะเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีอัปเดตโมเดลการจัดประเภทข้อความที่สร้างจากชุดข้อมูลเดิมของบล็อกสแปม แต่มีการปรับปรุงด้วยความคิดเห็นของคุณเองเพื่อให้โมเดลใช้งานได้กับข้อมูล
สิ่งที่ต้องมีก่อน
Codelab นี้เป็นส่วนหนึ่งของเริ่มต้นใช้งานการแยกประเภทข้อความในเส้นทางแอป Flwer Codelab ในเส้นทางนี้ตามลําดับ โดยแอปและโมเดลที่คุณจะใช้ก่อนหน้านี้ควรได้รับการสร้างขึ้น ขณะที่คุณกําลังติดตามโค้ด Codelab หากยังไม่ได้ทํากิจกรรมก่อนหน้าให้เสร็จ โปรดหยุดดําเนินการตอนนี้เลย
- ฝึกโมเดลการตรวจจับสแปมความคิดเห็นด้วย Codelab การประมาณโมเดล TensorFlow Lite
- สร้างแอป Flitter เพื่อตรวจหาโค้ดสแปมในความคิดเห็น
สิ่งที่คุณจะได้เรียนรู้
- วิธีอัปเดตโมเดลการจัดประเภทข้อความที่คุณสร้างในฝึกโมเดลการตรวจจับสแปมด้วย TensorFlow Lite Model Maker Codelab
- วิธีปรับแต่งโมเดลเพื่อให้บล็อกสแปมซึ่งพบได้บ่อยที่สุดในแอป
สิ่งที่ต้องมี
- แอป Flitter และโมเดลตัวกรองจดหมายขยะที่คุณสังเกตเห็นและสร้างในกิจกรรมก่อนหน้า
2. เพิ่มประสิทธิภาพการจัดประเภทข้อความ
- คุณรับโค้ดสําหรับโค้ดนี้ได้โดยการโคลนที่เก็บนี้และโหลดแอปจากโฟลเดอร์
tfserving-flutter/codelab2/finished
- หลังจากเริ่มรูปภาพ TensorFlow Kiosk ที่สร้างไว้ ให้ป้อน
buy my book to learn online trading
แล้วคลิก gRPC > จัดประเภท ในแอปที่คุณสร้าง
แอปนี้สร้างคะแนนสแปมต่ํา เนื่องจากมีการซื้อขายออนไลน์ในชุดข้อมูลต้นฉบับเกิดขึ้นเป็นจํานวนมากและโมเดลยังไม่ทราบว่าสแปมดังกล่าว ใน Codelab นี้ คุณจะอัปเดตโมเดลด้วยข้อมูลใหม่ เพื่อให้โมเดลระบุประโยคเดียวกันกับสแปมได้
3. แก้ไขไฟล์ CSV
หากต้องการฝึกโมเดลต้นฉบับ ชุดข้อมูลเป็น CSV (lmblog_comments.csv
) ที่มีความคิดเห็นหลายพันรายการที่มีป้ายกํากับว่าเป็นสแปม ไม่ใช่สแปม (เปิด CSV ในเครื่องมือแก้ไขข้อความที่ต้องการตรวจสอบ)
องค์ประกอบของไฟล์ CSV คือมีแถวแรกที่อธิบายคอลัมน์ซึ่งติดป้ายกํากับว่า commenttext
และ spam
แถวที่ตามมาทั้งหมดจะมีรูปแบบดังนี้
ป้ายกํากับทางด้านขวาจะกําหนดค่า true
ให้กับจดหมายขยะ และค่า false
สําหรับจดหมายขยะ ตัวอย่างเช่น บรรทัดที่สามถือเป็นสแปม
หากมีคนสแปมเว็บไซต์ด้วยข้อความเกี่ยวกับการซื้อขายออนไลน์ คุณสามารถเพิ่มตัวอย่างความคิดเห็นที่เป็นสแปมที่ด้านล่างของเว็บไซต์ได้ เช่น
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 นี้ทั้งหมด คุณสามารถใช้ตัวอย่างที่ให้ไว้ แก้ไข และโฮสต์บน Cloud Storage ที่มีการอัปเดตการซื้อขายออนไลน์ หากต้องการใช้ชุดข้อมูลของคุณเอง คุณสามารถเปลี่ยน URL ในโค้ดได้
4. ฝึกโมเดลใหม่ด้วยข้อมูลใหม่
หากต้องการฝึกโมเดลใหม่ คุณก็เพียงแค่นําโค้ดจาก (SpamCommentsModelMaker.ipynb
) มาใช้ซ้ํา แต่ชี้ที่ชุดข้อมูล CSV ใหม่ซึ่งเรียกว่า lmblog_comments_extras.csv
หากคุณต้องการสมุดบันทึกฉบับเต็มที่มีเนื้อหาที่อัปเดตแล้ว คุณจะดูได้ใน SpamCommentsUpdateModelMaker.ipynb.
หากมีสิทธิ์เข้าถึง Colaboratory คุณจะเปิดโปรแกรมได้โดยตรง หากได้รับรหัสจากที่เก็บ ให้เรียกใช้ในสภาพแวดล้อมของสมุดบันทึกที่ต้องการ
โค้ดที่อัปเดตมีลักษณะเหมือนข้อมูลโค้ดนี้
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)
เมื่อฝึกแล้ว คุณควรทราบว่าโมเดลยังคงฝึกด้วยความแม่นยําระดับสูง ดังนี้
บีบอัดทั้งโฟลเดอร์ /mm_update_spam_savedmodel
และเลื่อนลงเป็นไฟล์ mm_update_spam_savedmodel.zip
ที่สร้างขึ้น
# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/
5. เริ่มต้น Docker และอัปเดตแอป Flwer
- แตกไฟล์
mm_update_spam_savedmodel.zip
ที่ดาวน์โหลดลงในโฟลเดอร์ จากนั้นหยุดอินสแตนซ์คอนเทนเนอร์ของ Docker จาก Codelab ก่อนหน้า แล้วเริ่มอีกครั้ง แต่แทนที่ตัวยึดตําแหน่งPATH/TO/UPDATE/SAVEDMODEL
ด้วยเส้นทางสัมบูรณ์ของโฟลเดอร์ที่โฮสต์ไฟล์ที่ดาวน์โหลด
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
- เปิดไฟล์
lib/main.dart
ด้วยตัวแก้ไขโค้ดที่คุณชื่นชอบ แล้วหาส่วนที่กําหนดตัวแปรinputTensorName
และoutTensorName
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- กําหนดตัวแปร
inputTensorName
เป็นค่า "input_1'
" อีกครั้ง และตัวแปรoutputTensorName
เป็นค่า'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- คัดลอกไฟล์
vocab.txt
ที่ดาวน์โหลดไปยังโฟลเดอร์lib/assets/
เพื่อแทนที่ไฟล์ที่มีอยู่ - นําแอปการจัดประเภทข้อความด้วยตนเองออกจากโปรแกรมจําลอง Android
- เรียกใช้คําสั่ง
'flutter run'
ในเทอร์มินัลเพื่อเปิดแอป - ป้อน
buy my book to learn online trading
แล้วคลิก gRPC > Classify ในแอป
ตอนนี้โมเดลได้ปรับปรุงให้ตรวจจับการซื้อหนังสือของฉันกับการซื้อขายออนไลน์ว่าเป็นสแปม
6. ยินดีด้วย
คุณได้ฝึกโมเดลใหม่ด้วยข้อมูลใหม่ ผสานรวมโมเดลดังกล่าวกับแอป Flใช้งาน และอัปเดตฟังก์ชันการทํางานเพื่อตรวจจับประโยคสแปมใหม่