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