iOS'te ML Kit ile metnin dilini belirleme

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

ML Kit, kendi yerel alfabelerindeki 103 farklı dildeki metni tanır. Ayrıca romanlaştırılmış metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için tanınabilir.

Sen başlamadan önce

  1. Firebase'i uygulamanıza henüz 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ımlama

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üvenli bir şekilde algılanamazsa und (belirsiz) 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 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 IdentifiedLanguage nesnelerinin bir listesi devam işleyicisine 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, dizenin tamamının verilen dilde olduğuna dair güveni gösterdiğini unutmayın; ML Kit, tek bir dizede birden çok dili tanımlamaz.

Varsayılan olarak ML Kit yalnızca güven değeri 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 bulunur.