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

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

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

इसे आज़माएं

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

  1. अपनी Podfile में, इन एमएल किट के पॉड शामिल करें:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
  2. अपने प्रोजेक्ट के पॉड इंस्टॉल या अपडेट करने के बाद, .xcworkspace का इस्तेमाल करके Xcode प्रोजेक्ट खोलें. ML Kit, 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 Kit बिना 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 Kit सिर्फ़ उन भाषाओं को दिखाता है जिनकी कॉन्फ़िडेंस वैल्यू कम से कम 0.01 होती है. इस थ्रेशोल्ड को बदलने के लिए, 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];

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