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

Mit ML Kit können Sie die Sprache einer Textzeichenfolge ermitteln. Sie können die wahrscheinlichste Sprache des Strings sowie Konfidenzwerte für alle möglichen Sprachen des Strings abrufen.

ML Kit erkennt Texte in über 100 verschiedenen Sprachen in ihren Mutterschriften. Darüber hinaus kann romanisierter Text auch für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch erkannt werden. Hier finden Sie eine vollständige Liste der unterstützten Sprachen und Skripts.

Ausprobieren

  • Probieren Sie die Beispiel-App aus, um ein Beispiel für die Verwendung dieser API zu sehen.

Hinweis

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

Sprache einer Zeichenfolge identifizieren

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

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 BCP-47-Sprachcode an den Abschluss-Handler übergeben, der die Sprache des Textes angibt. Wenn keine 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 die Sprache mit einem Konfidenzwert von mindestens 0,5 identifiziert wird. Sie können diesen Schwellenwert ändern, indem Sie ein LanguageIdentificationOptions-Objekt an languageIdentification(options:) übergeben:

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 abzurufen, rufen Sie eine Instanz von LanguageIdentification ab und übergeben den String dann an die Methode identifyPossibleLanguages(for:).

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 von IdentifiedLanguage-Objekten an den Fortsetzungs-Handler übergeben. Von jedem Objekt können Sie den BCP-47-Code der Sprache und die Konfidenz abrufen, ob der String in dieser Sprache ist. Beachten Sie, dass diese Werte die Wahrscheinlichkeit angeben, dass der gesamte String in der angegebenen Sprache vorliegt. ML Kit erkennt nicht mehrere Sprachen in einem einzelnen String.

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

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 diese Schwelle in keiner Sprache erreicht wird, enthält die Liste ein Element mit dem Wert und.