Mengidentifikasi bahasa teks dengan ML Kit di iOS

Anda dapat menggunakan ML Kit untuk mengidentifikasi bahasa pada suatu string teks. Anda dapat mendapatkan bahasa {i>string<i} yang paling mungkin serta skor keyakinan untuk semua kemungkinan bahasa {i>string<i}.

ML Kit mengenali teks di lebih dari 100 bahasa berbeda dalam skrip aslinya. Selain itu, teks berbasis aksara romawi dapat dikenali untuk bahasa Arab, Bulgaria, China, Yunani, Hindi, Jepang, dan Rusia. Lihat daftar lengkap bahasa dan skrip yang didukung.

Cobalah

Sebelum memulai

  1. Sertakan pod ML Kit berikut di Podfile Anda:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. Setelah Anda menginstal atau mengupdate Pod project, buka project Xcode menggunakan .xcworkspace. ML Kit didukung di Xcode versi 12.4 atau yang lebih baru.

Mengidentifikasi bahasa string

Untuk mengidentifikasi bahasa string, dapatkan instance LanguageIdentification, lalu teruskan string ke Metode identifyLanguage(for:).

Contoh:

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");
                           }
                         }];

Jika panggilan berhasil, Kode bahasa BCP-47 adalah diteruskan ke pengendali penyelesaian, menunjukkan bahasa teks. Jika tidak bahasa dapat dideteksi dengan yakin, kode und (tidak ditentukan) diteruskan.

Secara default, ML Kit menampilkan nilai non-und hanya jika bahasa dengan tingkat kepercayaan minimal 0,5. Anda dapat mengubah nilai minimum ini dengan meneruskan objek LanguageIdentificationOptions ke 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];

Mendapatkan bahasa string yang mungkin

Untuk mendapatkan nilai keyakinan dari bahasa string yang paling mungkin, dapatkan instance LanguageIdentification, lalu teruskan string ke Metode identifyPossibleLanguages(for:).

Contoh:

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);
}];

Jika panggilan berhasil, daftar objek IdentifiedLanguage akan diteruskan ke pengendali kelanjutan. Dari setiap objek, Anda bisa mendapatkan kode BCP-47 bahasa dan keyakinan bahwa string ditulis dalam bahasa tersebut. Perlu diketahui bahwa nilai ini menunjukkan keyakinan bahwa seluruh {i>string<i} dalam tabel yang diberikan bahasa; ML Kit tidak mengidentifikasi banyak bahasa dalam satu string.

Secara default, ML Kit hanya menampilkan bahasa dengan tingkat keyakinan minimal 0,01. Anda dapat mengubah ambang batas ini dengan meneruskan LanguageIdentificationOptions ke 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];

Jika tidak ada bahasa yang memenuhi nilai minimum ini, daftar memiliki satu item, dengan nilai und.