Bir metin dizisinin dilini tanımlamak için ML Kit'i kullanabilirsiniz. Dizenin en muhtemel dilini alabilir veya dizenin tüm olası dilleri için güven puanları alabilirsiniz.
ML Kit, kendi yerel alfabelerindeki 103 farklı dildeki metni tanır. Ayrıca romanlaştırılmış metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için tanınabilir.
Sen başlamadan önce
- Firebase'i uygulamanıza henüz 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ımlama
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üvenli bir şekilde algılanamazsa und
(belirsiz) 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 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 IdentifiedLanguage
nesnelerinin bir listesi devam işleyicisine 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, dizenin tamamının verilen dilde olduğuna dair güveni gösterdiğini unutmayın; ML Kit, tek bir dizede birden çok dili tanımlamaz.
Varsayılan olarak ML Kit yalnızca güven değeri 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 bulunur.