งาน 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
เพิ่มทรัพยากร Dependency นี้ไปยังไฟล์ build.gradle
ของโครงการการพัฒนาแอป Android ของคุณ
คุณนำเข้าทรัพยากร Dependency ที่จำเป็นได้ด้วยโค้ดต่อไปนี้
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
รุ่น
งานตัวตรวจจับภาษาของ MediaPipe ต้องใช้โมเดลที่ผ่านการฝึกซึ่งเข้ากันได้กับงานนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่ฝึกแล้วที่พร้อมใช้งานสำหรับตัวตรวจจับภาษาได้ในภาพรวมงานส่วนโมเดล
เลือกและดาวน์โหลดโมเดล แล้วจัดเก็บไว้ในไดเรกทอรีโปรเจ็กต์ โดยทำดังนี้
<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
class 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
คลาส