ระบุภาษาของข้อความด้วย ML Kit บน iOS

คุณใช้ ML Kit เพื่อระบุภาษาของสตริงข้อความได้ คุณสามารถ รับภาษาที่เป็นไปได้มากที่สุดของสตริง และคะแนนความเชื่อมั่นสำหรับ ภาษาที่เป็นไปได้ของสตริง

ML Kit จดจำข้อความในสคริปต์ในภาษาต่างๆ มากกว่า 100 ภาษา นอกจากนี้ ตัวอักษรภาษาอังกฤษสามารถจดจำสำหรับภาษาอาหรับ บัลแกเรีย ภาษาจีน กรีก ฮินดี ญี่ปุ่น และรัสเซีย โปรดดู รายการทั้งหมดของภาษาและสคริปต์ที่สนับสนุน

ลองเลย

ก่อนเริ่มต้น

  1. ใส่พ็อด ML Kit ต่อไปนี้ใน Podfile
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. หลังจากที่คุณติดตั้งหรืออัปเดตพ็อดของโปรเจ็กต์แล้ว ให้เปิดโปรเจ็กต์ Xcode โดยใช้ .xcworkspace ทั้งนี้ ML Kit รองรับ Xcode เวอร์ชัน 12.4 ขึ้นไป

ระบุภาษาของสตริง

หากต้องการระบุภาษาของสตริง รับอินสแตนซ์ของ LanguageIdentification แล้วส่งสตริงไปยัง identifyLanguage(for:) วิธี

เช่น

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

หากการโทรสำเร็จ รหัสภาษา BCP-47 คือ ไปยังตัวแฮนเดิลการเสร็จสมบูรณ์ โดยระบุภาษาของข้อความ หากไม่ใช่ สามารถตรวจพบภาษาได้อย่างมั่นใจ รหัส und (ไม่กำหนด) จะถูกส่ง

โดยค่าเริ่มต้น ML Kit จะแสดงผลค่าที่ไม่ใช่ und ก็ต่อเมื่อมีการระบุค่า ที่มีค่าความเชื่อมั่นอย่างน้อย 0.5 คุณเปลี่ยนแปลงเกณฑ์นี้ได้ โดยการส่งออบเจ็กต์ LanguageIdentificationOptions ไปยัง 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];

ดูภาษาที่เป็นไปได้ของสตริง

หากต้องการค่าความเชื่อมั่นของภาษาที่มีแนวโน้มมากที่สุดของสตริง ให้ใช้ ของ LanguageIdentification แล้วส่งสตริงไปยัง identifyPossibleLanguages(for:) วิธี

เช่น

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

หากการเรียกสำเร็จ ระบบจะส่งรายการออบเจ็กต์ IdentifiedLanguage รายการไปยัง Continuation Handler จากออบเจ็กต์แต่ละรายการ คุณจะเห็นรหัส BCP-47 ของภาษา และมั่นใจว่าสตริงอยู่ในภาษานั้น โปรดทราบว่า ค่าเหล่านี้แสดงถึงความเชื่อมั่นว่าสตริงทั้งหมดอยู่ในรูปแบบ ภาษา; ML Kit จะระบุหลายภาษาในสตริงเดียวไม่ได้

โดยค่าเริ่มต้น ML Kit จะแสดงผลเฉพาะภาษาที่มีค่าความเชื่อมั่นอย่างน้อย 0.01 คุณสามารถเปลี่ยนเกณฑ์นี้ได้โดยการส่ง LanguageIdentificationOptions ออบเจ็กต์ไปยัง 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];

หากไม่มีภาษาที่ตรงกับเกณฑ์นี้ รายการจะมี 1 รายการพร้อมค่า und