شناسایی زبان نوشتار با ML Kit در iOS

می‌توانید از ML Kit برای شناسایی زبان رشته نوشتار استفاده کنید. می‌توانید محتمل‌ترین زبان رشته و همچنین امتیازهای اطمینان برای همه زبان‌های احتمالی رشته را دریافت کنید.

‫ML Kit نوشتار را به بیش‌از ۱۰۰ زبان مختلف با خطوط بومی آن‌ها تشخیص می‌دهد. علاوه‌براین، نوشتار رومی‌سازی‌شده برای زبان‌های عربی، بلغاری، چینی، یونانی، ژاپنی، روسی، و هندی قابل‌تشخیص است. فهرست کامل زبان‌ها و خط‌های پشتیبانی‌شده را ببینید.

امتحان کنید

  • با برنامه نمونه بازی کنید تا نمونه‌ای از استفاده از این API را ببینید.

قبل‌از شروع

  1. غلاف‌های ML Kit زیر را در Podfile خود بگنجانید:
    pod 'GoogleMLKit/LanguageID', '8.0.0'
    
  2. پس‌از نصب یا به‌روزرسانی Pods پروژه، پروژه Xcode خود را بااستفاده از .xcworkspace باز کنید. ‫ML Kit در Xcode نسخه ۱۲.۴ یا بالاتر پشتیبانی می‌شود.

شناسایی زبان رشته

برای شناسایی زبان رشته، نمونه‌ای از 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")
  }
}

آبجکتیو-سی

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 را فقط زمانی برمی‌گرداند که زبان را با مقدار اطمینان حداقل ۰٫۵ شناسایی کند. می‌توانید این آستانه را با گذراندن شیء LanguageIdentificationOptions به languageIdentification(options:) تغییر دهید:

Swift

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

آبجکتیو-سی

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

آبجکتیو-سی

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 فقط زبان‌هایی را برمی‌گرداند که مقدار اطمینان آن‌ها حداقل ۰٫۰۱ باشد. با ارسال کردن شیء LanguageIdentificationOptions به languageIdentification(options:) می‌توانید این آستانه را تغییر دهید:

Swift

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

آبجکتیو-سی

MLKLanguageIdentificationOptions *options =
    [[MLKLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
MLKLanguageIdentification *languageId =
    [MLKLanguageIdentification languageIdentificationWithOptions:options];

اگر هیچ زبانی این آستانه را برآورده نکند، فهرست یک مورد با مقدار und دارد.