Sprache des Textes mit ML Kit unter iOS erkennen

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

ML Kit erkennt Text in über 100 verschiedenen Sprachen in seinen Muttersprachen. Außerdem kann romanisierter Text für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch erkannt werden. Hier finden Sie die vollständige Liste der unterstützten Sprachen und Skripts.

Testen

  • Probieren Sie die Beispiel-App aus, um sich ein Anwendungsbeispiel dieser API anzusehen.

Hinweis

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

Sprache eines Strings identifizieren

Wenn Sie die Sprache eines Strings ermitteln möchten, rufen Sie eine Instanz von LanguageIdentification ab und übergeben Sie den String 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 zuverlässig erkannt werden konnte, wird der Code und (unbestimmt) übergeben.

Standardmäßig gibt ML Kit einen Wert, der nicht und ist, nur dann 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.languageIdentification(options: options)

Objective-C

MLKLanguageIdentificationOptions *options =
    [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
MLKLanguageIdentification *languageId =
    [MLKLanguageIdentification 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.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. Für jedes Objekt können Sie den BCP-47-Code der Sprache und den Konfidenzwert des Strings in dieser Sprache abrufen. Diese Werte geben an, wie zuverlässig der gesamte String in der angegebenen Sprache ist. ML Kit identifiziert in einem String nicht mehrere Sprachen.

Standardmäßig gibt ML Kit nur Sprachen mit einem Konfidenzwert 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.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.