Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wprowadzona w systemie iOS 12 platforma języka naturalnego umożliwia przetwarzanie języka naturalnego na urządzeniu. Obsługuje rozpoznawanie języka, tokenizację i tagowanie. Tokenizacja dzieli tekst na wyrazy składowe, zdania lub akapity; Tagowanie identyfikuje części mowy, osób, miejsc i organizacji.
Struktura języka naturalnego może również używać niestandardowych modeli uczenia maszynowego Core DO klasyfikowania i oznaczania tekstu w wyspecjalizowanych kontekstach.
Klasa NSLinguisticTagger jest nadal dostępna. Jednak struktura języka naturalnego jest preferowanym mechanizmem używanym do przetwarzania języka naturalnego.
Przykładowa aplikacja: XamarinNL
Aby dowiedzieć się, jak używać struktury języka naturalnego w środowisku Xamarin.iOS, zapoznaj się z następującymi pojęciami:
- Rozpoznawanie języków.
- Tokenizuj tekst w słowach i zdaniach.
- Oznacz nazwane jednostki i części mowy.
Rozpoznawanie języków
Karta Rozpoznawanie przykładowej aplikacji pokazuje, jak używać elementu NLLanguageRecognizer aby określić język bloku tekstu.
Uwaga
Rozpoznawanie języka to określony typ klasyfikacji tekstu. Platforma języka naturalnego obsługuje również niestandardową klasyfikację tekstu za pośrednictwem modeli uczenia maszynowego Core ML udostępnianych przez deweloperów. Aby uzyskać więcej informacji, zapoznaj się z sesją Introducing Natural Language Framework from WWDC 2018 (Wprowadzenie do struktury języka naturalnego z WWDC 2018).
Język dominujący
Naciśnij przycisk Język, aby zidentyfikować dominujący język w danych wejściowych użytkownika.
Metoda HandleDetermineLanguageButtonTapLanguageRecognizerViewController używa metody GetDominantLanguage metoda pobierania NLLanguageRecognizer elementu NLLanguage dla języka podstawowego znalezionego w tekście:
partial void HandleDetermineLanguageButtonTap(UIButton sender)
{
UserInput.ResignFirstResponder();
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
NLLanguage lang = NLLanguageRecognizer.GetDominantLanguage(UserInput.Text);
DominantLanguageLabel.Text = lang.ToString();
}
}
Prawdopodobieństwa języka
Naciśnij przycisk Prawdopodobieństwa języka, aby pobrać listę hipotez językowych dla danych wejściowych użytkownika.
HandleLanguageProbabilitiesButtonTap Metoda LanguageRecognizerViewController klasy tworzy wystąpienie klasy NLLanguageRecognizer i prosi oProcess tekst użytkownika. Następnie wywołuje rozpoznawanie języka GetNativeLanguageHypotheses metoda, która pobiera słownik języków i skojarzone prawdopodobieństwa. Następnie LanguageRecognizerTableViewController klasa renderuje te języki i prawdopodobieństwa.
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);
}
}
Potencjalne NLLanguage wartości obejmują:
AmharicArabicArmenianBengaliBulgarianBurmeseCatalanCherokeeCroatianCzechDanishDutchEnglishFinnishFrenchGeorgianGermanGreekGujaratiHebrewHindiHungarianIcelandicIndonesianItalianJapaneseKannadaKhmerKoreanLaoMalayMalayalamMarathiMongolianNorwegianOriyaPersianPolishPortuguesePunjabiRomanianRussianSimplifiedChineseSinhaleseSlovakSpanishSwedishTamilTeluguThaiTibetanTraditionalChineseTurkishUkrainianUndeterminedUrduVietnamese
Pełna lista obsługiwanych języków jest dostępna w ramach NLLanguage Dokumentacja interfejsu API wyliczenia.
Tokenizowanie tekstu w wyrazy, zdania i akapity
Na karcie Tokenizer przykładowej aplikacji pokazano, jak oddzielić blok tekstu do wyrazów składników lub zdań za pomocą elementu NLTokenizer.
Naciśnij przycisk Słowa lub Zdania, aby pobrać listę tokenów. Każdy token jest skojarzony ze słowem lub zdaniami w oryginalnym tekście.
ShowTokens dzieli dane wejściowe użytkownika na tokeny przez wywołanie elementu GetTokensmetoda .NLTokenizer Ta metoda zwraca tablicę NSValue obiekty, z których każda opakowuje NSRange wartość odpowiadającą tokenowi w oryginalnym tekście.
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 Renderuje pojedynczy token w każdej komórce tabeli. Wyodrębnia element NSRange z tokenu NSValue, znajduje odpowiedni ciąg w oryginalnym tekście i ustawia etykietę w komórce widoku tabeli:
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;
}
Tagowanie nazwanych jednostek i części mowy
Na karcie Tagger przykładowej aplikacji platformy XamarinNL pokazano, jak używać elementu NLTagger klasa do skojarzenia kategorii z tokenami ciągu wejściowego.
Struktura języka naturalnego obejmuje wbudowaną obsługę rozpoznawania osób, miejsc, organizacji i części mowy.
Uwaga
Platforma języka naturalnego obsługuje również niestandardowe schematy tagowania za pośrednictwem modeli uczenia maszynowego Core ML udostępnianych przez deweloperów. Aby uzyskać więcej informacji, zapoznaj się z sesją Introducing Natural Language Framework from WWDC 2018 (Wprowadzenie do struktury języka naturalnego z WWDC 2018).
Naciśnij przycisk Nazwane jednostki lub Części mowy, aby pobrać:
- Tablica
NSValueobiektów, z których każdy opakowujeNSRangetoken w oryginalnym tekście. - Tablica
NLTagwartości — kategorie tokenówNSValuew tym samym indeksie tablicy.
W LanguageTaggerViewControllerobiekcie HandlePartsOfSpeechButtonTap i HandleNamedEntitiesButtonTap każde wywołanie ShowTagsprzekazuje element NLTagScheme — NLTagScheme.LexicalClass (w przypadku części mowy) lub NLTagScheme.NameType (dla nazwanych jednostek).
ShowTags Tworzy wystąpienie obiektu NLTaggerza pomocą tablicy NLTagScheme typów, dla których będzie ono odpytywane (w tym przypadku jest to tylko przekazana NLTagScheme wartość). Następnie używa GetTags metoda na , NLTagger aby określić tagi istotne dla tekstu w danych wejściowych użytkownika.
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);
}
}
Tagi są następnie wyświetlane w tabeli przez element LanguageTaggerTableViewController.
Potencjalne NLTag wartości obejmują:
AdjectiveAdverbClassifierCloseParenthesisCloseQuoteConjunctionDashDeterminerIdiomInterjectionNounNumberOpenParenthesisOpenQuoteOrganizationNameOtherOtherPunctuationOtherWhitespaceOtherWordParagraphBreakParticlePersonalNamePlaceNamePrepositionPronounPunctuationSentenceTerminatorVerbWhitespaceWordWordJoiner
Pełna lista obsługiwanych tagów jest dostępna w ramach NLTag Dokumentacja interfejsu API wyliczenia.