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

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

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

آن را امتحان کنید

قبل از اینکه شروع کنی

  1. غلاف‌های کیت ML زیر را در فایل پادفایل خود قرار دهید:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. پس از نصب یا به روز رسانی Pods پروژه خود، پروژه Xcode خود را با استفاده از .xcworkspace آن باز کنید. کیت ML در Xcode نسخه 12.4 یا بالاتر پشتیبانی می شود.

زبان یک رشته را مشخص کنید

برای شناسایی زبان یک رشته، یک نمونه از LanguageIdentification دریافت کنید و سپس رشته را به متد identifyLanguage(for:) منتقل کنید.

مثلا:

سریع

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

هدف-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:) تغییر دهید:

سریع

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

هدف-C

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

زبان های ممکن یک رشته را دریافت کنید

برای به دست آوردن مقادیر اطمینان از محتمل ترین زبان های رشته، یک نمونه از LanguageIdentification دریافت کنید و سپس رشته را به متد identifyPossibleLanguages(for:) منتقل کنید.

مثلا:

سریع

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

هدف-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:) تغییر دهید:

سریع

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

هدف-C

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

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