iOS'te Makine Öğrenimi Kiti ile metnin dilini tanımlama

Bir metin dizesinin dilini tanımlamak için Makine Öğrenimi Kiti'ni kullanabilirsiniz. Şunları yapabilirsiniz: dizenin en olası dilini bulur veya tüm dizelere ilişkin dizenin olası dillerine değineceğiz.

ML Kit, yerel alfabelerinde 103 farklı dildeki metinleri tanır. Ayrıca, Latince yazılmış metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça

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/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '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:
    SwiftObjective-C
    import Firebase
    @import Firebase;

Dizenin dilini belirleme

Bir dizenin dilini tanımlamak için şunun bir örneğini alın: LanguageIdentification ve ardından dizeyi identifyLanguage(for:) yöntemini çağırın.

Örneğin:

SwiftObjective-C
let languageId = NaturalLanguage.naturalLanguage().languageIdentification()

languageId.identifyLanguage(for: text) { (languageCode, error) in
  if let error = error {
    print("Failed with error: \(error)")
    return
  }
  if let languageCode = languageCode, languageCode != "und" {
    print("Identified Language: \(languageCode)")
  } else {
    print("No language was identified")
  }
}
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];

[languageId identifyLanguageForText:text
                         completion:^(NSString * _Nullable languageCode,
                                      NSError * _Nullable error) {
                           if (error != nil) {
                             NSLog(@"Failed with error: %@", error.localizedDescription);
                             return;
                           }
                           if (languageCode != nil
                               && ![languageCode isEqualToString:@"und"] ) {
                             NSLog(@"Identified Language: %@", languageCode);
                           } else {
                             NSLog(@"No language was identified");
                           }
                         }];

Arama başarılı olursa, BCP-47 dil kodu metnin dilini belirten tamamlama işleyicisine iletilir. Bkz. desteklenen dillerin tam listesini inceleyin. Yanıt hayır ise dil güvenli bir şekilde algılandığında und kodu (belirsiz) iletilir.

Varsayılan olarak ML Kit, und olmayan bir değeri yalnızca güven değeri en az 0,5’tir. Bu eşiği değiştirebilirsiniz LanguageIdentificationOptions nesnesini languageIdentification(options:):

SwiftObjective-C
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

Bir dizenin olası dillerini alma

Bir dizenin en olası dillerinin güven değerlerini elde etmek için LanguageIdentification örneğini seçin ve daha sonra, dizeyi identifyPossibleLanguages(for:) yöntemini çağırın.

Örneğin:

SwiftObjective-C
let languageId = NaturalLanguage.naturalLanguage().languageIdentification()

languageId.identifyPossibleLanguages(for: text) { (identifiedLanguages, error) in
  if let error = error {
    print("Failed with error: \(error)")
    return
  }
  guard let identifiedLanguages = identifiedLanguages,
    !identifiedLanguages.isEmpty,
    identifiedLanguages[0].languageCode != "und"
  else {
    print("No language was identified")
    return
  }

  print("Identified Languages:\n" +
    identifiedLanguages.map {
      String(format: "(%@, %.2f)", $0.languageCode, $0.confidence)
      }.joined(separator: "\n"))
}
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];

[languageId identifyPossibleLanguagesForText:text
                                  completion:^(NSArray<FIRIdentifiedLanguage *> * _Nonnull identifiedLanguages,
                                               NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Failed with error: %@", error.localizedDescription);
    return;
  }
  if (identifiedLanguages.count == 1
      && [identifiedLanguages[0].languageCode isEqualToString:@"und"] ) {
    NSLog(@"No language was identified");
    return;
  }
  NSMutableString *outputText = [NSMutableString stringWithFormat:@"Identified Languages:"];
  for (FIRIdentifiedLanguage *language in identifiedLanguages) {
    [outputText appendFormat:@"\n(%@, %.2f)", language.languageCode, language.confidence];
  }
  NSLog(outputText);
}];

Çağrı başarılı olursa IdentifiedLanguage nesnelerinden oluşan bir liste devamlılık işleyici. Her nesneden dilin BCP-47 kodunu alabilirsiniz ve dizenin o dilde olduğundan emin olun. Bkz. desteklenen dillerin tam listesini inceleyin. Lütfen bu değerler, tüm dizenin belirtilen dil; Makine Öğrenimi Kiti, tek bir dizede birden fazla dili tanımlamaz.

ML Kit varsayılan olarak yalnızca en az şu güven değerine sahip dilleri döndürür: 0,01. Bu eşiği, Müşteri Eşleştirme için languageIdentification(options:) öğesine LanguageIdentificationOptions nesne eklendi:

SwiftObjective-C
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

Bu eşiği karşılayan dil yoksa listede şu değeri içeren bir öğe bulunur: und

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

Güncellenme tarihi: Feb 28, 2025