ระบุภาษาของข้อความด้วย 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 ไปยังเครื่องจัดการต่อเนื่อง จากออบเจ็กต์แต่ละรายการ คุณจะรับรหัส 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