টেক্সট ক্লাসিফায়ার মেশিন লার্নিং টেকনিক ব্যবহার করে ডেভেলপারদের টেক্সট ক্লাসিফাই করতে সাহায্য করে।
Android 11 রিলিজ টেক্সট ক্লাসিফায়ার
Android 11,
ExtServices মডিউলে
টেক্সট ক্লাসিফায়ার পরিষেবার আপডেট করা যায় এমন ডিফল্ট
ইমপ্লিমেন্টেশন চালু করে। Android 11
বা এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে, ExtServices মডিউলে
getTextClassifier()
এই পদ্ধতি ডিফল্ট প্রয়োগ করা হয়।
ডিভাইস প্রস্তুতকারকদের এই ইমপ্লিমেন্টেশনTextClassifierService ব্যবহার করার জন্য সাজেস্ট করা হয়, কারণ এটি Mainline OTA
আপডেটের মাধ্যমে আপডেট করা যায়।
এছাড়াও, Android 11, লোকাল টেক্সট ক্লাসিফায়ার
ডিফল্ট প্রয়োগ সরিয়ে দেয় যা আগে
Android 8.1-এ চালু করা হয়েছিল। এর ফলে,
getLocalTextClassifier()
একটি NO_OP টেক্সট ক্লাসিফায়ার রিটার্ন করে। লোকাল
ইমপ্লিমেন্টেশনের পরিবর্তে, আপনাকে
getDefaultTextClassifierImplementation()
পদ্ধতি ব্যবহার করতে হবে।
ডিভাইস প্রস্তুতকারক যারা তাদের নিজস্ব টেক্সট ক্লাসিফাইং অ্যালগরিদম ব্যবহার করতে চান, তারা config.xml ফাইলে config_defaultTextClassifierPackage উল্লেখ করে একটি কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা প্রয়োগ করতে পারেন। এই কনফিগারেশন নির্দিষ্ট করা না থাকলে, ডিফল্ট সিস্টেম ইমপ্লিমেন্টেশন
ব্যবহার করা হয়। কাস্টম প্রয়োগ
TextClassifierService.getDefaultTextClassifierImplementation(Context) কল করে ডিফল্ট প্রয়োগের
ইনস্ট্যান্স পেতে পারে।
আরও তথ্যের জন্য,
কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা প্রয়োগ করা দেখুন।
পরীক্ষা করা
টেক্সট ক্লাসিফায়ার পরিষেবার প্রয়োগ যাচাই করতে,
platform/cts/tests/tests/textclassifier/-এ
কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পরীক্ষা ব্যবহার করুন।
Android 10 রিলিজ টেক্সট ক্লাসিফায়ার এনহ্যান্সমেন্ট
Android 10, TextClassifier API-এর
দুটি পদ্ধতি চালু করেছে:
suggestConversationActions
এবং
detectLanguage।
suggestConversationActions পদ্ধতিটি প্রদত্ত কথোপকথন থেকে সাজেস্ট করা উত্তর
এবং অ্যাকশন তৈরি করে এবং detectLanguage পদ্ধতিটি
টেক্সটের ভাষা শনাক্ত করে।
এইসব পদ্ধতির জন্য মডেল ফাইল নিচে দেখানো হয়েছে এবং
external/libtextclassifier/models/-এ পাওয়া যাবে।
suggestionConversationActions:actions_suggestions.universal.modeldetectLanguage:lang_id.model
আপনার ফ্যাক্টরি ইমেজে লেটেস্ট মডেল ফাইল সহ ডিভাইস রিলিজ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
লেটেস্ট মডেল ফাইল ফেচ করুন।
external/libtextclassifier/models/update.sh
- আগে থেকে থাকা ফাইলগুলি পরিবর্তন করতে ডাউনলোড করা ফাইলের নাম পরিবর্তন করুন।
- সেট-আপ যাচাই করুন।
adb shell dumpsys textclassification
এটি হল সেই কমান্ডের আউটপুটের একটি নমুনা।
TextClassifierImpl: Annotator model file(s): ModelFile { path=/etc/textclassifier/textclassifier.universal.model name=textclassifier.universal.model version=608 locales=und } ModelFile { path=/etc/textclassifier/textclassifier.en.model name=textclassifier.en.model version=608 locales=en } LangID model file(s): ModelFile { path=/etc/textclassifier/lang_id.model name=lang_id.model version=0 locales=und } Actions model file(s): ModelFile { path=/etc/textclassifier/actions_suggestions.universal.model name=actions_suggestions.universal.model version=0 locales=und }
Android 9 রিলিজ টেক্সট ক্লাসিফায়ার এনহ্যান্সমেন্ট
Android 9, নতুন টেক্সট ক্লাসিফায়ার পরিষেবার মাধ্যমে Android 8.1-এ চালু করা টেক্সট ক্লাসিফিকেশন ফ্রেমওয়ার্ককে আরও উন্নত করেছে। OEM-এর জন্য টেক্সট ক্লাসিফিকেশন সিস্টেম সংক্রান্ত সহায়তা প্রদানের জন্য টেক্সট ক্লাসিফায়ার পরিষেবা সাজেস্ট করা হয়। টেক্সট ক্লাসিফায়ার পরিষেবা যেকোনও সিস্টেম APK-এর অংশ হতে পারে এবং প্রয়োজন হলে আপডেট করা যেতে পারে।
Android 9-এ একটি ডিফল্ট টেক্সট ক্লাসিফায়ার
পরিষেবা প্রয়োগ
(
TextClassifierImpl) অন্তর্ভুক্ত থাকে যা আপনি
কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা
প্রয়োগের মাধ্যমে না বদলানো পর্যন্ত ব্যবহার করা হয়।
কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা প্রয়োগ করা
আপনি ডেভেলপ করেছেন এমন কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা কীভাবে প্রয়োগ করবেন তা নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।
android.service.textclassifier.TextClassifierService-এর এক্সটেন্ড করা
public final class TextClassifierServiceImpl extends TextClassifierService { // Returns TextClassifierImpl. private final TextClassifier tc = getLocalTextClassifier(); @Override public void onSuggestSelection( @Nullable TextClassificationSessionId sessionId, @NonNull TextSelection.Request request, @NonNull CancellationSignal cancellationSignal, @NonNull Callback<TextSelection> callback) { CompletableFuture.supplyAsync( () -> tc.suggestSelection(request)) .thenAccept(r -> callback.onSuccess(r)); } @Override public void onClassifyText( @Nullable TextClassificationSessionId sessionId, @NonNull TextClassification.Request request, @NonNull CancellationSignal cancellationSignal, @NonNull Callback<TextClassification> callback) { ... } @Override public void onGenerateLinks( @Nullable TextClassificationSessionId sessionId, @NonNull TextLinks.Request request, @NonNull CancellationSignal cancellationSignal, @NonNull Callback<TextLinks> callback) { ... } ... }
Android ম্যানিফেস্টে পরিষেবাটি সংজ্ঞায়িত করুন
[AndroidManifest.xml]
<service android:name=".TextClassifierServiceImpl"
android:permission="android.permission.BIND_TEXTCLASSIFIER_SERVICE">
<intent-filter>
<action android:name=
"android.service.textclassifier.TextClassifierService"/>
</intent-filter>
</service>
মনে রাখবেন যে পরিষেবার জন্য অবশ্যই
android.permission.BIND_TEXTCLASSIFIER_SERVICE অনুমতি প্রয়োজন এবং
android.service.textclassifier.TextClassifierService ইনটেন্ট
অ্যাকশন উল্লেখ করতে হবে।
কনফিগারেশন ওভারলেতে সিস্টেম ডিফল্ট টেক্সট ক্লাসিফায়ার পরিষেবা সেট করা
[config.xml]
<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>
সিস্টেম ইমেজে টেক্সট ক্লাসিফায়ার পরিষেবা তৈরি করা
আপনার কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা একটি স্বতন্ত্র APK হতে পারে যা সিস্টেম ইমেজে
বিল্ট-ইন থাকে অথবা অন্য কোনও সিস্টেম APK-এর অংশ হতে পারে। পরিষেবাটি সমাধান করতে সিস্টেম
PackageManager.MATCH_SYSTEM_ONLY
ব্যবহার করে।
পরীক্ষা করা
android.view.textclassifier.cts-এ টেস্ট চালান।
Android 9-এ টেক্সট ক্লাসিফিকেশন সংক্রান্ত অন্যান্য পরিবর্তন
ইনস্টল করা ভাষা মডিউল পরীক্ষা করা দেখুন।
Android 9 মডেল ফাইলগুলি Android 8.x মডেল ফাইলের সাথে মানানসই নয়।
Android 9 মডেল ফাইলে নামের প্যাটার্ন হল:
texclassifier.[language-code].model (যেমন,
textclassifier.en.model)
Android 8.x-এ textclassifier.smartselection.en.model-এর পরিবর্তে।
লেটেস্ট টেক্সট ক্লাসিফিকেশন মডেল ফাইল পাওয়া
সবচেয়ে আপ-টু-ডেট মডেল পেতে, নিম্নলিখিত স্ক্রিপ্ট রান করা যেতে পারে, যা সোর্স ট্রিতে TextClassifier মডেল আপডেট করে:
external/libtextclassifier/native/models/update.sh
Android রিলিজ 8.1 টেক্সট ক্লাসিফায়ার
Android 8.1-এ টেক্সট ক্লাসিফিকেশন প্রয়োগ করার জন্য TextClassfier API নিয়ে আসা হয়েছে।
TextClassificationManager tcm =
context.getSystemService(TextClassificationManager.class);
TextClassifier classifier = tcm.getTextClassifier();
TextSelection selection = classifier.suggestSelection(...);
TextClassification classification = classifier.classifyText(...);ডেভেলপাররা একটি কাস্টম টেক্সট ক্লাসিফায়ার সেট করতে পারেন:
tcm.setTextClassifier(customTextClassifier);
কিন্তু কোনও অ্যাপ ডেভেলপার টেক্সট ক্লাসিফায়ারকে null হিসেবে সেট করলে, getTextClassifier()-এর জন্য
সিস্টেম ডিফল্ট টেক্সট ক্লাসিফায়ার রিটার্ন করা হয়।
android.view.textclassifier.TextClassifierImpl দেখুন।
TextView এবং WebView স্মার্ট বেছে নেওয়া ও স্মার্ট টেক্সট শেয়ার ফিচারের জন্য TextClassifier ব্যবহার করে।
ছবি ১. TextClassifier-এর ব্যবহার
TextClassifier নিউরাল-নেট মডেল
Android ওপেন সোর্স প্রজেক্ট (AOSP)-এ টেক্সট শ্রেণীবিন্যাস করার জন্য একাধিক নিউরাল নেটওয়ার্ক মডেল আছে। প্রতিটি মডেল ফাইল একটি ভাষার জন্য ট্রেনিং দেওয়া হয়। আপনি মডেলের যেকোনও কম্বিনেশন ইনস্টল করতে পারবেন। মডেলগুলি এখানে সংজ্ঞায়িত করা হয়েছে:
external/libtextclassifier/Android.mk
ডিভাইসে ভাষা মডেল প্রি-ইনস্টল করুন
আপনি একাধিক ভাষা মডেল নির্দিষ্ট করতে এবং সেগুলি কোনও ডিভাইসে ইনস্টল করতে পারবেন:
# ----------------------- # Smart Selection bundles # ----------------------- include $(CLEAR_VARS) LOCAL_MODULE := textclassifier.smartselection.bundle1 LOCAL_REQUIRED_MODULES := textclassifier.smartselection.en.model LOCAL_REQUIRED_MODULES += textclassifier.smartselection.es.model LOCAL_REQUIRED_MODULES += textclassifier.smartselection.de.model LOCAL_REQUIRED_MODULES += textclassifier.smartselection.fr.model include $(BUILD_STATIC_LIBRARY)
যেমন, device/google/marlin/device-common.mk-এ।
# TextClassifier smart selection model files
PRODUCT_PACKAGES += \
textclassifier.smartselection.bundle1ইনস্টল করা ভাষা মডিউল পরীক্ষা করা
ডিরেক্টরিতে ফাইলগুলির তালিকা দেখতে ADB ব্যবহার করুন:
$ adb shell ls -l /etc/textclassifier -rw-r--r-- 1 root root ... textclassifier.smartselection.de.model -rw-r--r-- 1 root root ... textclassifier.smartselection.en.model -rw-r--r-- 1 root root ... textclassifier.smartselection.es.model -rw-r--r-- 1 root root ... textclassifier.smartselection.fr.model
মডেল আপডেট
সিস্টেম ইমেজ আপডেট হিসেবে নতুন মডেল যোগ করে অথবা সিস্টেম কম্পোনেন্ট ব্যবহার করে ডায়নামিক পদ্ধতিতে মডেল আপডেট করা যায়। এই কম্পোনেন্ট সিস্টেম API ACTION_UPDATE_SMART_SELECTION
ইনটেন্টের মাধ্যমে আপডেট
ট্রিগার করে। এই সিস্টেম API ইনটেন্ট ব্রডকাস্ট করার মাধ্যমে, ফ্রেমওয়ার্ক বর্তমানে সেট করা ভাষার
ভাষা মডেল আপডেট করতে পারে। মডেলগুলিতেই
সাপোর্ট করা ভাষা এবং ভার্সন নম্বর থাকে যাতে লেটেস্ট উপযুক্ত
মডেল ব্যবহার করা হয়।
তাই, আপনাকে সব ভাষার জন্য মডেল প্রি-লোড করতে হবে না, কারণ সেগুলি পরে যোগ করা যেতে পারে। নির্দিষ্ট ভাষার জন্য কোনও মডেল ফাইল খুঁজে না পাওয়া গেলে, টেক্সট ক্লাসিফিকেশন কোনও অপারেশন না করা ভ্যালু রিটার্ন করে।
কম্প্যাটিবিলিটি টেস্ট স্যুট পরীক্ষা
সংশ্লিষ্ট Android কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্ট এখানে পাওয়া যাবে:
cts/tests/tests/view/src/android/view/textclassifier/cts/TextClassificationManagerTest.java
cts/tests/tests/widget/src/android/widget/cts/TextViewTest.java
testSmartSelectiontestSmartSelection_dragSelectiontestSmartSelection_resetSelection