Mit ML Kit für iOS die Sprache eines Textes ermitteln

Mit ML Kit können Sie die Sprache eines Textstrings ermitteln. Sie können die wahrscheinlichste Sprache des Strings oder Konfidenzwerte für alle der möglichen Sprachen der Zeichenfolge.

ML Kit erkennt Text in 103 verschiedenen Sprachen in seinen nativen Skripts. Außerdem ist romanisierter Text für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch.

Hinweis

  1. Wenn Sie Ihrer App noch nicht Firebase hinzugefügt haben, folgen Sie der im Startleitfaden.
  2. Fügen Sie die ML Kit-Bibliotheken in Ihre Podfile ein:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit der .xcworkspace.
  3. Importieren Sie Firebase in Ihre App:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

Sprache eines Strings ermitteln

Wenn Sie die Sprache eines Strings ermitteln möchten, rufen Sie eine Instanz von LanguageIdentification ab und übergeben Sie den String dann an die Methode identifyLanguage(for:).

Beispiel:

Swift

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

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

Wenn der Aufruf erfolgreich ist, wird dem Completion-Handler ein BCP-47-Sprachcode übergeben, der die Sprache des Textes angibt. Hier finden Sie eine vollständige Liste der unterstützten Sprachen. Falls nein Sprache sicher erkannt werden konnte, wird der Code und (unbestimmt) übergeben.

Standardmäßig gibt ML Kit nur dann einen anderen Wert als und zurück, wenn die Sprache mit einem Konfidenzwert von mindestens 0,5 identifiziert wird. Sie können diesen Grenzwert ändern, indem Sie ein LanguageIdentificationOptions-Objekt an languageIdentification(options:) übergeben:

Swift

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

Objective-C

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

Mögliche Sprachen eines Strings abrufen

Wenn Sie die Konfidenzwerte der wahrscheinlichsten Sprachen eines Strings abrufen möchten, rufen Sie eine Instanz von LanguageIdentification ab und übergeben Sie den String dann an die Methode identifyPossibleLanguages(for:).

Beispiel:

Swift

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

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

Wenn der Aufruf erfolgreich ist, wird eine Liste von IdentifiedLanguage-Objekten an den Fortsetzungs-Handler übergeben. Aus jedem Objekt können Sie den BCP-47-Code der Sprache abrufen. und die Wahrscheinlichkeit, dass der String in dieser Sprache ist. Weitere Informationen finden Sie in der Vollständige Liste der unterstützten Sprachen Diese Werte geben die Wahrscheinlichkeit an, dass der gesamte String in der angegebenen Sprache ist. ML Kit erkennt keine mehreren Sprachen in einem einzelnen String.

Standardmäßig gibt ML Kit nur Sprachen mit Konfidenzwerten von mindestens 0,01 zurück. Sie können diesen Grenzwert ändern, indem Sie ein LanguageIdentificationOptions-Objekt an languageIdentification(options:) übergeben:

Swift

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

Objective-C

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

Wenn keine Sprache diesen Grenzwert erreicht, enthält die Liste ein Element mit dem Wert und