টেক্সট ক্লাসিফায়ার প্রয়োগ করুন

টেক্সট ক্লাসিফায়ার ডেভেলপারদের টেক্সট শ্রেণীবদ্ধ করতে সাহায্য করার জন্য মেশিন লার্নিং কৌশল ব্যবহার করে।

অ্যান্ড্রয়েড ১১ রিলিজ টেক্সট ক্লাসিফায়ার

Android 11 ExtServices মডিউলে টেক্সট ক্লাসিফায়ার পরিষেবার একটি আপডেটযোগ্য ডিফল্ট বাস্তবায়ন প্রবর্তন করে। Android 11 বা উচ্চতর সংস্করণে চলমান ডিভাইসগুলিতে, getTextClassifier() পদ্ধতিটি ExtServices মডিউলে এই ডিফল্ট বাস্তবায়ন ফিরিয়ে দেয়। ডিভাইস নির্মাতাদের TextClassifierService এর এই বাস্তবায়ন ব্যবহার করার পরামর্শ দেওয়া হচ্ছে কারণ এটি মেইনলাইন OTA আপডেটের মাধ্যমে আপডেট করা যেতে পারে।

অ্যান্ড্রয়েড ১১, অ্যান্ড্রয়েড ৮.১- এ পূর্বে প্রবর্তিত স্থানীয় টেক্সট ক্লাসিফায়ার ডিফল্ট বাস্তবায়নও সরিয়ে দেয়। ফলস্বরূপ, getLocalTextClassifier() একটি NO_OP টেক্সট ক্লাসিফায়ার প্রদান করে। স্থানীয় বাস্তবায়নের পরিবর্তে, আপনার getDefaultTextClassifierImplementation() পদ্ধতি ব্যবহার করা উচিত।

যেসব ডিভাইস নির্মাতারা তাদের নিজস্ব টেক্সট ক্লাসিফাইং অ্যালগরিদম ব্যবহার করতে চান, তারা config.xml ফাইলে config_defaultTextClassifierPackage নির্দিষ্ট করে একটি কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা বাস্তবায়ন করতে পারেন। যদি এই কনফিগারেশন নির্দিষ্ট না করা থাকে, তাহলে ডিফল্ট সিস্টেম বাস্তবায়ন ব্যবহার করা হয়। কাস্টম বাস্তবায়নকারীরা TextClassifierService.getDefaultTextClassifierImplementation(Context) কল করে ডিফল্ট বাস্তবায়নের একটি উদাহরণ পেতে পারেন। আরও তথ্যের জন্য, একটি কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবা বাস্তবায়ন দেখুন।

পরীক্ষামূলক

টেক্সট ক্লাসিফায়ার পরিষেবার বাস্তবায়ন যাচাই করতে, platform/cts/tests/tests/textclassifier/ এ কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পরীক্ষাগুলি ব্যবহার করুন।

অ্যান্ড্রয়েড ১০ রিলিজ টেক্সট ক্লাসিফায়ার বর্ধিতকরণ

Android 10 TextClassifier API-তে দুটি পদ্ধতি চালু করেছে: suggestConversationActions এবং detectLanguagesuggestConversationActions পদ্ধতিটি একটি প্রদত্ত কথোপকথন থেকে প্রস্তাবিত উত্তর এবং ক্রিয়া তৈরি করে এবং detectLanguage পদ্ধতিটি পাঠ্যের ভাষা সনাক্ত করে।

এই পদ্ধতিগুলির মডেল ফাইলগুলি নীচে দেখানো হয়েছে এবং external/libtextclassifier/models/ এ পাওয়া যাবে।

  • suggestionConversationActions : actions_suggestions.universal.model
  • ভাষা detectLanguage : lang_id.model

আপনার ফ্যাক্টরি ছবিতে সর্বশেষ মডেল ফাইল সহ একটি ডিভাইস প্রকাশ করতে, নিম্নলিখিতগুলি করুন:

  1. সর্বশেষ মডেলের ফাইলগুলি আনুন।

    external/libtextclassifier/models/update.sh
    
  2. ডাউনলোড করা ফাইলগুলির নাম পরিবর্তন করে বিদ্যমান ফাইলগুলি প্রতিস্থাপন করুন।
  3. সেটআপটি যাচাই করুন।
    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 }

অ্যান্ড্রয়েড ৯ রিলিজ টেক্সট ক্লাসিফায়ার বর্ধিতকরণ

অ্যান্ড্রয়েড ৯, নতুন টেক্সট ক্লাসিফায়ার পরিষেবার মাধ্যমে অ্যান্ড্রয়েড ৮.১-এ প্রবর্তিত টেক্সট ক্লাসিফায়ার কাঠামোকে আরও প্রসারিত করেছে। টেক্সট ক্লাসিফায়ার পরিষেবা হল OEM-দের টেক্সট ক্লাসিফায়ার সিস্টেম সহায়তা প্রদানের জন্য প্রস্তাবিত উপায়। টেক্সট ক্লাসিফায়ার পরিষেবাটি যেকোনো সিস্টেম APK-এর অংশ হতে পারে এবং প্রয়োজনে আপডেট করা যেতে পারে।

অ্যান্ড্রয়েড ৯-এ একটি ডিফল্ট টেক্সট ক্লাসিফায়ার পরিষেবা বাস্তবায়ন ( 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) {
        ...
    }
    ...
}

অ্যান্ড্রয়েড ম্যানিফেস্টে পরিষেবাটি সংজ্ঞায়িত করুন

[অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএল]

<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 উদ্দেশ্য ক্রিয়া নির্দিষ্ট করতে হবে।

কনফিগ ওভারলেতে একটি সিস্টেম ডিফল্ট টেক্সট ক্লাসিফায়ার পরিষেবা সেট করুন

[ কনফিগার.এক্সএমএল ]

<string name="config_defaultTextClassifierPackage" translatable="false">com.example.textclassifierservice</string>

সিস্টেম ইমেজে টেক্সট ক্লাসিফায়ার পরিষেবা তৈরি করুন

আপনার কাস্টম টেক্সট ক্লাসিফায়ার পরিষেবাটি একটি স্বতন্ত্র APK হতে পারে যা সিস্টেম ইমেজে তৈরি করা হয় অথবা অন্য সিস্টেম APK এর একটি অংশ হতে পারে। পরিষেবাটি সমাধান করার জন্য সিস্টেমটি PackageManager.MATCH_SYSTEM_ONLY ব্যবহার করে।

পরীক্ষামূলক

android.view.textclassifier.cts এ পরীক্ষা চালান।

অ্যান্ড্রয়েড ৯-এ অন্যান্য টেক্সট শ্রেণীবিভাগ পরিবর্তন

ইনস্টল করা ভাষা মডিউলগুলি পরিদর্শন করা দেখুন।

Android 9 মডেলের ফাইলগুলি Android 8.x মডেলের ফাইলগুলির সাথে বেমানান।

অ্যান্ড্রয়েড ৯ মডেলের ফাইলগুলির নামকরণের ধরণটি হল: texclassifier.smartselection.en.model এর পরিবর্তে textclassifier.smartselection.en.model texclassifier.[language-code].model (উদাহরণস্বরূপ, textclassifier.en.model )।

সর্বশেষ টেক্সট ক্লাসিফিকেশন মডেল ফাইলগুলি পান

সবচেয়ে আপ-টু-ডেট মডেলগুলি পেতে নিম্নলিখিত স্ক্রিপ্টটি চালানো যেতে পারে, যা সোর্স ট্রিতে TextClassifier মডেলগুলিকে আপডেট করে:

external/libtextclassifier/native/models/update.sh

অ্যান্ড্রয়েড রিলিজ 8.1 টেক্সট ক্লাসিফায়ার

অ্যান্ড্রয়েড ৮.১ টেক্সট ক্লাসিফিকেশন বাস্তবায়নের জন্য টেক্সটক্লাসফায়ার এপিআই চালু করেছে।

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 দেখুন।

টেক্সটভিউ এবং ওয়েবভিউ স্মার্ট নির্বাচন এবং স্মার্ট টেক্সট শেয়ার বৈশিষ্ট্যের জন্য টেক্সটক্লাসিফায়ার ব্যবহার করে।

টেক্সট ক্লাসিফায়ারের ব্যবহার

চিত্র ১. টেক্সটক্লাসিফায়ার ব্যবহার

টেক্সটক্লাসিফায়ার নিউরাল-নেট মডেল

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (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 ইনটেন্ট সম্প্রচারের মাধ্যমে, ফ্রেমওয়ার্কটি বর্তমানে সেট করা ভাষার ভাষা মডেল আপডেট করতে সক্ষম হয়। মডেলগুলিতে সমর্থিত ভাষা এবং একটি সংস্করণ নম্বর থাকে যাতে সর্বশেষ উপযুক্ত মডেলটি ব্যবহার করা হয়।

তাই আপনাকে সকল ভাষার জন্য মডেল প্রিলোড করার দরকার নেই কারণ সেগুলি পরে যোগ করা যেতে পারে। যদি নির্দিষ্ট ভাষার জন্য কোনও মডেল ফাইল না পাওয়া যায়, তাহলে টেক্সট ক্লাসিফিকেশন নো-অপ মান প্রদান করে।

সামঞ্জস্য পরীক্ষা স্যুট পরীক্ষা

সংশ্লিষ্ট অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পরীক্ষাগুলি এখানে পাওয়া যাবে:

cts/tests/tests/view/src/android/view/textclassifier/cts/TextClassificationManagerTest.java

cts/tests/tests/widget/src/android/widget/cts/TextViewTest.java

  • testSmartSelection
  • testSmartSelection_dragSelection
  • testSmartSelection_resetSelection