Bir metin dizisinin dilini belirlemek için ML Kit'i kullanabilirsiniz. Dizenin en olası dilini alabilir veya dizenin olası tüm dilleri için güven puanları alabilirsiniz.
ML Kit, yerel komut dosyalarındaki 103 farklı dildeki metni tanır. Ayrıca, romanlaştırılmış metin Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça olarak tanınabilir.
Sen başlamadan önce
- Henüz uygulamanıza Firebase'i eklemediyseniz, başlangıç kılavuzundaki adımları izleyerek bunu yapın.
- ML Kit kitaplıklarını Pod dosyanıza ekleyin:
pod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
Projenizin Pod'larını yükledikten veya güncelledikten sonra, Xcode projenizi.xcworkspace
kullanarak açtığınızdan emin olun. - Uygulamanızda Firebase'i içe aktarın:
Süratli
import Firebase
Amaç-C
@import Firebase;
Bir dizenin dilini tanımlayın
Bir dizenin dilini tanımlamak için, LanguageIdentification
örneğini alın ve ardından dizeyi identifyLanguage(for:)
yöntemine iletin.
Örneğin:
Süratli
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")
}
}
Amaç-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");
}
}];
Çağrı başarılı olursa, tamamlama işleyicisine metnin dilini belirten bir BCP-47 dil kodu iletilir. Desteklenen dillerin tam listesine bakın. Hiçbir dil güvenle algılanamazsa, und
(belirlenmemiş) kodu iletilir.
Varsayılan olarak, ML Kit, yalnızca dili en az 0,5 güven değeriyle tanımladığında und
olmayan bir değer döndürür. LanguageIdentificationOptions
nesnesini languageIdentification(options:)
öğesine ileterek bu eşiği değiştirebilirsiniz:
Süratli
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Amaç-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Bir dizenin olası dillerini alın
Bir dizenin en olası dillerinin güven değerlerini almak için, LanguageIdentification
örneğini alın ve ardından dizeyi identifyPossibleLanguages(for:)
yöntemine iletin.
Örneğin:
Süratli
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"))
}
Amaç-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);
}];
Çağrı başarılı olursa, devam işleyicisine IdentifiedLanguage
nesnelerinin bir listesi iletilir. Her nesneden dilin BCP-47 kodunu ve dizenin o dilde olduğuna dair güveni alabilirsiniz. Desteklenen dillerin tam listesine bakın. Bu değerlerin, tüm dizenin verilen dilde olduğuna dair güveni gösterdiğine dikkat edin; ML Kit, tek bir dizede birden çok dili tanımlamaz.
Varsayılan olarak, ML Kit yalnızca güven değerleri en az 0,01 olan dilleri döndürür. LanguageIdentificationOptions
nesnesini languageIdentification(options:)
öğesine ileterek bu eşiği değiştirebilirsiniz:
Süratli
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Amaç-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
Hiçbir dil bu eşiği karşılamıyorsa, listede und
değerine sahip bir öğe olacaktır.