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ể lấy ngôn ngữ có nhiều khả năng nhất của chuỗi hoặc nhận đ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 ở 103 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.
Trước khi bắt đầu
- Nếu bạn chưa làm như vậy, thêm Firebase vào dự án Android của bạn.
- Thêm các phần phụ thuộc của thư viện Android cho 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
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7' }
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
FirebaseLanguageIdentification
, sau đó chuyển chuỗi vào phương thức
identifyLanguage()
.
Ví dụ:
FirebaseLanguageIdentification languageIdentifier =
FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyLanguage(text)
.addOnSuccessListener(
new OnSuccessListener<String>() {
@Override
public void onSuccess(@Nullable String languageCode) {
if (languageCode != "und") {
Log.i(TAG, "Language: " + languageCode);
} else {
Log.i(TAG, "Can't identify language.");
}
}
})
.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. Xem
danh sách đầy đủ các ngôn ngữ được hỗ trợ. 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ề 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 một đối tượng FirebaseLanguageIdentificationOptions
đến
getLanguageIdentification()
:
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyLanguageConfidenceThreshold(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 FirebaseLanguageIdentification
, rồi truyền chuỗi vào phương thức
identifyAllLanguages()
.
Ví dụ:
FirebaseLanguageIdentification languageIdentifier =
FirebaseNaturalLanguage.getInstance().getLanguageIdentification();
languageIdentifier.identifyAllLanguages(text)
.addOnSuccessListener(
new OnSuccessListener<String>() {
@Override
public void onSuccess(List<IdentifiedLanguage> identifiedLanguages) {
for (IdentifiedLanguage identifiedLanguage : identifiedLanguages) {
String language = identifiedLanguage.getLanguageCode();
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ữ đó. Xem
danh sách đầy đủ các ngôn ngữ được hỗ trợ. 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
FirebaseLanguageIdentificationOptions
đối tượng đến
getLanguageIdentification()
:
FirebaseLanguageIdentification languageIdentifier = FirebaseNaturalLanguage
.getInstance()
.getLanguageIdentification(
new FirebaseLanguageIdentificationOptions.Builder()
.setIdentifyAllLanguagesConfidenceThreshold(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 kèm theo giá trị
und
.