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

Sie können ML Kit verwenden, um die Sprache eines Textstrings zu ermitteln. Sie können die wahrscheinlichste Sprache der Zeichenfolge sowie Konfidenzwerte für alle der möglichen Sprachen der Zeichenfolge.

ML Kit erkennt Text in über 100 verschiedenen Sprachen in eigenen Skripts. Außerdem ist romanisierter Text für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch. Weitere Informationen finden Sie in der vollständige Liste der unterstützten Sprachen und Skripts

Jetzt ausprobieren

  • Probieren Sie die Beispiel-App aus, um sehen Sie sich ein Anwendungsbeispiel für diese API an.

Hinweis

  1. Fügen Sie die folgenden ML Kit-Pods in Ihre Podfile-Datei ein:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit dem .xcworkspace ML Kit wird ab Xcode-Version 12.4 unterstützt.

Sprache eines Strings ermitteln

Um die Sprache eines Strings zu ermitteln, rufen Sie eine Instanz von LanguageIdentification und übergeben Sie den String an den identifyLanguage(for:)-Methode.

Beispiel:

Swift

let languageId = 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

MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentification];

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

Wenn der Aufruf erfolgreich ist, wird ein Der BCP-47-Sprachcode lautet wird an den Abschluss-Handler übergeben und gibt die Sprache des Textes an. Falls nein Sprache sicher erkannt werden konnte, wird der Code und (unbestimmt) übergeben.

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

Swift

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

Objective-C

MLKLanguageIdentificationOptions *options =
    [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
MLKLanguageIdentification *languageId =
    [MLKLanguageIdentification languageIdentificationWithOptions:options];

Mögliche Sprachen eines Strings abrufen

Um die Konfidenzwerte der wahrscheinlichsten Sprachen eines Strings zu erhalten, erhalten Sie einen Instanz von LanguageIdentification und übergeben Sie den String dann an den identifyPossibleLanguages(for:)-Methode.

Beispiel:

Swift

let languageId = 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

MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentification];

[languageId identifyPossibleLanguagesForText:text
                                  completion:^(NSArray * _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 (MLKIdentifiedLanguage *language in identifiedLanguages) {
    [outputText appendFormat:@"\n(%@, %.2f)", language.languageCode, language.confidence];
  }
  NSLog(outputText);
}];

Wenn der Aufruf erfolgreich ist, wird eine Liste mit IdentifiedLanguage-Objekten an den Continuation-Handler. Aus jedem Objekt können Sie den BCP-47-Code der Sprache abrufen. und die Wahrscheinlichkeit, dass der String in dieser Sprache ist. Beachten Sie, dass zeigen diese Werte die Sicherheit an, dass sich der gesamte String im angegebenen Sprache; ML Kit erkennt nicht mehrere Sprachen in einem einzelnen String.

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

Swift

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

Objective-C

MLKLanguageIdentificationOptions *options =
    [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
MLKLanguageIdentification *languageId =
    [MLKLanguageIdentification languageIdentificationWithOptions:options];

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