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

आप टेक्स्ट की एक स्ट्रिंग की भाषा की पहचान करने के लिए एमएल किट का उपयोग कर सकते हैं। आप स्ट्रिंग की सबसे संभावित भाषा प्राप्त कर सकते हैं या स्ट्रिंग की सभी संभावित भाषाओं के लिए आत्मविश्वास स्कोर प्राप्त कर सकते हैं।

एमएल किट 103 विभिन्न भाषाओं के पाठ को उनकी मूल लिपियों में पहचानता है। इसके अलावा, रोमनकृत पाठ को अरबी, बल्गेरियाई, चीनी, ग्रीक, हिंदी, जापानी और रूसी के लिए पहचाना जा सकता है।

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

  1. यदि आपने पहले से ही अपने ऐप में फायरबेस नहीं जोड़ा है, तो आरंभ करने की मार्गदर्शिका में दिए गए चरणों का पालन करके ऐसा करें।
  2. अपने पॉडफाइल में एमएल किट लाइब्रेरी शामिल करें:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    अपने प्रोजेक्ट के पॉड इंस्टॉल या अपडेट करने के बाद, अपने Xcode प्रोजेक्ट को इसके .xcworkspace का उपयोग करके खोलना सुनिश्चित करें।
  3. अपने ऐप में, फ़ायरबेस आयात करें:

    तीव्र

    import Firebase

    उद्देश्य सी

    @import Firebase;

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

किसी स्ट्रिंग की भाषा की पहचान करने के लिए, LanguageIdentification का एक उदाहरण प्राप्त करें, और फिर स्ट्रिंग को identifyLanguage(for:) विधि में पास करें।

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

तीव्र

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

उद्देश्य सी

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 भाषा कोड समापन हैंडलर को भेज दिया जाता है, जो पाठ की भाषा को दर्शाता है। समर्थित भाषाओं की पूरी सूची देखें. यदि किसी भाषा का विश्वसनीय रूप से पता नहीं लगाया जा सका, तो कोड und (अनिर्धारित) पारित हो जाता है।

डिफ़ॉल्ट रूप से, एमएल किट एक गैर- und मान तभी लौटाता है जब यह कम से कम 0.5 के आत्मविश्वास मान के साथ भाषा की पहचान करता है। आप LanguageIdentificationOptions ऑब्जेक्ट को languageIdentification(options:) में पास करके इस सीमा को बदल सकते हैं:

तीव्र

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

उद्देश्य सी

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

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

किसी स्ट्रिंग की सबसे संभावित भाषाओं का आत्मविश्वास मान प्राप्त करने के लिए, LanguageIdentification का एक उदाहरण प्राप्त करें, और फिर स्ट्रिंग को identifyPossibleLanguages(for:) विधि में पास करें।

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

तीव्र

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

उद्देश्य सी

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 कोड और यह विश्वास प्राप्त कर सकते हैं कि स्ट्रिंग उस भाषा में है। समर्थित भाषाओं की पूरी सूची देखें. ध्यान दें कि ये मान इस विश्वास को दर्शाते हैं कि संपूर्ण स्ट्रिंग दी गई भाषा में है; एमएल किट एक ही स्ट्रिंग में एकाधिक भाषाओं की पहचान नहीं करता है।

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

तीव्र

let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

उद्देश्य सी

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRLanguageIdentificationOptions *options =
    [[FIRLanguageIdentificationOptions alloc] initWithConfidenceThreshold:0.4];
FIRLanguageIdentification *languageId =
    [naturalLanguage languageIdentificationWithOptions:options];

यदि कोई भाषा इस सीमा को पूरा नहीं करती है, तो सूची में एक आइटम होगा, जिसका मान und होगा।