Identifizieren Sie die Textsprache mit ML Kit unter iOS

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 Text 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 Ihrer App Firebase noch nicht hinzugefügt haben, befolgen Sie dazu die Schritte im Leitfaden „Erste Schritte“ .
  2. Schließen Sie die ML Kit-Bibliotheken in Ihre Poddatei ein:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, müssen Sie Ihr Xcode-Projekt mit seiner .xcworkspace .
  3. Importieren Sie in Ihrer App Firebase:

    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 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 Textes angibt. Sehen Sie sich die vollständige Liste der unterstützten Sprachen an . Konnte keine Sprache sicher erkannt werden, 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];

Holen Sie sich die möglichen Sprachen einer Zeichenfolge

Um die Konfidenzwerte der wahrscheinlichsten Sprachen einer Zeichenfolge abzurufen, 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 das Vertrauen 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 .