งานตัวแยกประเภทข้อความของ MediaPipe ช่วยให้คุณจัดประเภทข้อความเป็นชุดหมวดหมู่ที่กำหนดไว้ เช่น ความรู้สึกเชิงบวกหรือเชิงลบ หมวดหมู่จะกำหนดโดยโมเดล ที่คุณใช้และวิธีฝึกโมเดลนั้น วิธีการเหล่านี้จะแสดงวิธีใช้ เครื่องมือแยกประเภทข้อความสำหรับเว็บและแอป JavaScript
คุณดูการทำงานของงานนี้ได้โดยดูการสาธิต ดูข้อมูลเพิ่มเติมเกี่ยวกับความสามารถ โมเดล และ ตัวเลือกการกำหนดค่าของงานนี้ได้ที่ภาพรวม
ตัวอย่างโค้ด
โค้ดตัวอย่างสำหรับเครื่องมือแยกประเภทข้อความจะแสดงการใช้งานที่สมบูรณ์ของงานนี้ใน JavaScript เพื่อให้คุณใช้อ้างอิง โค้ดนี้ช่วยให้คุณทดสอบงานนี้และ เริ่มต้นสร้างแอปการจัดประเภทข้อความของคุณเองได้ คุณสามารถดู เรียกใช้ และ แก้ไขตัวอย่าง เครื่องมือจัดประเภทข้อความ ได้โดยใช้เพียงเว็บเบราว์เซอร์
ตั้งค่า
ส่วนนี้จะอธิบายขั้นตอนสำคัญในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์และ โปรเจ็กต์โค้ดเพื่อใช้เครื่องมือคัดแยกข้อความโดยเฉพาะ ดูข้อมูลทั่วไปเกี่ยวกับการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์เพื่อใช้ MediaPipe Tasks รวมถึงข้อกำหนดด้านเวอร์ชันแพลตฟอร์มได้ที่คู่มือการตั้งค่าสำหรับเว็บ
แพ็กเกจ JavaScript
โค้ดตัวแยกประเภทข้อความพร้อมใช้งานผ่านแพ็กเกจ
@mediapipe/tasks-text
คุณสามารถค้นหาและดาวน์โหลดไลบรารีเหล่านี้ได้จากลิงก์ที่ระบุไว้ใน
แพลตฟอร์ม
คู่มือการตั้งค่า
คุณติดตั้งแพ็กเกจที่จำเป็นได้ด้วยโค้ดต่อไปนี้สำหรับการจัดเตรียมในเครื่อง โดยใช้คำสั่งต่อไปนี้
npm install @mediapipe/tasks-text
หากต้องการติดตั้งใช้งานในเซิร์ฟเวอร์ คุณสามารถใช้บริการเครือข่ายนำส่งข้อมูล (CDN) เช่น jsDelivr เพื่อเพิ่มโค้ดลงในหน้า HTML โดยตรงได้ ดังนี้
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
รุ่น
งานตัวแยกประเภทข้อความของ MediaPipe ต้องใช้โมเดลที่ผ่านการฝึกซึ่งเข้ากันได้กับงานนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ฝึกแล้วซึ่งพร้อมใช้งานสำหรับตัวแยกประเภทข้อความได้ที่ ภาพรวมของงานส่วนโมเดล
เลือกและดาวน์โหลดโมเดล จากนั้นจัดเก็บไว้ในไดเรกทอรีโปรเจ็กต์
<dev-project-root>/assets/bert_text_classifier.tflite
ระบุเส้นทางของโมเดลด้วยพารามิเตอร์ออบเจ็กต์ baseOptionsmodelAssetPath
ดังที่แสดงด้านล่าง
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
สร้างงาน
ใช้ฟังก์ชันใดฟังก์ชันหนึ่งของ Text Classifier TextClassifier.createFrom...() เพื่อ
เตรียมงานสำหรับการเรียกใช้การอนุมาน คุณสามารถใช้ฟังก์ชัน createFromModelPath()
กับเส้นทางแบบสัมพัทธ์หรือเส้นทางแบบสัมบูรณ์ไปยังไฟล์โมเดลที่ฝึกแล้ว ตัวอย่างโค้ด
ด้านล่างแสดงการใช้ฟังก์ชัน TextClassifier.createFromOptions()
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกำหนดค่าที่มีได้ที่ตัวเลือกการกำหนดค่า
โค้ดต่อไปนี้แสดงวิธีสร้างและกำหนดค่างานนี้
async function createClassifier() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textClassifier = await TextClassifier.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
},
maxResults: 5
}
);
}
createClassifier();
ตัวเลือกการกำหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้สำหรับแอปพลิเคชันบนเว็บและ JavaScript
| ชื่อตัวเลือก | คำอธิบาย | ช่วงค่า | ค่าเริ่มต้น |
|---|---|---|---|
displayNamesLocale |
ตั้งค่าภาษาของป้ายกำกับที่จะใช้สำหรับชื่อที่แสดงซึ่งระบุไว้ใน
ข้อมูลเมตาของโมเดลงาน หากมี ค่าเริ่มต้นคือ en สำหรับ
ภาษาอังกฤษ คุณเพิ่มป้ายกำกับที่แปลแล้วลงในข้อมูลเมตาของโมเดลที่กำหนดเองได้
โดยใช้ TensorFlow Lite Metadata Writer API
| รหัสภาษา | en |
maxResults |
กำหนดจำนวนสูงสุดของผลการแยกประเภทที่มีคะแนนสูงสุด (ไม่บังคับ) ที่จะ แสดง หาก < 0 ระบบจะแสดงผลลัพธ์ทั้งหมดที่ใช้ได้ | ตัวเลขที่เป็นจำนวนบวกใดก็ได้ | -1 |
scoreThreshold |
กำหนดเกณฑ์คะแนนการคาดการณ์ที่จะลบล้างเกณฑ์ที่ระบุไว้ใน ข้อมูลเมตาของโมเดล (หากมี) ระบบจะปฏิเสธผลลัพธ์ที่ต่ำกว่าค่านี้ | ทศนิยมใดก็ได้ | ไม่ได้ตั้งค่า |
categoryAllowlist |
ตั้งค่ารายการชื่อหมวดหมู่ที่อนุญาต (ไม่บังคับ) หากไม่ว่าง ผลการจัดประเภทที่มีชื่อหมวดหมู่ไม่อยู่ในชุดนี้จะถูกกรองออก
ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก
ตัวเลือกนี้ใช้ร่วมกับ categoryDenylist ไม่ได้ และการใช้ทั้ง 2 ตัวเลือกจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
categoryDenylist |
ตั้งค่ารายการชื่อหมวดหมู่ที่ไม่ได้รับอนุญาต (ไม่บังคับ) หากไม่ว่าง ระบบจะกรองผลการจัดประเภทที่มีชื่อหมวดหมู่อยู่ในชุดนี้ออก
ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก ตัวเลือกนี้ใช้ร่วมกับ categoryAllowlist ไม่ได้ และการใช้ทั้ง 2 ตัวเลือกจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
เตรียมข้อมูล
ตัวแยกประเภทข้อความจะทำงานกับข้อมูลข้อความ (String) โดยงานนี้จะจัดการการประมวลผลล่วงหน้าของอินพุตข้อมูล ซึ่งรวมถึงการแปลงข้อมูลเป็นโทเค็นและการประมวลผลล่วงหน้าของ Tensor
การประมวลผลล่วงหน้าทั้งหมดจะได้รับการจัดการภายในฟังก์ชัน classify() ไม่จำเป็นต้อง
ประมวลผลข้อความนำเข้าล่วงหน้าเพิ่มเติม
const inputText = "The input text to be classified.";
เรียกใช้งาน
เครื่องมือคัดแยกข้อความใช้ฟังก์ชัน classify() เพื่อทริกเกอร์การอนุมาน สำหรับการจัดประเภทข้อความ ซึ่งหมายถึงการแสดงหมวดหมู่ที่เป็นไปได้สำหรับข้อความที่ป้อน
โค้ดต่อไปนี้แสดงวิธีเรียกใช้การประมวลผลด้วยโมเดลงาน
// Wait to run the function until inner text is set
const result: TextClassifierResult = await textClassifier.classify(
inputText
);
จัดการและแสดงผลลัพธ์
ตัวแยกประเภทข้อความจะแสดงผล 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-classifier ในข้อความอินพุตต่อไปนี้
"an imperfect but overall entertaining mystery"