iOS पर ML Kit की मदद से टेक्स्ट की भाषा की पहचान करना

टेक्स्ट की किसी स्ट्रिंग की भाषा की पहचान करने के लिए, ML किट का इस्तेमाल किया जा सकता है. स्ट्रिंग की सबसे ज़्यादा इस्तेमाल की जाने वाली भाषा के साथ-साथ यह भी देखा जा सकता है कि स्ट्रिंग की सभी संभावित भाषाओं के लिए, स्कोर स्कोर कितना है.

ML किट अपनी मूल स्क्रिप्ट में 100 से ज़्यादा अलग-अलग भाषाओं में टेक्स्ट की पहचान करता है. इसके अलावा, रोमन भाषा में लिखे गए टेक्स्ट की पहचान अरेबिक, बल्गेरियन, चाइनीज़, ग्रीक, हिन्दी, जैपनीज़, और रशियन के लिए की जा सकती है. इसके साथ काम करने वाली भाषाओं और स्क्रिप्ट की पूरी सूची देखें.

इसे आज़माएं

शुरू करने से पहले

  1. अपनी Podfile में ये ML किट पॉड शामिल करें:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. अपने प्रोजेक्ट के पॉड इंस्टॉल करने या अपडेट करने के बाद, अपने .xcworkspaceकोड का इस्तेमाल करके Xcode प्रोजेक्ट खोलें. ML किट, Xcode के 12.4 या इसके बाद के वर्शन पर काम करती है.

स्ट्रिंग की भाषा की पहचान करना

किसी स्ट्रिंग की भाषा की पहचान करने के लिए, LanguageIdentification का इंस्टेंस पाएं और फिर स्ट्रिंग को identifyLanguage(for:) तरीके से पास करें.

उदाहरण के लिए :

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");
                           }
                         }];

अगर कॉल पूरा हो जाता है, तो BCP-47 वाला भाषा कोड पूरा होने के हैंडलर को पास कर दिया जाता है. इस कोड से मैसेज की भाषा का पता चलता है. अगर किसी भी भाषा का पक्के तौर पर पता नहीं लगाया जा सकता, तो कोड und (तय नहीं है) पास हो जाता है.

डिफ़ॉल्ट रूप से, ML किट एक गैर-und मान तब ही दिखाता है, जब वह कम से कम 0.5 कॉन्फ़िडेंस वैल्यू वाली भाषा की पहचान करता है. LanguageIdentificationOptions ऑब्जेक्ट को 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];

किसी स्ट्रिंग की संभावित भाषाएं पाना

किसी स्ट्रिंग की सबसे ज़्यादा संभावना वाली भाषाओं की कॉन्फ़िडेंस वैल्यू पाने के लिए, LanguageIdentification का कोई इंस्टेंस पाएं. इसके बाद, स्ट्रिंग को identifyPossibleLanguages(for:) तरीके से पास करें.

उदाहरण के लिए :

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);
}];

अगर कॉल पूरा होता है, तो IdentifiedLanguage ऑब्जेक्ट की सूची जारी रखने वाले हैंडलर को पास कर दी जाती है. हर ऑब्जेक्ट से, आपको भाषा का BCP-47 कोड मिलता है और यह भरोसा मिलता है कि स्ट्रिंग उस भाषा में है. ध्यान दें कि ये वैल्यू इस बात पर भरोसा करती हैं कि पूरी स्ट्रिंग दी गई भाषा में है; ML किट एक ही स्ट्रिंग में कई भाषाओं की पहचान नहीं करती.

डिफ़ॉल्ट रूप से, ML किट सिर्फ़ कम से कम 0.01 कॉन्फ़िडेंस वैल्यू वाली भाषाएं दिखाता है. इस ऑब्जेक्ट को languageIdentification(options:) में LanguageIdentificationOptions ऑब्जेक्ट पास करके, इस थ्रेशोल्ड को बदला जा सकता है:

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];

अगर कोई भी भाषा इस सीमा तक नहीं पहुंचती है, तो सूची में एक आइटम के साथ und वैल्यू होगी.