iOS'te Makine Öğrenimi Kiti ile Akıllı Yanıtlar Oluşturma

Mesaj yanıtlarını cihaz üzerinde oluşturmak için ML Kit'i kullanabilirsiniz. modeli.

Akıllı yanıtlar oluşturmak için ML Kit'e son mesajların bir günlüğünü yardımcı olur. Makine Öğrenimi Kiti sohbetin İngilizce olduğunu belirlerse ve Bu konuşmanın hassas olabilecek bir konusu yok, ML Kit , kullanıcılarınıza önerebileceğiniz üç adede kadar yanıt oluşturur.

Başlamadan önce

  1. Firebase'i uygulamanıza henüz eklemediyseniz başlangıç kılavuzundaki adımlara bakın.
  2. ML Kit kitaplıklarını Podfile'ınıza ekleyin:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    . Projenizin kapsüllerini yükledikten veya güncelledikten sonra Xcode .xcworkspace kullanarak projenize dahil olabilir.
  3. Uygulamanızda Firebase'i içe aktarın:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

1. Sohbet geçmişi nesnesi oluşturma

Akıllı yanıtlar oluşturmak için ML Kit'i kronolojik olarak sıralanmış bir dizi En eski zaman damgası başta olmak üzere TextMessage nesne. Kullanıcı mesaj gönderip alma, mesajı, zaman damgasını ve e-postayı ileti dizisi geçmişi içine aktarmanızı sağlar.

Kullanıcı kimliği, yardımcı olur. Kullanıcı kimliğinin herhangi bir kullanıcı verisine karşılık gelmesi gerekmez. ve kullanıcı kimliğinin görüşmeler arasında tutarlı olması çağrılarına karşılık gelir.

İleti, yanıtlar önermek istediğiniz kullanıcı tarafından gönderildiyse Doğru değerine isLocalUser.

Swift

var conversation: [TextMessage] = []

// Then, for each message sent and received:
let message = TextMessage(
    text: "How are you?",
    timestamp: Date().timeIntervalSince1970,
    userID: "userId",
    isLocalUser: false)
conversation.append(message)

Objective-C

NSMutableArray *conversation = [NSMutableArray array];

// Then, for each message sent and received:
FIRTextMessage *message = [[FIRTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

Bir ileti dizisi geçmişi nesnesi aşağıdaki örneğe benzer:

Zaman damgası User-ID Yerel Kullanıcı mısınız? Mesaj
21 Şubat Perşembe 13:13:39 PST 2019 true yolda mısınız?
21 Şubat Perşembe 13:15:03 PST 2019 ARKADAŞ0 false Üzgünüz, geciktiğiniz için yazıyorum.

Yukarıdaki örnekte yer alan en son mesajın yerel olmayan bir kullanıcıya ait olduğunu unutmayın. belirtir. Makine Öğrenimi Kiti, gönderilecek yanıtlar önerdiği için bu önemlidir. Yerel kullanıcı tarafından belirlenir. Projeyi tamamlamak için Makine Öğrenimi Kiti, kullanıcınızın gönderebileceği bir mesajla biten yanıt vermek istiyorsunuz.

2. Mesaj yanıtları alma

Bir mesaja akıllı yanıtlar oluşturmak için SmartReply örneği alın ve geçin sohbet geçmişini suggestReplies(for:completion:) yöntemiyle değiştirme:

Swift

let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.smartReply().suggestReplies(for: conversation) { result, error in
    guard error == nil, let result = result else {
        return
    }
    if (result.status == .notSupportedLanguage) {
        // The conversation's language isn't supported, so the
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
                           completion:^(FIRSmartReplySuggestionResult * _Nullable result,
                                        NSError * _Nullable error) {
  if (error || !result) {
    return;
  }
  if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
      // The conversation's language isn't supported, so the
      // the result doesn't contain any suggestions.
  } else if (result.status == FIRSmartReplyResultStatusSuccess) {
      // Successfully suggested smart replies.
      // ...
  }
}];
]

İşlem başarılı olursa şuraya bir SmartReplySuggestionResult nesnesi iletilir: tamamlama işleyicisi olabilir. Bu nesnede en fazla 3 önerilen liste bulunuyor kullanıcınıza sunabileceğiniz yanıtlar:

Swift

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

Model, bilgiye güvenmiyorsa ML Kit'in sonuç döndürmeyebileceğini unutmayın. önerilen yanıtların alaka düzeyi açısından İngilizce veya model hassas bir konu tespit ederse.