टेक्स्ट की कैटगरी तय करने की सुविधा लागू करें

टेक्स्ट की कैटगरी तय करने वाला टूल, डेवलपर की मदद करने के लिए मशीन लर्निंग की तकनीकों का इस्तेमाल करता है टेक्स्ट को अलग-अलग कैटगरी में बांटता है.

Android 11 रिलीज़ के लिए टेक्स्ट की कैटगरी तय करने की सुविधा

Android 11 में पेश है अपडेट करने लायक डिफ़ॉल्ट सुविधा में टेक्स्ट क्लासिफ़ायर सेवा का कार्यान्वयन ExtServices मॉड्यूल. Android 11 वर्शन वाले डिवाइसों पर या उससे ज़्यादा है, तो getTextClassifier() तरीका, ExtServices मॉड्यूल में लागू होने की इस डिफ़ॉल्ट प्रोसेस को दिखाता है. डिवाइस बनाने वाली कंपनियों से हमारा सुझाव है कि वे TextClassifierService, क्योंकि इसे Mainline OTA की मदद से अपडेट किया जा सकता है अपडेट.

Android 11, लोकल टेक्स्ट की कैटगरी तय करने वाली सुविधा को भी हटा देता है डिफ़ॉल्ट रूप से लागू होने की यह सुविधा, Android 8.1. इस वजह से, getLocalTextClassifier() यह NO_OP टेक्स्ट की कैटगरी तय करने वाला टूल दिखाता है. स्थानीय लागू है, तो आपको getDefaultTextClassifierImplementation() तरीका.

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

टेस्ट करना

टेक्स्ट क्लासिफ़ायर सेवा के लागू होने की पुष्टि करने के लिए, में कंपैटबिलिटी टेस्ट सुइट (सीटीएस) के टेस्ट platform/cts/tests/tests/textclassifier/.

Android 10 के रिलीज़ के लिए टेक्स्ट की कैटगरी तय करने की सुविधा में किए गए बदलाव

Android 10 में TextClassifier एपीआई: 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 }
    

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 हो सकती है का हिस्सा बन सकता है. सिस्टम, 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 के बजाय Android 8.x पर अपडेट करें.

टेक्स्ट की कैटगरी वाले नए मॉडल की फ़ाइलें पाएं

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

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

कंपैटबिलिटी टेस्ट सुइट की जांच

Android कंपैटबिलिटी टेस्ट सुइट (सीटीएस) के संबंधित टेस्ट, यहां दिए गए हैं:

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