งานตัวแยกประเภทข้อความทำให้คุณสามารถ จัดประเภทข้อความเป็นชุดหมวดหมู่ที่กำหนดไว้ เช่น ความรู้สึกเชิงบวกหรือเชิงลบ หมวดหมู่จะถูกกำหนดตาม โมเดลที่คุณใช้และการฝึกโมเดลนั้น วิธีการเหล่านี้จะแสดง วิธีใช้ตัวแยกประเภทข้อความในแอป iOS ตัวอย่างโค้ดที่อธิบายไว้ใน คำแนะนำอยู่ที่ GitHub
คุณสามารถดูการทำงานนี้ได้โดยดูที่ เว็บ การสาธิต สำหรับ เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับความสามารถ โมเดล และตัวเลือกการกำหนดค่า งานนี้ ดู ภาพรวม
ตัวอย่างโค้ด
โค้ดตัวอย่างงาน MediaPipe คือการใช้งานพื้นฐานของตัวแยกประเภทข้อความ สำหรับ iOS
คุณสามารถใช้แอปนี้เป็นจุดเริ่มต้นสำหรับแอป iOS ของคุณเอง หรืออ้างอิงถึงแอป เมื่อแก้ไขแอปที่มีอยู่ คุณสามารถดูโค้ดตัวอย่างของตัวแยกประเภทข้อความ ในวันที่ GitHub
ดาวน์โหลดโค้ด
วิธีการต่อไปนี้แสดงวิธีสร้างสำเนาตัวอย่างในเครื่อง โดยใช้เครื่องมือบรรทัดคำสั่ง git
วิธีดาวน์โหลดโค้ดตัวอย่าง
โคลนที่เก็บ Git โดยใช้คำสั่งต่อไปนี้
git clone https://github.com/google-ai-edge/mediapipe-samples
นอกจากนี้ คุณสามารถกำหนดค่าอินสแตนซ์ Git ให้ใช้การชำระเงินแบบกระจัดกระจายเพื่อให้คุณมี เฉพาะไฟล์สำหรับแอปตัวอย่างตัวแยกประเภทข้อความเท่านั้น
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_classification/ios/
หลังจากสร้างโค้ดตัวอย่างในเวอร์ชันในเครื่องแล้ว คุณสามารถติดตั้ง ไลบรารีงาน MediaPipe เปิดโปรเจ็กต์โดยใช้ Xcode และเรียกใช้แอป สำหรับ โปรดดูวิธีการในคู่มือการการตั้งค่าสำหรับ iOS
องค์ประกอบสำคัญ
ไฟล์ต่อไปนี้มีโค้ดที่สำคัญสำหรับตัวอย่างตัวแยกประเภทข้อความ แอปพลิเคชัน:
- TextClassifierHelper.swift: เริ่มตัวแยกประเภทข้อความและจัดการการเลือกโมเดล
- ViewController.swift: ใช้ UI และจัดรูปแบบผลลัพธ์
ตั้งค่า
ส่วนนี้จะอธิบายขั้นตอนสำคัญในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ และ เพื่อใช้ตัวแยกประเภทข้อความ สำหรับข้อมูลทั่วไปเกี่ยวกับการตั้งค่า สภาพแวดล้อมในการพัฒนาซอฟต์แวร์สำหรับการใช้งาน MediaPipe ซึ่งรวมถึงเวอร์ชันแพลตฟอร์ม โปรดดูคู่มือการตั้งค่าสำหรับ iOS
การอ้างอิง
ตัวแยกประเภทข้อความใช้ไลบรารี MediaPipeTasksText
ซึ่งต้องติดตั้ง
ด้วยการใช้ CocoaPods ไลบรารีใช้งานได้ทั้งกับแอป Swift และ Objective-C
และไม่จำเป็นต้องมีการตั้งค่าเฉพาะภาษาใดๆ เพิ่มเติม
ดูวิธีการติดตั้ง CocoaPods ใน macOS ได้ที่ CocoaPods
คู่มือการติดตั้ง
หากต้องการทราบวิธีการสร้าง Podfile
ด้วยพ็อดที่จำเป็นสำหรับ
โปรดดูที่การใช้
CocoaPods
เพิ่มพ็อด MediaPipeTasksText ใน Podfile
โดยใช้โค้ดต่อไปนี้
target 'MyTextClassifierApp' do
use_frameworks!
pod 'MediaPipeTasksText'
end
หากแอปของคุณมีเป้าหมายการทดสอบ 1 หน่วย โปรดดูคู่มือการตั้งค่าสำหรับ
iOS หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า
Podfile
ของคุณ
รุ่น
งานตัวแยกประเภทข้อความของ MediaPipe ต้องใช้โมเดลที่ผ่านการฝึกและเข้ากันได้ กับงานนี้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ผ่านการฝึกที่ใช้ได้สำหรับ ตัวแยกประเภทข้อความ ดูภาพรวมงาน โมเดล
เลือกและดาวน์โหลดโมเดล แล้วเพิ่มลงในไดเรกทอรีโปรเจ็กต์โดยใช้ Xcode โปรดดูวิธีเพิ่มไฟล์ลงในโปรเจ็กต์ Xcode ที่หัวข้อการจัดการ ไฟล์และโฟลเดอร์ใน Xcode โปรเจ็กต์
ใช้พร็อพเพอร์ตี้ BaseOptions.modelAssetPath
เพื่อระบุเส้นทางไปยังโมเดล
ใน App Bundle ของคุณ ดูตัวอย่างโค้ดได้ในส่วนถัดไป
สร้างงาน
คุณสามารถสร้างงานของเครื่องมือแยกประเภทข้อความได้โดยเรียกใช้เครื่องมือเริ่มต้นรายการใดรายการหนึ่ง
ตัวเริ่มต้น TextClassifier(options:)
กำหนดค่าสำหรับการกำหนดค่านี้
ตัวเลือก
หากคุณไม่ต้องการตัวแยกประเภทข้อความที่ได้กำหนดค่าเริ่มต้นไว้แล้ว
คุณสามารถใช้เครื่องมือเริ่มต้น TextClassifier(modelPath:)
เพื่อสร้าง
ตัวแยกประเภทข้อความที่มีตัวเลือกเริ่มต้น ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่า
โปรดดูที่ภาพรวมการกำหนดค่า
โค้ดต่อไปนี้แสดงวิธีสร้างและกำหนดค่างานนี้
Swift
import MediaPipeTasksText
let modelPath = Bundle.main.path(forResource: "model",
ofType: "tflite")
let options = TextClassifierOptions()
options.baseOptions.modelAssetPath = modelPath
options.scoreThreshold = 0.6
let textClassifier = try TextClassifier(options: options)
Objective-C
@import MediaPipeTasksText;
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
ofType:@"tflite"];
MPPTextClassifierOptions *options = [[MPPTextClassifierOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.scoreThreshold = 0.6;
MPPTextClassifier *textClassifier =
[[MPPTextClassifier alloc] initWithOptions:options error:nil];
ตัวเลือกการกำหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้สำหรับแอป iOS
ชื่อตัวเลือก | คำอธิบาย | ช่วงค่า | ค่าเริ่มต้น |
---|---|---|---|
displayNamesLocale |
ตั้งค่าภาษาของป้ายกำกับที่จะใช้กับชื่อที่แสดงซึ่งระบุไว้ใน
ข้อมูลเมตาของโมเดลงาน (หากมี) ค่าเริ่มต้นคือ en สำหรับ
ภาษาอังกฤษ คุณสามารถเพิ่มป้ายกำกับที่แปลแล้วลงในข้อมูลเมตาของโมเดลที่กำหนดเองได้
โดยใช้ TensorFlow Lite Metadata Writer API
| รหัสภาษา | en |
maxResults |
ตั้งค่าจำนวนผลลัพธ์การจัดประเภทที่มีคะแนนสูงสุด (ไม่บังคับ) เป็น ผลตอบแทน ถ้า < 0 ระบบจะแสดงผลลัพธ์ที่ใช้ได้ทั้งหมด | จำนวนบวกใดก็ได้ | -1 |
scoreThreshold |
ตั้งค่าเกณฑ์คะแนนการคาดการณ์ซึ่งจะลบล้างเกณฑ์ที่ระบุไว้ใน ข้อมูลเมตาของโมเดล (หากมี) ผลลัพธ์ที่ต่ำกว่าค่านี้ถูกปฏิเสธ | ทศนิยมใดก็ได้ | ไม่ได้ตั้งค่า |
categoryAllowlist |
ตั้งค่ารายการชื่อหมวดหมู่ที่อนุญาตซึ่งไม่บังคับ หากไม่ว่างเปล่า
ผลลัพธ์การจัดหมวดหมู่ที่มีชื่อหมวดหมู่ที่ไม่ได้อยู่ในชุดนี้จะ
ถูกกรองออก ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก
ตัวเลือกนี้ไม่เกี่ยวข้องกับ categoryDenylist และใช้
ทั้งคู่จะทําให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
categoryDenylist |
ตั้งค่ารายการตัวเลือกชื่อหมวดหมู่ที่ไม่ได้รับอนุญาต ถ้า
ไม่ว่างเปล่า ระบบจะกรองผลลัพธ์การจัดประเภทที่มีชื่อหมวดหมู่ในชุดนี้
ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก ตัวเลือกนี้มีผลร่วมกัน
เฉพาะตัวสำหรับ categoryAllowlist และการใช้ทั้ง 2 อย่างจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
เตรียมข้อมูล
ตัวแยกประเภทข้อความทำงานร่วมกับข้อมูลข้อความ งานจะจัดการอินพุตข้อมูล การประมวลผลล่วงหน้า ซึ่งรวมถึงการแปลงเป็นโทเค็นและการประมวลผลล่วงหน้า Tensor
การประมวลผลล่วงหน้าทั้งหมดจะจัดการภายในฟังก์ชัน classify(text:)
ไม่มี
จำเป็นต้องมีการประมวลผลข้อความที่ป้อนไว้ล่วงหน้าเพิ่มเติม
Swift
let text = "The input text to be classified."
Objective-C
NSString *text = @"The input text to be classified.";
เรียกใช้งาน
หากต้องการเรียกใช้ตัวแยกประเภทข้อความ ให้ใช้เมธอด classify(text:)
ตัวแยกประเภทข้อความ
จะแสดงหมวดหมู่ที่เป็นไปได้สำหรับข้อความที่ป้อน
Swift
let result = try textClassifier.classify(text: text)
Objective-C
MPPTextClassifierResult *result = [textClassifier classifyText:text
error:nil];
หมายเหตุ: งานจะบล็อกเทรดปัจจุบันจนกว่าจะเรียกใช้การอนุมานเสร็จสิ้น ในข้อความ หากต้องการหลีกเลี่ยงการบล็อกเทรดปัจจุบัน ให้เรียกใช้การประมวลผลใน เทรดในพื้นหลังโดยใช้ iOS ผู้มอบหมายหรือ NSOperation ของ Google
จัดการและแสดงผลลัพธ์
เมื่อใช้การอนุมาน งานตัวแยกประเภทข้อความจะแสดงผล TextClassifierResult
ซึ่งมีรายการหมวดหมู่ที่เป็นไปได้สำหรับข้อความอินพุต
หมวดหมู่จะถูกกำหนดตามรูปแบบที่คุณใช้ ดังนั้นหากคุณต้องการ
เลือกรูปแบบอื่น หรือฝึกรูปแบบที่มีอยู่แล้วอีกครั้ง
ตัวอย่างต่อไปนี้แสดงตัวอย่างข้อมูลเอาต์พุตจากงานนี้
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
ผลลัพธ์นี้ได้มาจากการเรียกใช้ตัวแยกประเภท BERT กับข้อความที่ป้อน
"an imperfect but overall entertaining mystery"
ViewController.swift ในโค้ดตัวอย่างแสดงวิธีแสดงผลลัพธ์การตรวจหา ส่งคืนจากงาน