אתם יכולים להשתמש ב-ML Kit כדי לזהות את השפה של מחרוזת טקסט. אפשר את השפה הסבירה ביותר של המחרוזת או לקבל ציון מהימנות עבור כל של המחרוזת.
ערכת ML Kit מזהה טקסט ב-103 שפות שונות בסקריפטים המקוריים שלהן. בנוסף, המערכת יכולה לזהות טקסט רומי בערבית, בבולגרית, בסינית, ביוונית, בהינדי, ביפנית וברוסית.
לפני שמתחילים
- אם עדיין לא הוספתם את Firebase לאפליקציה, צריך לבצע את הפעולות הבאות במדריך לתחילת העבודה.
- כוללים את ספריות ML Kit ב-Podfile:
אחרי שמתקינים או מעדכנים את קבוצות ה-Pod של הפרויקט, חשוב לפתוח את ה-Xcode באמצעות ה-pod 'Firebase/MLNaturalLanguage', '6.25.0' pod 'Firebase/MLNLLanguageID', '6.25.0'
.xcworkspace
שלו. - מייבאים את Firebase לאפליקציה:
Swift
import Firebase
Objective-C
@import Firebase;
זיהוי השפה של מחרוזת
כדי לזהות את השפה של מחרוזת, נשתמש במופע של
LanguageIdentification
, ולאחר מכן מעבירים את המחרוזת אל
identifyLanguage(for:)
.
לדוגמה:
Swift
let languageId = NaturalLanguage.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
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];
[languageId identifyLanguageForText:text
completion:^(NSString * _Nullable languageCode,
NSError * _Nullable error) {
if (error != nil) {
NSLog(@"Failed with error: %@", error.localizedDescription);
return;
}
if (languageCode != nil
&& ![languageCode isEqualToString:@"und"] ) {
NSLog(@"Identified Language: %@", languageCode);
} else {
NSLog(@"No language was identified");
}
}];
אם השיחה מצליחה,
קוד השפה BCP-47 הוא
מועבר ל-handler של ההשלמה האוטומטית, שמציין את שפת הטקסט. לצפייה
הרשימה המלאה של השפות הנתמכות. אם לא
ניתן לזהות באופן בטוח את השפה, הקוד und
(לא ידוע) מועבר.
כברירת מחדל, ערכת ML Kit מחזירה ערך שאינו und
רק כאשר היא מזהה
עם ערך סמך של 0.5 לפחות. אפשר לשנות את הסף הזה
על ידי העברת אובייקט LanguageIdentificationOptions
אל
languageIdentification(options:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
הצגת השפות האפשריות של מחרוזת
כדי לקבל את ערכי הסמך של השפות הנפוצות ביותר במחרוזת, צריך לקבל את
של LanguageIdentification
, ואז מעבירים את המחרוזת
identifyPossibleLanguages(for:)
.
לדוגמה:
Swift
let languageId = NaturalLanguage.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
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentification *languageId = [naturalLanguage languageIdentification];
[languageId identifyPossibleLanguagesForText:text
completion:^(NSArray<FIRIdentifiedLanguage *> * _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 (FIRIdentifiedLanguage *language in identifiedLanguages) {
[outputText appendFormat:@"\n(%@, %.2f)", language.languageCode, language.confidence];
}
NSLog(outputText);
}];
אם הקריאה תתבצע בהצלחה, תישלח רשימה של IdentifiedLanguage
אובייקטים אל
מטפל המשך. מכל אובייקט אפשר לקבל את קוד BCP-47 של השפה.
את רמת הסמך שהמחרוזת כתובה בשפה הזו. לצפייה
הרשימה המלאה של השפות הנתמכות. שימו לב
הערכים האלה מציינים את הביטחון שכל המחרוזת נמצאת
שפה; ML Kit לא מזהה שפות מרובות במחרוזת אחת.
כברירת מחדל, ערכת ML Kit מחזירה רק שפות עם ערכי ודאות של לפחות
0.01 כדי לשנות את הסף הזה צריך להעביר
אובייקט LanguageIdentificationOptions
אל languageIdentification(options:)
:
Swift
let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
[[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
[naturalLanguage languageIdentificationWithOptions:options];
אם אין שפה שעומדת בסף הזה, הרשימה תכלול פריט אחד עם הערך
und