ML Kit を使用すると、テキストの文字列の言語を識別できます。文字列の言語として特に可能性の高い言語と、文字列で可能なすべての言語の信頼スコアを取得できます。
ML Kit では、100 を超える言語のテキストをネイティブ スクリプトで認識できます。また、アラビア語、ブルガリア語、中国語、ギリシャ語、ヒンディー語、日本語、ロシア語の場合はローマ字化されたテキストが認識されます。サポートされている言語とスクリプトの完全なリストをご覧ください。
試してみる
- サンプルアプリを試して、この API の使用例をご覧ください。
始める前に
- Podfile に次の ML Kit Pod を含めます。
pod 'GoogleMLKit/LanguageID', '3.2.0'
- プロジェクトの Pod をインストールまたは更新した後に、
.xcworkspace
を使用して Xcode プロジェクトを開きます。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 は、言語の識別で信頼値が 0.5 以上の場合にのみ und
以外の値を返します。このしきい値は、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 では、1 つの文字列内の複数の言語は識別されません。
デフォルトでは、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
になります。