Puoi utilizzare ML Kit per identificare la lingua di una stringa di testo. È possibile ottenere la lingua più probabile della stringa o ottenere punteggi di affidabilità per tutte le possibili lingue della stringa.
ML Kit riconosce il testo in 103 lingue diverse nei loro script nativi. Inoltre, il testo romanizzato può essere riconosciuto per arabo, bulgaro, cinese, greco, hindi, giapponese e russo.
Prima di iniziare
- Se non hai già aggiunto Firebase alla tua app, fallo seguendo i passaggi nella Guida introduttiva .
- Includi le librerie ML Kit nel tuo Podfile:
pod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
Dopo aver installato o aggiornato i Pod del tuo progetto, assicurati di aprire il tuo progetto Xcode usando il suo.xcworkspace
. - Nella tua app, importa Firebase:
Veloce
import Firebase
Obiettivo-C
@import Firebase;
Identifica la lingua di una stringa
Per identificare la lingua di una stringa, ottenere un'istanza di LanguageIdentification
e quindi passare la stringa al metodo identifyLanguage(for:)
.
Per esempio:
Veloce
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")
}
}
Obiettivo-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");
}
}];
Se la chiamata ha esito positivo, un codice lingua BCP-47 viene passato al gestore di completamento, indicando la lingua del testo. Consulta l' elenco completo delle lingue supportate . Se nessuna lingua può essere rilevata con sicurezza, il codice und
(indeterminato) viene passato.
Per impostazione predefinita, ML Kit restituisce un valore non und
solo quando identifica la lingua con un valore di confidenza di almeno 0,5. Puoi modificare questa soglia passando un oggetto LanguageIdentificationOptions
a languageIdentification(options:)
:
Veloce
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Obiettivo-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Ottieni le possibili lingue di una stringa
Per ottenere i valori di confidenza delle lingue più probabili di una stringa, ottenere un'istanza di LanguageIdentification
e quindi passare la stringa al metodo identifyPossibleLanguages(for:)
.
Per esempio:
Veloce
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"))
}
Obiettivo-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);
}];
Se la chiamata riesce, un elenco di oggetti IdentifiedLanguage
viene passato al gestore di continuazione. Da ogni oggetto, puoi ottenere il codice BCP-47 della lingua e la certezza che la stringa sia in quella lingua. Consulta l' elenco completo delle lingue supportate . Si noti che questi valori indicano la certezza che l'intera stringa è nella lingua data; ML Kit non identifica più lingue in una singola stringa.
Per impostazione predefinita, ML Kit restituisce solo le lingue con valori di confidenza di almeno 0,01. Puoi modificare questa soglia passando un oggetto LanguageIdentificationOptions
a languageIdentification(options:)
:
Veloce
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Obiettivo-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Se nessuna lingua soddisfa questa soglia, l'elenco conterrà un elemento, con il valore und
.