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

Sie können ML Kit verwenden, um die Sprache einer Textzeichenfolge zu identifizieren. Sie können die wahrscheinlichste Sprache der Zeichenfolge oder Konfidenzwerte für alle möglichen Sprachen der Zeichenfolge abrufen.

ML Kit erkennt Texte in 103 verschiedenen Sprachen in ihren nativen Skripten. Darüber hinaus kann romanisierter Text für Arabisch, Bulgarisch, Chinesisch, Griechisch, Hindi, Japanisch und Russisch erkannt werden.

Bevor Sie beginnen

  1. Wenn Sie Firebase noch nicht zu Ihrer App hinzugefügt haben, befolgen Sie dazu die Schritte im Leitfaden „Erste Schritte“ .
  2. Fügen Sie die ML-Kit-Bibliotheken in Ihre Pod-Datei ein:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, stellen Sie sicher, dass Sie Ihr Xcode-Projekt mit seinem .xcworkspace öffnen.
  3. Importieren Sie Firebase in Ihre App:

    Schnell

    import Firebase

    Ziel c

    @import Firebase;

Identifizieren Sie die Sprache einer Zeichenfolge

Um die Sprache einer Zeichenfolge zu identifizieren, rufen Sie eine Instanz von LanguageIdentification ab und übergeben Sie die Zeichenfolge dann an die Methode identifyLanguage(for:) .

Zum Beispiel:

Schnell

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

Ziel 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 ein BCP-47-Sprachcode an den Vervollständigungshandler übergeben, der die Sprache des Texts angibt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an. 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 es die Sprache mit einem Konfidenzwert von mindestens 0,5 identifiziert. Sie können diesen Schwellenwert ändern, indem Sie ein LanguageIdentificationOptions -Objekt an languageIdentification(options:) übergeben:

Schnell

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

Ziel c

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

Ermitteln Sie die möglichen Sprachen einer Zeichenfolge

Um die Konfidenzwerte der wahrscheinlichsten Sprachen einer Zeichenfolge zu erhalten, rufen Sie eine Instanz von LanguageIdentification ab und übergeben Sie die Zeichenfolge dann an die Methode identifyPossibleLanguages(for:) .

Zum Beispiel:

Schnell

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

Ziel 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 Fortsetzungshandler übergeben. Von jedem Objekt können Sie den BCP-47-Code der Sprache und die Gewissheit abrufen, dass die Zeichenfolge in dieser Sprache vorliegt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an. Beachten Sie, dass diese Werte die Sicherheit angeben, dass die gesamte Zeichenfolge in der angegebenen Sprache vorliegt. ML Kit identifiziert nicht mehrere Sprachen in einer einzigen Zeichenfolge.

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:

Schnell

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

Ziel c

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

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