Bạn có thể sử dụng Bộ công cụ máy học để xác định ngôn ngữ của một chuỗi văn bản. Bạn có thể lấy ngôn ngữ có nhiều khả năng nhất trong chuỗi cũng như điểm số tin cậy cho tất cả ngôn ngữ có thể có của chuỗi.
Bộ công cụ máy học nhận dạng văn bản bằng hơn 100 ngôn ngữ trong hệ thống chữ viết gốc. Ngoài ra, bạn có thể nhận dạng được văn bản La-tinh bằng tiếng Ả Rập, tiếng Bungary, tiếng Trung, tiếng Hy Lạp, tiếng Hindi, tiếng Nhật và tiếng Nga. Hãy xem danh sách đầy đủ các ngôn ngữ và tập lệnh được hỗ trợ.
Chạy thử ứng dụng
- Hãy dùng ứng dụng mẫu để xem ví dụ về cách sử dụng API này.
Trước khi bắt đầu
- Đưa các nhóm Bộ công cụ máy học sau vào Podfile của bạn:
pod 'GoogleMLKit/LanguageID', '3.2.0'
- Sau khi bạn cài đặt hoặc cập nhật Nhóm của dự án, hãy mở dự án Xcode của bạn bằng
.xcworkspace
của dự án đó. Bộ công cụ máy học được hỗ trợ trong Xcode phiên bản 12.4 trở lên.
Xác định ngôn ngữ của một chuỗi
Để xác định ngôn ngữ của một chuỗi, hãy lấy một thực thể của LanguageIdentification
, sau đó truyền chuỗi đó vào phương thức identifyLanguage(for:)
.
Ví dụ:
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"); } }];
Nếu cuộc gọi thành công, hệ thống sẽ chuyển mã ngôn ngữ BCP-47 đến trình xử lý hoàn thành để cho biết ngôn ngữ của văn bản. Nếu không thể phát hiện ngôn ngữ nào một cách tự tin, mã und
(chưa được xác định) sẽ được chuyển.
Theo mặc định, Bộ công cụ máy học chỉ trả về giá trị không phải und
khi xác định ngôn ngữ có giá trị tin cậy tối thiểu là 0.5. Bạn có thể thay đổi ngưỡng này
bằng cách chuyển một đối tượng LanguageIdentificationOptions
thành
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];
Nhận các ngôn ngữ có thể có của một chuỗi
Để nhận các giá trị tin cậy của ngôn ngữ có nhiều khả năng nhất của chuỗi, hãy lấy một bản sao của LanguageIdentification
, sau đó truyền chuỗi đó vào phương thức identifyPossibleLanguages(for:)
.
Ví dụ:
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); }];
Nếu lệnh gọi thành công, danh sách đối tượng IdentifiedLanguage
sẽ được truyền đến trình xử lý tiếp tục. Từ mỗi đối tượng, bạn có thể nhận được mã BCP-47 của ngôn ngữ và độ tin cậy rằng chuỗi nằm ở ngôn ngữ đó. Xin lưu ý rằng các giá trị này cho biết độ tin cậy rằng toàn bộ chuỗi nằm trong ngôn ngữ cụ thể; Bộ công cụ máy học không xác định nhiều ngôn ngữ trong một chuỗi.
Theo mặc định, Bộ công cụ máy học chỉ trả về những ngôn ngữ có giá trị tin cậy tối thiểu là 0.01. Bạn có thể thay đổi ngưỡng này bằng cách chuyển đối tượng
LanguageIdentificationOptions
đến 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];
Nếu không có ngôn ngữ nào đáp ứng ngưỡng này, thì danh sách sẽ có một mục có giá trị und
.