iOS'te ML Kit ile metnin dilini belirleme

-yer tutucu18 l10n-yer

Bir metin dizisinin dilini belirlemek için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini alabilir veya dizenin olası tüm dilleri için güven puanları alabilirsiniz.

ML Kit, yerel komut dosyalarındaki 103 farklı dildeki metni tanır. Ayrıca, romanlaştırılmış metin Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça olarak tanınabilir.

Sen başlamadan önce

  1. Henüz uygulamanıza Firebase'i eklemediyseniz, başlangıç ​​kılavuzundaki adımları izleyerek bunu yapın.
  2. ML Kit kitaplıklarını Pod dosyanıza ekleyin:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    Projenizin Pod'larını yükledikten veya güncelledikten sonra, Xcode projenizi .xcworkspace kullanarak açtığınızdan emin olun.
  3. Uygulamanızda Firebase'i içe aktarın:

    Süratli

    import Firebase

    Amaç-C

    @import Firebase;

Bir dizenin dilini tanımlayın

Bir dizenin dilini tanımlamak için, LanguageIdentification örneğini alın ve ardından dizeyi identifyLanguage(for:) yöntemine iletin.

Örneğin:

Süratli

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")
  }
}

Amaç-C

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");
                           }
                         }];

Çağrı başarılı olursa, tamamlama işleyicisine metnin dilini belirten bir BCP-47 dil kodu iletilir. Desteklenen dillerin tam listesine bakın. Hiçbir dil güvenle algılanamazsa, und (belirlenmemiş) kodu iletilir.

Varsayılan olarak, ML Kit, yalnızca dili en az 0,5 güven değeriyle tanımladığında und olmayan bir değer döndürür. LanguageIdentificationOptions nesnesini languageIdentification(options:) öğesine ileterek bu eşiği değiştirebilirsiniz:

Süratli

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

Amaç-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

Bir dizenin olası dillerini alın

Bir dizenin en olası dillerinin güven değerlerini almak için, LanguageIdentification örneğini alın ve ardından dizeyi identifyPossibleLanguages(for:) yöntemine iletin.

Örneğin:

Süratli

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"))
}

Amaç-C

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, devam işleyicisine IdentifiedLanguage nesnelerinin bir listesi iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olduğuna dair güveni alabilirsiniz. Desteklenen dillerin tam listesine bakın. Bu değerlerin, tüm dizenin verilen dilde olduğuna dair güveni gösterdiğine dikkat edin; ML Kit, tek bir dizede birden çok dili tanımlamaz.

Varsayılan olarak, ML Kit yalnızca güven değerleri en az 0,01 olan dilleri döndürür. LanguageIdentificationOptions nesnesini languageIdentification(options:) öğesine ileterek bu eşiği değiştirebilirsiniz:

Süratli

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

Amaç-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

Hiçbir dil bu eşiği karşılamıyorsa, listede und değerine sahip bir öğe olacaktır.