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

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

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

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

অ্যান্ড্রয়েড 10 টেক্সটক্ল্যাসিফায়ার এপিআই-তে দুটি পদ্ধতি প্রবর্তন করে: suggestConversationActions এবং detectLanguage ল্যাঙ্গুয়েজ। suggestConversationActions পদ্ধতি একটি প্রদত্ত কথোপকথন থেকে প্রস্তাবিত উত্তর এবং ক্রিয়া তৈরি করে এবং 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 }

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

অ্যান্ড্রয়েড 9 নতুন টেক্সট ক্লাসিফায়ার পরিষেবার সাথে অ্যান্ড্রয়েড 8.1-এ প্রবর্তিত পাঠ্য শ্রেণিবিন্যাস কাঠামোকে প্রসারিত করেছে। টেক্সট ক্লাসিফায়ার পরিষেবা হল OEM-এর জন্য টেক্সট ক্লাসিফিকেশন সিস্টেম সাপোর্ট দেওয়ার প্রস্তাবিত উপায়। টেক্সট ক্লাসিফায়ার পরিষেবা যেকোনো সিস্টেম APK এর অংশ হতে পারে এবং প্রয়োজনে আপডেট করা যেতে পারে।

অ্যান্ড্রয়েড 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) {
        ...
    }
    ...
}

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

[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 এ পরীক্ষা চালান।

অ্যান্ড্রয়েড 9-এ অন্যান্য পাঠ্য শ্রেণিবিন্যাস পরিবর্তন

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

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

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

সর্বশেষ টেক্সট শ্রেণীবিভাগ মডেল ফাইল প্রাপ্ত

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

external/libtextclassifier/native/models/update.sh

অ্যান্ড্রয়েড রিলিজ 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 ব্যবহার করে।

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

চিত্র 1. TextClassifier ব্যবহার

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

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (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/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
,

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

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

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

অ্যান্ড্রয়েড 10 টেক্সটক্ল্যাসিফায়ার এপিআই-তে দুটি পদ্ধতি প্রবর্তন করে: suggestConversationActions এবং detectLanguage ল্যাঙ্গুয়েজ। suggestConversationActions পদ্ধতি একটি প্রদত্ত কথোপকথন থেকে প্রস্তাবিত উত্তর এবং ক্রিয়া তৈরি করে এবং 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 }

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

অ্যান্ড্রয়েড 9 নতুন টেক্সট ক্লাসিফায়ার পরিষেবার সাথে অ্যান্ড্রয়েড 8.1-এ প্রবর্তিত পাঠ্য শ্রেণিবিন্যাস কাঠামোকে প্রসারিত করেছে। টেক্সট ক্লাসিফায়ার পরিষেবা হল OEM-এর জন্য টেক্সট ক্লাসিফিকেশন সিস্টেম সাপোর্ট দেওয়ার প্রস্তাবিত উপায়। টেক্সট ক্লাসিফায়ার পরিষেবা যেকোনো সিস্টেম APK এর অংশ হতে পারে এবং প্রয়োজনে আপডেট করা যেতে পারে।

অ্যান্ড্রয়েড 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) {
        ...
    }
    ...
}

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

[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 এ পরীক্ষা চালান।

অ্যান্ড্রয়েড 9-এ অন্যান্য পাঠ্য শ্রেণিবিন্যাস পরিবর্তন

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

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

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

সর্বশেষ টেক্সট শ্রেণীবিভাগ মডেল ফাইল প্রাপ্ত

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

external/libtextclassifier/native/models/update.sh

অ্যান্ড্রয়েড রিলিজ 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 ব্যবহার করে।

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

চিত্র 1. TextClassifier ব্যবহার

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

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (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/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
,

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

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

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

অ্যান্ড্রয়েড 10 টেক্সটক্ল্যাসিফায়ার এপিআই-তে দুটি পদ্ধতি প্রবর্তন করে: suggestConversationActions এবং detectLanguage ল্যাঙ্গুয়েজ। suggestConversationActions পদ্ধতি একটি প্রদত্ত কথোপকথন থেকে প্রস্তাবিত উত্তর এবং ক্রিয়া তৈরি করে এবং 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 }

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

অ্যান্ড্রয়েড 9 নতুন টেক্সট ক্লাসিফায়ার পরিষেবার সাথে অ্যান্ড্রয়েড 8.1-এ প্রবর্তিত পাঠ্য শ্রেণিবিন্যাস কাঠামোকে প্রসারিত করেছে। টেক্সট ক্লাসিফায়ার পরিষেবা হল OEM-এর জন্য টেক্সট ক্লাসিফিকেশন সিস্টেম সাপোর্ট দেওয়ার প্রস্তাবিত উপায়। টেক্সট ক্লাসিফায়ার পরিষেবা যেকোনো সিস্টেম APK এর অংশ হতে পারে এবং প্রয়োজনে আপডেট করা যেতে পারে।

অ্যান্ড্রয়েড 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) {
        ...
    }
    ...
}

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

[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 এ পরীক্ষা চালান।

অ্যান্ড্রয়েড 9-এ অন্যান্য পাঠ্য শ্রেণিবিন্যাস পরিবর্তন

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

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

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

সর্বশেষ টেক্সট শ্রেণীবিভাগ মডেল ফাইল প্রাপ্ত

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

external/libtextclassifier/native/models/update.sh

অ্যান্ড্রয়েড রিলিজ 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 ব্যবহার করে।

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

চিত্র 1. TextClassifier ব্যবহার

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

অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (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/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