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ể nhận được ngôn ngữ có khả năng cao nhất của chuỗi cũng như điểm tin cậy cho tất cả các ngôn ngữ có thể có của chuỗi.
Bộ công cụ học máy nhận dạng văn bản bằng hơn 100 ngôn ngữ khác nhau trong các tập lệnh gốc của chúng. Ngoài ra, văn bản được Latinh hoá có thể được nhận dạng cho tiếng Ả Rập, tiếng Bulgaria, 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ợ.
| Theo cụm | Không theo cụm | |
|---|---|---|
| Tên thư viện | com.google.mlkit:language-id | com.google.android.gms:play-services-mlkit-language-id |
| Triển khai | Mô hình được liên kết tĩnh với ứng dụng của bạn tại thời gian xây dựng. | Mô hình được tải xuống động thông qua Dịch vụ Google Play. |
| Tác động đến kích thước ứng dụng | Tăng khoảng 900 KB. | Tăng khoảng 200 KB. |
| Thời gian khởi chạy | Mô hình có sẵn ngay lập tức. | Có thể phải đợi mô hình tải xuống trước khi sử dụng lần đầu tiên. |
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
Trong tệp
build.gradlecấp dự án, hãy nhớ thêm kho lưu trữ Maven của Google vào cả hai mụcbuildscriptvàallprojects.Thêm các phần phụ thuộc cho thư viện Android của Bộ công cụ học máy vào tệp gradle cấp ứng dụng của mô-đun, thường là
app/build.gradle. Chọn một trong các phần phụ thuộc sau đây dựa trên nhu cầu của bạn:Để gói mô hình với ứng dụng của bạn:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:language-id:17.0.6' }Để sử dụng mô hình trong Dịch vụ Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-language-id:17.0.0' }Nếu bạn chọn sử dụng mô hình trong Dịch vụ Google Play, bạn có thể định cấu hình ứng dụng để tự động tải mô hình xuống thiết bị sau khi ứng dụng được cài đặt từ Cửa hàng Play. Để làm như vậy, hãy thêm nội dung khai báo sau vào tệp
AndroidManifest.xmlcủa ứng dụng:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="langid" > <!-- To use multiple models: android:value="langid,model2,model3" --> </application>Bạn cũng có thể kiểm tra rõ ràng phạm vi cung cấp của mô hình và yêu cầu tải xuống thông qua Dịch vụ Google Play API ModuleInstallClient.
Nếu bạn không bật tính năng tải mô hình xuống tại thời điểm cài đặt hoặc yêu cầu tải xuống rõ ràng, thì mô hình sẽ được tải xuống vào lần đầu tiên bạn chạy trình nhận dạng. Các yêu cầu bạn thực hiện trước khi quá trình tải xuống hoàn tất sẽ không mang lại kết quả.
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 gọi LanguageIdentification.getClient() để nhận thực thể của LanguageIdentifier, sau đó truyền chuỗi đến phương thức identifyLanguage() của LanguageIdentifier.
Ví dụ:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyLanguage(text) .addOnSuccessListener { languageCode -> if (languageCode == "und") { Log.i(TAG, "Can't identify language.") } else { Log.i(TAG, "Language: $languageCode") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyLanguage(text) .addOnSuccessListener( new OnSuccessListener<String>() { @Override public void onSuccess(@Nullable String languageCode) { if (languageCode.equals("und")) { Log.i(TAG, "Can't identify language."); } else { Log.i(TAG, "Language: " + languageCode); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Nếu lệnh gọi thành công, mã ngôn ngữ
BCP-47 sẽ được
truyền đến trình xử lý thành công, cho biết ngôn ngữ của văn bản. Nếu không phát hiện được ngôn ngữ nào một cách chắc chắn, mã
und (không xác định) sẽ được truyền.
Theo mặc định, Bộ công cụ học máy chỉ trả về một giá trị khác und khi xác định 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 đối tượng LanguageIdentificationOptions đến getClient():
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.34f) .build());
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 các ngôn ngữ có khả năng cao nhất của một chuỗi, hãy nhận thực thể của LanguageIdentifier, sau đó truyền chuỗi đến phương thức identifyPossibleLanguages().
Ví dụ:
Kotlin
val languageIdentifier = LanguageIdentification.getClient() languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener { identifiedLanguages -> for (identifiedLanguage in identifiedLanguages) { val language = identifiedLanguage.languageTag val confidence = identifiedLanguage.confidence Log.i(TAG, "$language $confidence") } } .addOnFailureListener { // Model couldn’t be loaded or other internal error. // ... }
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient(); languageIdentifier.identifyPossibleLanguages(text) .addOnSuccessListener(new OnSuccessListener<List<IdentifiedLanguage>>() { @Override public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) { for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) { String language = identifiedLanguage.getLanguageTag(); float confidence = identifiedLanguage.getConfidence(); Log.i(TAG, language + " (" + confidence + ")"); } } }) .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Model couldn’t be loaded or other internal error. // ... } });
Nếu lệnh gọi thành công, danh sách các đối tượng IdentifiedLanguage sẽ được truyền đến trình xử lý thành công. Từ mỗi đối tượng, bạn có thể nhận mã BCP-47 của ngôn ngữ và độ tin cậy rằng chuỗi đó bằng 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 bằng ngôn ngữ đã cho; 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 truyền đối tượng LanguageIdentificationOptions đến getClient():
Kotlin
val languageIdentifier = LanguageIdentification .getClient(LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build())
Java
LanguageIdentifier languageIdentifier = LanguageIdentification.getClient( new LanguageIdentificationOptions.Builder() .setConfidenceThreshold(0.5f) .build());
Nếu không có ngôn ngữ nào đáp ứng ngưỡng này, danh sách sẽ có một mục, với giá trị
und.