Puoi utilizzare ML Kit per identificare la lingua di una stringa di testo. Puoi ottenere la lingua con maggiore probabilità della stringa e i punteggi di affidabilità di tutte le possibili lingue della stringa.
ML Kit riconosce il testo in oltre 100 lingue diverse nei rispettivi script nativi. Inoltre, il testo romanizzato può essere riconosciuto per arabo, bulgaro, cinese, greco, hindi, giapponese e russo. Consulta l'elenco completo delle lingue e degli script supportati.
Prova subito
- Prova l'app di esempio per vedere un esempio di utilizzo di questa API.
Prima di iniziare
- Includi i seguenti pod di ML Kit nel tuo podfile:
pod 'GoogleMLKit/LanguageID', '3.2.0'
- Dopo aver installato o aggiornato i pod del progetto, apri il progetto Xcode utilizzando
.xcworkspace
. ML Kit è supportato in Xcode versione 12.4 o successiva.
Identificare la lingua di una stringa
Per identificare il linguaggio di una stringa, ottieni un'istanza di
LanguageIdentification
, quindi passa la stringa al metodo
identifyLanguage(for:)
.
Ad esempio:
Swift
let languageId = 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
MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentification]; [languageId identifyLanguageForText:text completion:^(NSString * _Nullable languageCode, NSError * _Nullable error) { if (error != nil) { NSLog(@"Failed with error: %@", error.localizedDescription); return; } if (![languageCode isEqualToString:@"und"] ) { NSLog(@"Identified Language: %@", languageCode); } else { NSLog(@"No language was identified"); } }];
Se la chiamata ha esito positivo, viene trasmesso un codice lingua BCP-47 al gestore di completamento, che indica la lingua del testo. Se non è stato rilevato alcun linguaggio, il codice und
(non determinato) viene passato.
Per impostazione predefinita, un 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:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4) let languageId = NaturalLanguage.languageIdentification(options: options)
Objective-C
MLKLanguageIdentificationOptions *options = [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4]; MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentificationWithOptions:options];
Visualizzare le possibili lingue di una stringa
Per ottenere i valori di confidenza delle lingue più probabili di una stringa, ottieni un'istanza di LanguageIdentification
, quindi passa la stringa al metodo identifyPossibleLanguages(for:)
.
Ad esempio:
Swift
let languageId = 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
MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentification]; [languageId identifyPossibleLanguagesForText:text completion:^(NSArray* _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 (MLKIdentifiedLanguage *language in identifiedLanguages) { [outputText appendFormat:@"\n(%@, %.2f)", language.languageCode, language.confidence]; } NSLog(outputText); }];
Se la chiamata ha esito positivo, viene trasmesso un elenco di oggetti IdentifiedLanguage
al gestore di interruzione. Da ogni oggetto, puoi ottenere il codice BCP-47 della lingua e la certezza che la stringa è in quella lingua. Ricorda che questi valori indicano la certezza che l'intera stringa è nella lingua specificata; 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:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4) let languageId = NaturalLanguage.languageIdentification(options: options)
Objective-C
MLKLanguageIdentificationOptions *options = [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4]; MLKLanguageIdentification *languageId = [MLKLanguageIdentification languageIdentificationWithOptions:options];
Se nessuna lingua soddisfa questa soglia, l'elenco contiene una voce, con il valore und
.