Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
iOS 12'de kullanıma sunulan Doğal Dil çerçevesi, cihaz içi doğal dil işlemeyi etkinleştirir. Dil tanımayı, belirteç oluşturmayı ve etiketlemeyi destekler. Belirteç oluşturma metni bileşen sözcüklerine, cümlelerine veya paragraflarına böler; etiketleme konuşma bölümlerini, kişileri, yerleri ve kuruluşları tanımlar.
Doğal Dil çerçevesi, metni özel bağlamlarda sınıflandırmak ve etiketlemek için özel Core ML modellerini de kullanabilir.
NSLinguisticTagger sınıfı hala kullanılabilir. Ancak Doğal Dil çerçevesi, Doğal Dil işleme için kullanılacak tercih edilen mekanizmadır.
Örnek uygulama: XamarinNL
Xamarin.iOS ile Doğal Dil çerçevesini kullanmayı öğrenmek için aşağıdaki kavramları inceleyin:
- Dilleri tanıma.
- Metni sözcükler ve cümleler halinde belirteç haline getir.
- Adlandırılmış varlıkları ve konuşma bölümlerini etiketleyin.
Dilleri tanıma
Örnek uygulamanın Tanıyıcı sekmesi,NLLanguageRecognizer bir metin bloğunun dilini belirlemek için.
Not
Dil tanıma, belirli bir metin sınıflandırma türüdür. Doğal Dil çerçevesi, geliştirici tarafından sağlanan Core ML modelleri aracılığıyla özel metin sınıflandırmasını da destekler. Daha fazla bilgi için WWDC 2018'in Doğal Dil Çerçevesi'ne Giriş oturumuna göz atın.
Baskın dil
Kullanıcı girişindeki baskın dili belirlemek için Dil düğmesine dokunun.
HandleDetermineLanguageButtonTap yöntemi,LanguageRecognizerViewControllerGetDominantLanguage öğesinin NLLanguageRecognizer getirilmeye yönelik yöntemi NLLanguage metinde bulunan birincil dil için:
partial void HandleDetermineLanguageButtonTap(UIButton sender)
{
UserInput.ResignFirstResponder();
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
NLLanguage lang = NLLanguageRecognizer.GetDominantLanguage(UserInput.Text);
DominantLanguageLabel.Text = lang.ToString();
}
}
Dil olasılıkları
Kullanıcı girişi için dil hipotezlerinin listesini getirmek için Dil olasılıkları düğmesine dokunun.
HandleLanguageProbabilitiesButtonTap sınıfının yöntemi LanguageRecognizerViewController bir NLLanguageRecognizer örneği oluşturur ve bunu isterProcess kullanıcı metnini seçin. Ardından dil tanıyıcısını çağırır GetNativeLanguageHypotheses yöntemi, dillerin ve ilişkili olasılıkların bir sözlüğünü getirir. Sınıf LanguageRecognizerTableViewController daha sonra bu dilleri ve olasılıkları işler.
partial void HandleLanguageProbabilitiesButtonTap(UIButton sender)
{
UserInput.ResignFirstResponder();
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
var recognizer = new NLLanguageRecognizer();
recognizer.Process(UserInput.Text);
NSDictionary<NSString, NSNumber> probabilities = recognizer.GetNativeLanguageHypotheses(10);
PerformSegue(ShowLanguageProbabilitiesSegue, this);
}
}
Olası NLLanguage değerler şunlardır:
AmharicArabicArmenianBengaliBulgarianBurmeseCatalanCherokeeCroatianCzechDanishDutchEnglishFinnishFrenchGeorgianGermanGreekGujaratiHebrewHindiHungarianIcelandicIndonesianItalianJapaneseKannadaKhmerKoreanLaoMalayMalayalamMarathiMongolianNorwegianOriyaPersianPolishPortuguesePunjabiRomanianRussianSimplifiedChineseSinhaleseSlovakSpanishSwedishTamilTeluguThaiTibetanTraditionalChineseTurkishUkrainianUndeterminedUrduVietnamese
Desteklenen dillerin tam listesi, NLLanguage enum API belgeleri.
Metni sözcükler, cümleler ve paragraflar halinde belirteç haline getirme
Örnek uygulamanın Belirteç Oluşturucu sekmesi, bir metin bloğunu ile NLTokenizerbileşen sözcüklerine veya cümlelerine ayırmayı gösterir.
Belirteç listesini getirmek için Sözcükler veya Tümceler düğmesine dokunun. Her belirteç, özgün metindeki bir sözcük veya tümceyle ilişkilendirilir.
ShowTokens çağrısı yaparak kullanıcının girişini belirteçlere böler GetTokensNLTokenizeryöntemi. Bu yöntem bir dizi döndürür: NSValue nesneleri, her birinin özgün metindeki bir NSRange belirteçle ilgili değeri kaydırması.
void ShowTokens(NLTokenUnit unit)
{
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
var tokenizer = new NLTokenizer(unit);
tokenizer.String = UserInput.Text;
var range = new NSRange(0, UserInput.Text.Length);
NSValue[] tokens = tokenizer.GetTokens(range);
PerformSegue(ShowTokensSegue, this);
}
}
LanguageTokenizerTableViewController her tablo hücresinde tek bir belirteç oluşturur. Bir belirteçten NSValuebir NSRange ayıklar, özgün metinde karşılık gelen dizeyi bulur ve tablo görünümü hücresinde bir etiket ayarlar:
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
var cell = TableView.DequeueReusableCell(TokenCell);
NSRange range = Tokens[indexPath.Row].RangeValue;
cell.TextLabel.Text = Text.Substring((int)range.Location, (int)range.Length);
return cell;
}
Adlandırılmış varlıkları ve konuşma bölümlerini etiketleme
XamarinNL örnek uygulamasının Tagger sekmesiNLTagger sınıfını kullanarak kategorileri giriş dizesinin belirteçleriyle ilişkilendirin.
Doğal Dil çerçevesi kişileri, yerleri, kuruluşları ve konuşma bölümlerini tanımaya yönelik yerleşik destek içerir.
Not
Doğal Dil çerçevesi, geliştirici tarafından sağlanan Core ML modelleri aracılığıyla özel etiketleme düzenlerini de destekler. Daha fazla bilgi için WWDC 2018'in Doğal Dil Çerçevesi'ne Giriş oturumuna göz atın.
Getirmek için Adlandırılmış varlıklar veya Konuşma bölümleri düğmesine dokunun:
- Her biri özgün metinde
NSValuebir belirteç için birNSRangesarmalama olan bir nesne dizisi. - Bir değer dizisi
NLTag– aynı dizi dizinindekiNSValuebelirteçler için kategoriler.
içinde LanguageTaggerViewControllerve HandleNamedEntitiesButtonTap her çağrısı ShowTags, ile NLTagSchemeNLTagScheme.LexicalClass birlikte (konuşma bölümleri için) veya NLTagScheme.NameType (adlandırılmış varlıklar içinHandlePartsOfSpeechButtonTap) iletir.
ShowTagssorgulanacağı bir tür dizisiyle NLTagScheme (bu örnekte yalnızca geçirilen NLTagScheme değer) örneği oluşturan bir NLTaggeroluşturur. Daha sonra GetTags yöntemine NLTagger tıklayarak kullanıcı girişindeki metinle ilgili etiketleri belirleyin.
void ShowTags(NLTagScheme tagScheme)
{
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
var tagger = new NLTagger(new NLTagScheme[] { tagScheme });
var range = new NSRange(0, UserInput.Text.Length);
tagger.String = UserInput.Text;
NLTag[] tags = tagger.GetTags(range, NLTokenUnit.Word, tagScheme, NLTaggerOptions.OmitWhitespace, out NSValue[] ranges);
NSValue[] tokenRanges = ranges;
detailViewTitle = tagScheme == NLTagScheme.NameType ? "Named Entities" : "Parts of Speech";
PerformSegue(ShowEntitiesSegue, this);
}
}
Etiketler daha sonra tarafından bir tabloda LanguageTaggerTableViewControllergörüntülenir.
Olası NLTag değerler şunlardır:
AdjectiveAdverbClassifierCloseParenthesisCloseQuoteConjunctionDashDeterminerIdiomInterjectionNounNumberOpenParenthesisOpenQuoteOrganizationNameOtherOtherPunctuationOtherWhitespaceOtherWordParagraphBreakParticlePersonalNamePlaceNamePrepositionPronounPunctuationSentenceTerminatorVerbWhitespaceWordWordJoiner
Desteklenen etiketlerin tam listesi, NLTag enum API belgeleri.