टेक्स्ट क्लासिफायर लागू करें

टेक्स्ट क्लासिफायर डेवलपर्स को टेक्स्ट को वर्गीकृत करने में मदद करने के लिए मशीन लर्निंग तकनीकों का उपयोग करता है।

एंड्रॉइड 11 रिलीज़ टेक्स्ट क्लासिफायर

एंड्रॉइड 11 ExtServices मॉड्यूल में टेक्स्ट क्लासिफायर सेवा का एक अद्यतन करने योग्य डिफ़ॉल्ट कार्यान्वयन पेश करता है। एंड्रॉइड 11 या उच्चतर चलाने वाले उपकरणों पर, getTextClassifier() विधि इस डिफ़ॉल्ट कार्यान्वयन को ExtServices मॉड्यूल में लौटाती है। डिवाइस निर्माताओं को TextClassifierService के इस कार्यान्वयन का उपयोग करने की अनुशंसा की जाती है क्योंकि इसे मेनलाइन OTA अपडेट के माध्यम से अपडेट किया जा सकता है।

एंड्रॉइड 11 पहले से एंड्रॉइड 8.1 में पेश किए गए स्थानीय टेक्स्ट क्लासिफायर डिफॉल्ट कार्यान्वयन को भी हटा देता है। परिणामस्वरूप, getLocalTextClassifier() एक NO_OP टेक्स्ट क्लासिफायर लौटाता है। स्थानीय कार्यान्वयन के बजाय, आपको getDefaultTextClassifierImplementation() विधि का उपयोग करना चाहिए।

डिवाइस निर्माताओं के लिए जो अपने स्वयं के टेक्स्ट वर्गीकरण एल्गोरिदम का उपयोग करना चाहते हैं, वे config.xml फ़ाइल में config_defaultTextClassifierPackage निर्दिष्ट करके एक कस्टम टेक्स्ट क्लासिफायर सेवा लागू कर सकते हैं। यदि यह कॉन्फ़िगरेशन निर्दिष्ट नहीं है, तो डिफ़ॉल्ट सिस्टम कार्यान्वयन का उपयोग किया जाता है। कस्टम कार्यान्वयन TextClassifierService.getDefaultTextClassifierImplementation(Context) पर कॉल करके डिफ़ॉल्ट कार्यान्वयन का एक उदाहरण प्राप्त कर सकते हैं। अधिक जानकारी के लिए, कस्टम टेक्स्ट क्लासिफायर सेवा लागू करना देखें।

परिक्षण

टेक्स्ट क्लासिफायर सेवा के अपने कार्यान्वयन को सत्यापित करने के लिए, platform/cts/tests/tests/textclassifier/ में संगतता परीक्षण सूट (सीटीएस) परीक्षणों का उपयोग करें।

एंड्रॉइड 10 ने टेक्स्ट क्लासिफायर एन्हांसमेंट जारी किया

एंड्रॉइड 10 टेक्स्टक्लासिफायर एपीआई में दो तरीके पेश करता है: 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 }
    

एंड्रॉइड 9 ने टेक्स्ट क्लासिफायर एन्हांसमेंट जारी किया

एंड्रॉइड 9 ने नई टेक्स्ट क्लासिफायर सेवा के साथ एंड्रॉइड 8.1 में पेश किए गए टेक्स्ट वर्गीकरण ढांचे को बढ़ाया। टेक्स्ट क्लासिफायर सेवा ओईएम के लिए टेक्स्ट वर्गीकरण प्रणाली समर्थन प्रदान करने का अनुशंसित तरीका है। टेक्स्ट क्लासिफायर सेवा किसी भी सिस्टम एपीके का हिस्सा हो सकती है और आवश्यकता पड़ने पर इसे अपडेट किया जा सकता है।

एंड्रॉइड 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>

सिस्टम छवि में टेक्स्ट क्लासिफायर सेवा बनाएं

आपकी कस्टम टेक्स्ट क्लासिफायर सेवा एक स्टैंडअलोन एपीके हो सकती है जो सिस्टम इमेज या किसी अन्य सिस्टम एपीके के एक हिस्से में बनाई गई है। सेवा को हल करने के लिए सिस्टम PackageManager.MATCH_SYSTEM_ONLY का उपयोग करता है।

परिक्षण

android.view.textclassifier.cts में परीक्षण चलाएँ।

एंड्रॉइड 9 में अन्य टेक्स्ट वर्गीकरण परिवर्तन

स्थापित भाषा मॉड्यूल का निरीक्षण करना देखें।

Android 9 मॉडल फ़ाइलें Android 8.x मॉडल फ़ाइलों के साथ असंगत हैं।

एंड्रॉइड 9 मॉडल फ़ाइलों का नामकरण पैटर्न है: एंड्रॉइड 8.x में textclassifier.smartselection.en.model के बजाय texclassifier.[language-code].model (उदाहरण के लिए, textclassifier.en.model )।

नवीनतम पाठ वर्गीकरण मॉडल फ़ाइलें प्राप्त करें

सबसे अद्यतित मॉडल प्राप्त करने के लिए निम्नलिखित स्क्रिप्ट चलाई जा सकती है, जो स्रोत ट्री में टेक्स्टक्लासिफायर मॉडल को अपडेट करती है:

external/libtextclassifier/native/models/update.sh

एंड्रॉइड रिलीज़ 8.1 टेक्स्ट क्लासिफायर

एंड्रॉइड 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 देखें।

टेक्स्टव्यू और वेबव्यू स्मार्ट चयन और स्मार्ट टेक्स्ट शेयर सुविधाओं के लिए टेक्स्टक्लासिफायर का उपयोग करते हैं।

पाठ वर्गीकरणकर्ता का उपयोग

चित्र 1. टेक्स्टक्लासिफायर का उपयोग

टेक्स्टक्लासिफायर न्यूरल-नेट मॉडल

एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) में टेक्स्ट को वर्गीकृत करने के लिए कई तंत्रिका नेटवर्क मॉडल शामिल हैं। प्रत्येक मॉडल फ़ाइल को एक ही भाषा के लिए प्रशिक्षित किया जाता है। आप मॉडलों का कोई भी संयोजन स्थापित कर सकते हैं. मॉडलों को इसमें परिभाषित किया गया है:

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 इरादे के माध्यम से अपडेट को ट्रिगर करता है। इस सिस्टम एपीआई इरादे को प्रसारित करके, फ्रेमवर्क वर्तमान में निर्धारित भाषा के भाषा मॉडल को अपडेट करने में सक्षम है। मॉडल में स्वयं समर्थित भाषा और एक संस्करण संख्या होती है इसलिए नवीनतम उपयुक्त मॉडल का उपयोग किया जाता है।

इसलिए आपको सभी भाषाओं के लिए मॉडल पहले से लोड करने की आवश्यकता नहीं है क्योंकि उन्हें बाद में जोड़ा जा सकता है। यदि निर्दिष्ट भाषा के लिए कोई मॉडल फ़ाइल नहीं मिलती है, तो पाठ वर्गीकरण नो-ऑप मान लौटाता है।

संगतता परीक्षण सुइट परीक्षण

संबद्ध एंड्रॉइड संगतता परीक्षण सूट (सीटीएस) परीक्षण यहां पाए जा सकते हैं:

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