iOS에서 ML Kit를 사용하여 텍스트의 언어 식별

ML Kit를 사용하면 텍스트 문자열의 언어를 식별할 수 있습니다. 다음과 같은 작업을 할 수 있습니다. 문자열의 언어일 가능성이 가장 높으며 모든 문자열에 대한 신뢰도 점수를 문자열의 가능한 언어를 나타냅니다.

ML Kit는 기본 스크립트에서 100개 이상의 다양한 언어로 된 텍스트를 인식합니다. 또한 아랍어, 불가리아어, 중국어, 일본어로 된 로마자 텍스트도 그리스어, 힌디어, 일본어, 러시아어 자세한 내용은 전체 목록을 확인하세요.

사용해 보기

  • 샘플 앱을 사용하여 이 API의 사용 예를 참조하세요.

시작하기 전에

  1. Podfile에 다음 ML Kit 포드를 포함합니다.
    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];

이 기준을 충족하는 언어가 없으면 목록에 und