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ợ.
Theo cụm | Không nhó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 điểm xây dựng. | Mô hình được tải xuống một cách linh động thông qua Dịch vụ Google Play. |
Tác động của kích thước ứng dụng | Tăng kích thước khoảng 900 KB. | Tăng kích thước 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. |
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.gradle
cấp dự án, hãy nhớ bao gồm Kho lưu trữ Maven trong cả hai phầnbuildscript
vàallprojects
.Thêm các phần phụ thuộc cho thư viện Android Bộ công cụ học máy vào mô-đun của bạn tệp gradle cấp ứng dụng, thường là
app/build.gradle
. Chọn một trong số các phần phụ thuộc sau đây tuỳ theo nhu cầu của bạn:Để nhóm 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' }
Cách sử dụng mô hình này 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 chọn sử dụng mô hình này trong Dịch vụ Google Play, bạn có thể định cấu hình ứng dụng của bạn để tự động tải mô hình xuống thiết bị sau khi ứng dụng đã cài đặt từ Cửa hàng Play. Để thực hiện việc này, hãy thêm nội dung khai báo sau vào tệp
AndroidManifest.xml
củ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 ModuleInstallClient API của Dịch vụ Google Play.
Nếu bạn không bật tính năng tải mô hình tại thời điểm cài đặt xuống hoặc không yêu cầu tải xuống một cách rõ ràng, mô hình được tải xuống trong lần đầu tiên bạn chạy giá trị nhận dạng. Yêu cầu bạn đưa ra không có kết quả nào trước khi quá trình tải xuống hoàn tất.
Xác định ngôn ngữ của chuỗi
Để xác định ngôn ngữ của một chuỗi, hãy gọi LanguageIdentification.getClient()
thành
lấy một thực thể của LanguageIdentifier
rồi truyền chuỗi đó vào phương thức
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 là
được truyền đến trình nghe thành công, cho biết ngôn ngữ của văn bản. Nếu không
ngôn ngữ được phát hiện một cách tự tin, mã
Hàm und
(chưa xác định) đã được thông qua.
Theo mặc định, Bộ công cụ học máy chỉ trả về một giá trị khác ngoà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 chế độ 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());
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 LanguageIdentifier
, sau đó chuyển chuỗi vào 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 đối tượng IdentifiedLanguage
sẽ được chuyển đến
trình nghe thành công. 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 đế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, thì danh sách sẽ có một mục kèm theo giá trị
und
.