Bir metin dizesinin dilini tanımlamak için Makine Öğrenimi Kiti'ni kullanabilirsiniz. Dizenin en olası dilini veya dizenin olası tüm dilleri için güven puanları alabilirsiniz.
ML Kit, yerel alfabelerinde 103 farklı dildeki metinleri tanır. Ayrıca Latin alfabesiyle yazılan metinler Arapça, Bulgarca, Çince, Yunanca, Hintçe, Japonca ve Rusça için de tanınabilir.
Başlamadan önce
- Firebase'i uygulamanıza henüz eklemediyseniz başlangıç kılavuzundaki adımları uygulayın.
- ML Kit kitaplıklarını Podfile dosyanıza ekleyin:
pod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
Projenizin kapsüllerini yükledikten veya güncelledikten sonra, Xcode projenizi.xcworkspace
kullanarak açtığınızdan emin olun. - Uygulamanızda Firebase'i içe aktarın:
Swift
import Firebase
Objective-C
@import Firebase;
Dizenin dilini belirleme
Bir dizenin dilini tanımlamak için LanguageIdentification
örneği alın ve ardından dizeyi identifyLanguage(for:)
yöntemine iletin.
Örnek:
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");
}
}];
Çağrı başarılı olursa tamamlama işleyiciye metnin dilini gösteren bir BCP-47 dil kodu iletilir. Desteklenen dillerin tam listesini inceleyin. Hiçbir dil güvenli bir şekilde algılanamazsa und
(belirsiz) kodu iletilir.
Varsayılan olarak ML Kit, yalnızca en az 0,5 güven değeriyle dili tanımladığında und
olmayan bir değer döndürür. languageIdentification(options:)
adresine LanguageIdentificationOptions
nesnesi ileterek bu eşiği değiştirebilirsiniz:
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];
Bir dizenin olası dillerini alma
Bir dizenin en olası dillerinin güven değerlerini elde etmek için LanguageIdentification
örneğini alın ve ardından dizeyi identifyPossibleLanguages(for:)
yöntemine iletin.
Örnek:
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);
}];
Çağrı başarılı olursa devamlılık işleyiciye IdentifiedLanguage
nesnelerinden oluşan bir liste aktarılır. Her nesneden dilin BCP-47 kodunu ve dizenin bu dilde olup olmadığını öğrenebilirsiniz. Desteklenen dillerin tam listesini inceleyin. Bu değerler, tüm dizenin belirtilen dilde olduğunun güvenilirliğini gösterir. ML Kit, tek bir dizede birden fazla dil tanımlamaz.
ML Kit, varsayılan olarak yalnızca en az 0,01 güven değerine sahip dilleri döndürür. languageIdentification(options:)
öğesine LanguageIdentificationOptions
nesnesi ileterek bu eşiği değiştirebilirsiniz:
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];
Bu eşiği karşılayan dil yoksa listede und
değerine sahip bir öğe bulunur.