Bạn có thể dùng Bộ công cụ học máy để xác định ngôn ngữ của một chuỗi văn bản. Bạn có thể xem ngôn ngữ có nhiều khả năng nhất của chuỗi cũng như điểm số tin cậy cho tất cả các ngôn ngữ có thể dùng cho chuỗi.
Bộ công cụ học máy nhận dạng văn bản của hơn 100 ngôn ngữ khác nhau trong chữ viết gốc. Ngoài ra, văn bản được La tinh hoá có thể được công nhận bằng tiếng Ả Rập, tiếng Bungari, tiếng Trung, Tiếng Hy Lạp, tiếng Hindi, tiếng Nhật và tiếng Nga. Xem danh sách đầy đủ các ngôn ngữ và tập lệnh được hỗ trợ.
Dùng thử
- Dùng thử ứ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ụ học máy sau đây 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 cách sử dụng
.xcworkspace
. Bộ công cụ học máy được hỗ trợ trong Xcode phiên bản 12.4 trở lên.
Xác định ngôn ngữ của chuỗi
Để xác định ngôn ngữ của một chuỗi, hãy lấy bản sao của
LanguageIdentification
, sau đó chuyể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 lệnh gọi thành công,
Mã ngôn ngữ BCP-47 là
được chuyển đế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
ngôn ngữ có thể được phát hiện một cách tự tin, mã und
(chưa được xác định) sẽ được thông qua.
Theo mặc định, Bộ công cụ học máy chỉ trả về giá trị không phải und
khi xác định được
ngôn ngữ có giá trị tin cậy ít nhất là 0,5. Bạn có thể thay đổi ngưỡng này
bằng cách truyền một đố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];
Xem các ngôn ngữ có thể có của một chuỗi
Để nhận giá trị tin cậy của các ngôn ngữ có nhiều khả năng nhất trong một chuỗi, hãy lấy một
thực thể của LanguageIdentification
, sau đó chuyể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 chuyển đến
trình xử lý tiếp tục. Từ mỗi đối tượng, bạn có thể lấy mã BCP-47 của ngôn ngữ đó
và sự tự tin rằng chuỗi bằng ngôn ngữ đó. Lưu ý rằng
những giá trị này cho biết độ tin cậy rằng toàn bộ chuỗi nằm trong giá trị
ngôn ngữ; Bộ công cụ học máy không xác định nhiều ngôn ngữ trong một chuỗi.
Theo mặc định, Bộ công cụ học máy chỉ trả về các ngôn ngữ có giá trị tin cậy ít nhất là
0,01. Bạn có thể thay đổi ngưỡng này bằng cách chuyển một
LanguageIdentificationOptions
đối tượng 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];
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 kèm theo giá trị
und
.