Vous pouvez utiliser ML Kit pour identifier la langue d'une chaîne de texte. Vous pouvez obtenir la langue la plus probable de la chaîne ou obtenir des scores de confiance pour toutes les dans les différentes langues possibles.
ML Kit reconnaît du texte dans 103 langues différentes dans son écriture native. De plus, le texte romanisé peut être reconnu pour l'arabe, le bulgare, le chinois, le grec, l'hindi, le japonais et le russe.
Avant de commencer
- Si vous n'avez pas encore ajouté Firebase à votre application, suivez les les étapes décrites dans le guide de démarrage.
- Incluez les bibliothèques ML Kit dans votre Podfile:
Après avoir installé ou mis à jour les pods de votre projet, ouvrez votre Xcode projet à l'aide de sonpod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
.xcworkspace
. - Dans votre application, importez Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
Identifier la langue d'une chaîne
Pour identifier la langue d'une chaîne, récupérez une instance de
LanguageIdentification
, puis transmettez la chaîne à la fonction
identifyLanguage(for:)
.
Exemple :
Swift
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")
}
}
Objective-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");
}
}];
Si l'appel aboutit, une
Le code de langue BCP-47 est
transmis au gestionnaire d'achèvement, indiquant la langue du texte. Consultez le
liste complète des langues acceptées Si non
langue peut être détectée avec certitude, le code und
(indéterminé) est transmis.
Par défaut, ML Kit ne renvoie une valeur non und
que lorsqu'il identifie le
langage avec un indice de confiance d'au moins 0,5. Vous pouvez modifier ce seuil
en transmettant un objet LanguageIdentificationOptions
à
languageIdentification(options:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Obtenir les langues possibles d'une chaîne
Pour obtenir les valeurs de confiance des langues les plus probables d'une chaîne, obtenez une
instance de LanguageIdentification
, puis transmettez la chaîne à la
identifyPossibleLanguages(for:)
.
Exemple :
Swift
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"))
}
Objective-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);
}];
Si l'appel aboutit, une liste d'objets IdentifiedLanguage
est transmise à
gestionnaire de continuation. À partir de chaque objet, vous pouvez obtenir le code BCP-47 du langage
et le niveau de confiance
que la chaîne est dans cette langue. Consultez le
liste complète des langues acceptées Notez que
ces valeurs indiquent le niveau de confiance selon lequel la chaîne entière se trouve dans la
langue ; ML Kit n'identifie pas plusieurs langues dans une seule chaîne.
Par défaut, ML Kit ne renvoie que les langues dont le niveau de confiance est au moins égal
0,01. Vous pouvez modifier ce seuil en transmettant un objet LanguageIdentificationOptions
à languageIdentification(options:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Si aucune langue n'atteint ce seuil, la liste comportera un élément, dont la valeur
und