Android पर एमएल किट की मदद से स्मार्ट जवाब जनरेट करना

डिवाइस पर मौजूद मैसेज का जवाब देने के लिए, एमएल किट का इस्तेमाल किया जा सकता है मॉडल.

स्मार्ट जवाब जनरेट करने के लिए, आपको ML किट में हाल ही के मैसेज का लॉग पास करना होगा. बातचीत. अगर ML Kit को लगता है कि बातचीत अंग्रेज़ी में है, और बातचीत का विषय ऐसा नहीं है जो संवेदनशील हो, एमएल किट ज़्यादा से ज़्यादा तीन जवाब जनरेट करता है, जिनका सुझाव अपने उपयोगकर्ता को दिया जा सकता है.

शुरू करने से पहले

  1. अगर आपने अब तक ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
  2. अपने मॉड्यूल में एमएल किट Android लाइब्रेरी के लिए डिपेंडेंसी जोड़ें (ऐप्लिकेशन-लेवल) Gradle फ़ाइल (आम तौर पर app/build.gradle):
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'
    }
    
  3. अपनी ऐप्लिकेशन-लेवल build.gradle फ़ाइल में भी, कंप्रेस करने की सुविधा बंद करें कुल tflite फ़ाइलें:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }
    

1. बातचीत के इतिहास के लिए ऑब्जेक्ट बनाएं

स्मार्ट जवाब जनरेट करने के लिए, आपको ML Kit को समय के हिसाब से, क्रम से List पास करना होगा FirebaseTextMessage ऑब्जेक्ट में से, जिसमें सबसे पुराने टाइमस्टैंप पहले हैं.

जब भी उपयोगकर्ता कोई संदेश भेजे, तो संदेश और उसका टाइमस्टैम्प बातचीत का इतिहास:

Java

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));

Kotlin

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

जब भी उपयोगकर्ता को कोई संदेश मिले, तो संदेश, उसका टाइमस्टैम्प, और बातचीत के इतिहास को भेजने वाले का यूज़र आईडी. यूज़र आईडी ऐसी कोई भी स्ट्रिंग हो सकती है जो बातचीत में भेजने वाले की खास पहचान करता है. यूज़र आईडी की ज़रूरत नहीं है का इस्तेमाल उपयोगकर्ता के डेटा से किया जा सकता है, और यूज़र आईडी का एक जैसा होना ज़रूरी नहीं है बातचीत या स्मार्ट जवाब जनरेटर के शुरू होने के बीच का समय शामिल होता है.

Java

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));

Kotlin

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId))

बातचीत के इतिहास का ऑब्जेक्ट कैसा दिखता है, यह जानने के लिए नीचे दिया गया उदाहरण देखें:

टाइमस्टैंप यूज़र आईडी स्थानीय उपयोगकर्ता? मैसेज
गुरुवार 21 फ़रवरी 13:13:39 पीएसटी 2019 सही क्या आप अपने रास्ते में हैं?
गुरुवार 21 फ़रवरी 13:15:03 पीएसटी 2019 दोस्त0 गलत मुझे देर हो रही है, माफ़ करें!

ध्यान दें कि ऊपर दिए गए उदाहरण में हाल ही का मैसेज किसी गैर-स्थानीय मैसेज से आया है उपयोगकर्ता. यह अहम है, क्योंकि एमएल किट ऐसे जवाब सुझाती है जो भेजे जाने के लिए होते हैं आपके ऐप्लिकेशन के उपयोगकर्ता से: स्थानीय उपयोगकर्ता. पक्का करें कि आपने पास ML किट एक बातचीत लॉग है, जिसके आखिर में एक मैसेज होता है, जिसे आपका उपयोगकर्ता जवाब देना चाहते हैं.

2. मैसेज के जवाब पाएं

किसी मैसेज के स्मार्ट जवाब जनरेट करने के लिए, FirebaseSmartReply का इंस्टेंस पाएं और बातचीत के इतिहास को इसके suggestReplies() तरीके में भेजें:

Java

FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
        .addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
            @Override
            public void onSuccess(SmartReplySuggestionResult result) {
                if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                    // The conversation's language isn't supported, so the
                    // the result doesn't contain any suggestions.
                } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                    // Task completed successfully
                    // ...
                }
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Task failed with an exception
                // ...
            }
        });

Kotlin

val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
        .addOnSuccessListener { result ->
            if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                // The conversation's language isn't supported, so the
                // the result doesn't contain any suggestions.
            } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                // Task completed successfully
                // ...
            }
        }
        .addOnFailureListener {
            // Task failed with an exception
            // ...
        }

अगर कार्रवाई पूरी होती है, तो SmartReplySuggestionResult ऑब्जेक्ट को सक्सेस हैंडलर के तहत काम करता है. इस ऑब्जेक्ट में सुझाए गए ज़्यादा से ज़्यादा तीन जवाबों की सूची होती है. इसे उपयोगकर्ता को दिखाया जा सकता है:

Java

for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}

Kotlin

for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

ध्यान दें कि अगर मॉडल को मशीन लर्निंग के बारे में नहीं पता, तो हो सकता है कि वह नतीजे न दिखाए सुझाए गए जवाब कितने काम के हैं, लेकिन इनपुट बातचीत अंग्रेज़ी भाषा हो या मॉडल, संवेदनशील विषय-वस्तु का पता लगाता हो.