وظیفه MediaPipe Language Detector به شما امکان می دهد زبان یک متن را شناسایی کنید. این دستورالعملها به شما نشان میدهند که چگونه از ردیاب زبان در برنامههای اندروید استفاده کنید. نمونه کد شرح داده شده در این دستورالعمل ها در GitHub موجود است.
با مشاهده دمو می توانید این کار را در عمل مشاهده کنید. برای اطلاعات بیشتر در مورد قابلیتها، مدلها و گزینههای پیکربندی این کار، به نمای کلی مراجعه کنید.
نمونه کد
کد مثال برای زبان شناس یک پیاده سازی ساده از این کار را برای مرجع شما فراهم می کند. این کد به شما کمک می کند این کار را آزمایش کنید و شروع به ساخت ویژگی تشخیص زبان خود کنید. می توانید کد نمونه زبان شناساگر را در 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/languagedetector/android
برای آموزش نحوه راهاندازی و اجرای یک مثال با Android Studio، به مثال دستورالعملهای تنظیم کد در راهنمای راهاندازی برای Android مراجعه کنید.
اجزای کلیدی
فایلهای زیر حاوی کد حیاتی برای برنامه نمونه طبقهبندی متن هستند:
- LanguageDetectorHelper.kt - آشکارساز زبان را راه اندازی می کند و انتخاب مدل را مدیریت می کند.
- ResultsAdapter.kt - نتایج تشخیص را کنترل و قالب بندی می کند.
- MainActivity.kt - برنامه را پیاده سازی می کند، از جمله فراخوانی
LanguageDetectorHelper
وResultsAdapter
.
راه اندازی
این بخش مراحل کلیدی را برای راهاندازی محیط توسعه و پروژههای کد مخصوصاً برای استفاده از زبانشناس توضیح میدهد. برای اطلاعات کلی در مورد تنظیم محیط توسعه خود برای استفاده از وظایف MediaPipe، از جمله الزامات نسخه پلت فرم، به راهنمای راه اندازی برای Android مراجعه کنید.
وابستگی ها
ردیاب زبان از کتابخانه های com.google.mediapipe:tasks-text
استفاده می کند. این وابستگی را به فایل build.gradle
پروژه توسعه برنامه اندروید خود اضافه کنید. می توانید وابستگی های مورد نیاز را با کد زیر وارد کنید:
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);
شما می توانید نمونه ای از نحوه ایجاد یک کار را در تابع کد زبانDetectorHelper کلاس initDetector()
مشاهده کنید.
گزینه های پیکربندی
این کار دارای گزینه های پیکربندی زیر برای برنامه های Android است:
نام گزینه | توضیحات | محدوده ارزش | مقدار پیش فرض |
---|---|---|---|
maxResults | حداکثر تعداد اختیاری پیشبینیهای زبان با امتیاز بالا را برای بازگشت تنظیم میکند. اگر این مقدار کمتر از صفر باشد، تمام نتایج موجود برگردانده می شوند. | هر عدد مثبت | -1 |
scoreThreshold | آستانه امتیاز پیشبینی را تعیین میکند که بر آستانه ارائهشده در فراداده مدل (در صورت وجود) لغو میشود. نتایج زیر این مقدار رد می شوند. | هر شناور | تنظیم نشده است |
categoryAllowlist | لیست اختیاری کدهای زبان مجاز را تنظیم می کند. اگر خالی نباشد، پیشبینیهای زبانی که کد زبان آنها در این مجموعه نیست فیلتر میشوند. این گزینه با categoryDenylist منحصر به فرد است و از هر دو نتیجه در یک خطا استفاده می کند. | هر رشته | تنظیم نشده است |
categoryDenylist | لیست اختیاری کدهای زبانی را که مجاز نیستند را تنظیم می کند. اگر خالی نباشد، پیشبینیهای زبانی که کد زبان آنها در این مجموعه است فیلتر میشوند. این گزینه با categoryAllowlist منحصر به فرد است و از هر دو نتیجه در خطا استفاده می کند. | هر رشته | تنظیم نشده است |
داده ها را آماده کنید
آشکارساز زبان با داده های متن ( String
) کار می کند. این وظیفه، پیش پردازش ورودی داده، از جمله پیش پردازش توکن و تانسور را انجام می دهد. تمام پیش پردازش ها در تابع detect()
انجام می شود. نیازی به پیش پردازش اضافی متن ورودی از قبل نیست.
String inputText = "Some input text for the language detector";
وظیفه را اجرا کنید
زبان شناس از متد LanguageDetector.detect()
برای پردازش متن ورودی و پیش بینی زبان متن استفاده می کند. برای جلوگیری از مسدود کردن رشته رابط کاربری اندروید با برنامه خود، باید از یک رشته اجرایی جداگانه برای اجرای تشخیص استفاده کنید.
کد زیر نحوه اجرای پردازش با مدل وظیفه را با استفاده از یک رشته اجرایی جداگانه نشان می دهد.
// 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 class detect()
مشاهده کنید.
کنترل و نمایش نتایج
ردیاب زبان یک LanguageDetectorResult
شامل لیستی از پیش بینی های زبان به همراه احتمالات آن پیش بینی ها را خروجی می دهد. دستههای زبان در مدل تعریف شدهاند، برای جزئیات بیشتر در مورد مدلی که استفاده میکنید، به بخش مدلهای نمای کلی کار مراجعه کنید.
شکل زیر نمونه ای از داده های خروجی از این کار را نشان می دهد:
LanguageDetectorResult:
LanguagePrediction #0:
language_code: "fr"
probability: 0.999781
این نتیجه با اجرای مدل بر روی متن ورودی به دست آمده است: "Il ya beaucoup de bouches qui parlent et fort peu de têtes qui pensent."
.
می توانید نمونه ای از نحوه نمایش نتایج را در کلاس کد ResultsAdapter و کلاس داخلی ViewHolder
مشاهده کنید.