Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

ก่อนจะเริ่ม

  1. หากคุณยังไม่ได้เพิ่ม Firebase ในแอปของคุณ ให้ทำตามขั้นตอนในคู่มือ การเริ่มต้นใช้ งาน
  2. รวมไลบรารี ML Kit ใน Podfile ของคุณ:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    หลังจากที่คุณติดตั้งหรืออัปเดต Pod ของโปรเจ็กต์แล้ว อย่าลืมเปิดโปรเจ็กต์ Xcode โดยใช้ . .xcworkspace
  3. ในแอปของคุณ ให้นำเข้า Firebase:

    Swift

    import Firebase

    วัตถุประสงค์-C

    @import Firebase;

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

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

ตัวอย่างเช่น:

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

วัตถุประสงค์-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");
                           }
                         }];

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

ตามค่าเริ่มต้น ML Kit จะส่งกลับค่าที่ไม่ใช่ und เฉพาะเมื่อระบุภาษาที่มีค่าความเชื่อมั่นอย่างน้อย 0.5 คุณสามารถเปลี่ยนเกณฑ์นี้ได้โดยส่งออบเจ็กต์ LanguageIdentificationOptions ไปยัง languageIdentification(options:) :

Swift

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

วัตถุประสงค์-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

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

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

ตัวอย่างเช่น:

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

วัตถุประสงค์-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);
}];

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

ตามค่าเริ่มต้น ML Kit จะส่งกลับเฉพาะภาษาที่มีค่าความเชื่อมั่นอย่างน้อย 0.01 คุณสามารถเปลี่ยนเกณฑ์นี้ได้โดยส่งออบเจ็กต์ LanguageIdentificationOptions ไปยัง languageIdentification(options:) :

Swift

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

วัตถุประสงค์-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

หากไม่มีภาษาใดที่ตรงตามเกณฑ์นี้ รายการจะมีหนึ่งรายการ โดยมีค่าเป็น und