Puoi utilizzare ML Kit per identificare la lingua di una stringa di testo. Puoi ottenere la lingua più probabile della stringa o ottenere punteggi di confidenza per tutte le lingue possibili della stringa.
ML Kit riconosce i testi in 103 lingue diverse nei loro script nativi. Inoltre, il testo romanizzato può essere riconosciuto in arabo, bulgaro, cinese, greco, hindi, giapponese e russo.
Prima di iniziare
- Se non hai già aggiunto Firebase alla tua app, puoi farlo seguendo le istruzioni riportate in passaggi nella Guida introduttiva.
- Includi le librerie del kit ML nel tuo podfile:
Dopo aver installato o aggiornato i pod del progetto, assicurati di aprire Xcode utilizzando il suopod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
.xcworkspace
. - Nell'app, importa Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
Identificare il linguaggio di una stringa
Per identificare la lingua di una stringa, ottieni un'istanza di
LanguageIdentification
, quindi passa la stringa al token
Metodo identifyLanguage(for:)
.
Ad esempio:
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");
}
}];
Se la chiamata ha esito positivo,
Il codice lingua BCP-47 è
passati al gestore del completamento, che indica la lingua del testo. Consulta le
elenco completo delle lingue supportate. In caso contrario
la lingua possa essere rilevata con sicurezza, il codice und
(non determinato) viene passato.
Per impostazione predefinita, ML Kit restituisce un valore diverso da 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:)
:
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];
Ottieni le possibili lingue di una stringa
Per ottenere i valori di confidenza delle lingue più probabili di una stringa, recupera un'istanza di LanguageIdentification
e poi passa la stringa al metodo identifyPossibleLanguages(for:)
.
Ad esempio:
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);
}];
Se la chiamata ha esito positivo, un elenco di oggetti IdentifiedLanguage
viene passato al gestore di continuazione. Da ogni oggetto puoi ottenere il codice BCP-47 della lingua
e il grado di certezza che la stringa sia in quella lingua. Consulta le
elenco completo delle lingue supportate. Tieni presente che
questi valori indicano la confidenza con cui l'intera stringa si trova
lingua; ML Kit non identifica più linguaggi in una singola stringa.
Per impostazione predefinita, ML Kit restituisce solo le lingue con valori di confidenza pari almeno a
0,01. Puoi modificare questa soglia passando un parametro
LanguageIdentificationOptions
oggetto in 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];
Se nessuna lingua soddisfa questa soglia, l'elenco conterrà un elemento con il valore
und
.