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

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

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

इसे आज़माएं

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

  1. अपनी Podfile में, नीचे दिए गए ML Kit पॉड शामिल करें:
    pod 'GoogleMLKit/LanguageID', '3.2.0'
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  2. अपने प्रोजेक्ट के Pods को इंस्टॉल या अपडेट करने के बाद, इसके .xcworkspace. 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 Kit किसी एक स्ट्रिंग में कई भाषाओं की पहचान नहीं करता.

डिफ़ॉल्ट रूप से, एमएल किट सिर्फ़ ऐसी भाषाएं दिखाता है जो कम से कम कॉन्फ़िडेंस वैल्यू पर सेट होती हैं 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.