iOS पर एमएल किट की मदद से, टेक्स्ट की भाषा की पहचान करना

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

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

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

  1. अगर आपने पहले से अपने ऐप्लिकेशन में Firebase नहीं जोड़ा है, तो ऐसा करने के लिए शुरुआती निर्देश में दिए गए चरणों को पूरा करें.
  2. अपनी Podfile में ML Kit लाइब्रेरी शामिल करें:
    pod 'Firebase/MLNaturalLanguage', '6.25.0'
    pod 'Firebase/MLNLLanguageID', '6.25.0'
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है प्रोजेक्ट के Pods को इंस्टॉल या अपडेट करने के बाद, अपना Xcode ज़रूर खोलें प्रोजेक्ट के .xcworkspace का इस्तेमाल करके बनाया गया है.
  3. अपने ऐप्लिकेशन में 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 भाषा कोड है पूरा होने वाले हैंडलर को पास किया जाता है. इससे टेक्स्ट की भाषा पता चलती है. ज़्यादा जानकारी के लिए, इस्तेमाल की जा सकने वाली भाषाओं की पूरी सूची. अगर नहीं भाषा का आसानी से पता लगाया जा सकता है, कोड 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 किसी एक स्ट्रिंग में कई भाषाओं की पहचान नहीं करता.

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

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.