งาน MediaPipe Language Detector ให้คุณระบุภาษาของข้อความ เหล่านี้ แสดงวิธีใช้ตัวตรวจจับภาษากับแอป Android โค้ด ตัวอย่างที่อธิบายในวิธีการเหล่านี้สามารถดูได้ใน GitHub
คุณสามารถดูการทำงานนี้โดยดูที่ การสาธิต สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความสามารถ โมเดล และตัวเลือกการกำหนดค่า ของงานนี้ โปรดดูภาพรวม
ตัวอย่างโค้ด
โค้ดตัวอย่างสำหรับตัวตรวจจับภาษาช่วยให้การติดตั้งโค้ดนี้เรียบง่าย งานสำหรับการอ้างอิง โค้ดนี้จะช่วยให้คุณทดสอบงานนี้และเริ่มต้นใช้งาน สร้างฟีเจอร์การตรวจหาภาษาของตัวเอง คุณสามารถเรียกดู โค้ดตัวอย่างตัวตรวจจับภาษา ใน GitHub
ดาวน์โหลดโค้ด
วิธีการต่อไปนี้แสดงวิธีสร้างสำเนาตัวอย่างในเครื่อง โดยใช้เครื่องมือบรรทัดคำสั่ง git
วิธีดาวน์โหลดโค้ดตัวอย่าง
- โคลนที่เก็บ Git โดยใช้คำสั่งต่อไปนี้
git clone https://github.com/google-ai-edge/mediapipe-samples
- คุณสามารถกำหนดค่าอินสแตนซ์ Git ให้ใช้การชำระเงินแบบกระจัดกระจายได้
เพื่อให้คุณมีเพียงไฟล์สำหรับแอปตัวอย่าง Language Detector ดังนี้
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/languagedetector/android
หากต้องการดูวิธีการตั้งค่าและเรียกใช้ตัวอย่างด้วย Android Studio ดูตัวอย่างวิธีการตั้งค่าโค้ดใน คู่มือการการตั้งค่าสำหรับ Android
องค์ประกอบสำคัญ
ไฟล์ต่อไปนี้มีโค้ดที่สำคัญสำหรับการจัดประเภทข้อความ แอปตัวอย่าง:
- LanguageDetectorHelper.kt - เริ่มต้นเครื่องมือตรวจจับภาษาและจัดการการเลือกโมเดล
- ResultsAdapter.kt แฮนเดิลและจัดรูปแบบผลลัพธ์การตรวจจับ
- MainActivity.kt -
นำแอปพลิเคชันไปใช้งาน รวมถึงการเรียกใช้
LanguageDetectorHelper
และResultsAdapter
ตั้งค่า
ส่วนนี้จะอธิบายขั้นตอนสำคัญในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ และ โค้ดเพื่อใช้ตัวตรวจจับภาษาโดยเฉพาะ สำหรับข้อมูลทั่วไปเกี่ยวกับ การตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ของคุณสำหรับการใช้งาน MediaPipe ซึ่งรวมถึง โปรดดูข้อกำหนดเวอร์ชันของแพลตฟอร์ม คู่มือการตั้งค่าสำหรับ Android
การอ้างอิง
ตัวตรวจจับภาษาใช้ไลบรารี com.google.mediapipe:tasks-text
เพิ่มรายการนี้
จะขึ้นอยู่กับไฟล์ build.gradle
ของโปรเจ็กต์การพัฒนาแอป Android ของคุณ
คุณสามารถนำเข้าทรัพยากร Dependency ที่จำเป็นด้วยโค้ดต่อไปนี้
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
รุ่น
งาน MediaPipe Language Detector ต้องการโมเดลที่ได้รับการฝึกที่สามารถทำงานร่วมกับ งาน ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ผ่านการฝึกที่ใช้ได้สําหรับเครื่องมือตรวจจับภาษาได้ที่ ภาพรวมงานส่วนโมเดล
เลือกและดาวน์โหลดโมเดล จากนั้นเก็บโมเดลไว้ในไดเรกทอรีโปรเจ็กต์ของคุณ:
<dev-project-root>/src/main/assets
ระบุเส้นทางของโมเดลภายในพารามิเตอร์ ModelName
สร้างงาน
คุณจะใช้ฟังก์ชันใดฟังก์ชันหนึ่งของ createFrom...()
เพื่อสร้างงานได้
ฟังก์ชัน createFromOptions()
ยอมรับตัวเลือกการกำหนดค่าสำหรับภาษา
ตัวตรวจจับ คุณยังเริ่มต้นงานโดยใช้โรงงาน createFromFile()
ได้ด้วย
ฟังก์ชัน createFromFile()
จะยอมรับเส้นทางแบบสัมพัทธ์หรือสัมบูรณ์ไปยัง
ไฟล์โมเดลที่ฝึกแล้ว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่างาน โปรดดูที่
ตัวเลือกการกำหนดค่า
โค้ดต่อไปนี้แสดงวิธีสร้างและกำหนดค่างานนี้
// For creating a language detector instance:
LanguageDetectorOptions options =
LanguageDetectorOptions.builder()
.setBaseOptions(
BaseOptions.builder()
.setModelAssetPath(modelPath)
.build()
)
.build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);
คุณดูตัวอย่างวิธีสร้างงานได้ในตัวอย่างโค้ด
LanguageDetectorHelper
ฟังก์ชันคลาส initDetector()
ตัวเลือกการกำหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้สำหรับแอป Android
ชื่อตัวเลือก | คำอธิบาย | ช่วงค่า | ค่าเริ่มต้น |
---|---|---|---|
maxResults |
ตั้งค่าจำนวนสูงสุดของการคาดคะเนภาษาที่มีคะแนนสูงสุดเป็น (ไม่บังคับ) ผลตอบแทน หากค่านี้น้อยกว่า 0 ระบบจะแสดงผลผลลัพธ์ที่ใช้ได้ทั้งหมด | จำนวนบวกใดก็ได้ | -1 |
scoreThreshold |
ตั้งค่าเกณฑ์คะแนนการคาดการณ์ซึ่งจะลบล้างเกณฑ์ที่ระบุไว้ใน ข้อมูลเมตาของโมเดล (หากมี) ผลลัพธ์ที่ต่ำกว่าค่านี้ถูกปฏิเสธ | ทศนิยมใดก็ได้ | ไม่ได้ตั้งค่า |
categoryAllowlist |
ตั้งค่ารายการรหัสภาษาที่อนุญาตซึ่งไม่บังคับ หากไม่ว่างเปล่า
การคาดคะเนภาษาที่รหัสภาษาไม่ได้อยู่ในชุดนี้จะ
ถูกกรองออก ตัวเลือกนี้ไม่เกี่ยวข้องกับ
categoryDenylist และการใช้ทั้ง 2 อย่างจะทําให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
categoryDenylist |
ตั้งค่ารายการรหัสภาษาที่ระบบไม่อนุญาต ถ้า
ไม่ว่างเปล่า การคาดคะเนภาษาที่มีรหัสภาษาในชุดนี้จะถูกกรองออก
ตัวเลือกนี้ไม่เกี่ยวข้องกับ categoryAllowlist และ
โดยใช้ทั้ง 2 อย่างจะทำให้เกิดข้อผิดพลาด |
สตริงใดก็ได้ | ไม่ได้ตั้งค่า |
เตรียมข้อมูล
ตัวตรวจจับภาษาใช้งานได้กับข้อมูลข้อความ (String
) งานจะจัดการอินพุตข้อมูล
การประมวลผลล่วงหน้า ซึ่งรวมถึงการแปลงเป็นโทเค็นและการประมวลผลล่วงหน้า Tensor ทั้งหมด
การประมวลผลล่วงหน้าจะดำเนินการภายในฟังก์ชัน detect()
ไม่จำเป็นต้องใช้
การประมวลผลข้อความอินพุตเพิ่มเติมล่วงหน้า
String inputText = "Some input text for the language detector";
เรียกใช้งาน
ตัวตรวจจับภาษาจะใช้เมธอด LanguageDetector.detect()
เพื่อประมวลผลการป้อนข้อมูล
ข้อความและคาดคะเนภาษาของข้อความ คุณควรใช้การดำเนินการแยกต่างหาก
เทรดสำหรับการดำเนินการตรวจหาเพื่อหลีกเลี่ยงการบล็อกผู้ใช้ Android
เทรดอินเทอร์เฟซ
ร่วมกับแอปของคุณ
โค้ดต่อไปนี้แสดงวิธีดำเนินการประมวลผลกับงาน โดยใช้เทรดการดำเนินการแยกต่างหาก
// Predict the language of the input text.
fun classify(text: String) {
executor = ScheduledThreadPoolExecutor(1)
executor.execute {
val results = languageDetector.detect(text)
listener.onResult(results)
}
}
คุณดูตัวอย่างวิธีเรียกใช้งานได้ในตัวอย่างโค้ด
LanguageDetectorHelper
ฟังก์ชันคลาส detect()
จัดการและแสดงผลลัพธ์
ตัวตรวจจับภาษาจะแสดง LanguageDetectorResult
ซึ่งประกอบด้วยรายการ
การคาดคะเนภาษา รวมถึงความน่าจะเป็นสำหรับการคาดคะเนเหล่านั้น
มีการกำหนดหมวดหมู่ภาษาในโมเดล ดูภาพรวมของงาน
ส่วนโมเดลเพื่อดูรายละเอียดเกี่ยวกับโมเดลที่คุณใช้อยู่
ตัวอย่างต่อไปนี้แสดงตัวอย่างข้อมูลเอาต์พุตจากงานนี้
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
ผลลัพธ์นี้ได้มาจากการเรียกใช้โมเดลในข้อความที่ป้อน:
"Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
คุณดูตัวอย่างวิธีแสดงผลลัพธ์ในตัวอย่างโค้ดได้
ResultsAdapter
และชั้นเรียนภายใน ViewHolder