Použití architektury přirozeného jazyka s Xamarin.iOS
Architektura přirozeného jazyka představená v iOSu 12 umožňuje zpracování přirozeného jazyka na zařízení. Podporuje rozpoznávání jazyka, tokenizaci a označování. Tokenizace rozdělí text na slova, věty nebo odstavce součásti; Označování identifikuje slovní druhy, lidi, místa a organizace.
Architektura přirozeného jazyka může také používat vlastní modely Core ML ke klasifikaci a označování textu ve specializovaných kontextech.
Třída NSLinguisticTagger je stále k dispozici. Architektura přirozeného jazyka je však upřednostňovaným mechanismem pro zpracování přirozeného jazyka.
Ukázková aplikace: XamarinNL
Pokud se chcete naučit používat architekturu přirozeného jazyka s Xamarin.iOS, projděte si následující koncepty:
Rozpoznávání jazyků
Karta Rozpoznávání ukázkové aplikace ukazuje, jak používat NLLanguageRecognizer
určit jazyk bloku textu.
Poznámka:
Rozpoznávání jazyka je konkrétní typ klasifikace textu. Architektura přirozeného jazyka také podporuje vlastní klasifikaci textu prostřednictvím modelů Core ML poskytovaných vývojářem. Další informace najdete v tématu Úvod do relace Rozhraní přirozeného jazyka z WWDC 2018.
Dominantní jazyk
Klepnutím na tlačítko Jazyk identifikujte dominantní jazyk ve vstupu uživatele.
Metoda HandleDetermineLanguageButtonTap
použití metody LanguageRecognizerViewController
GetDominantLanguage
NLLanguageRecognizer
metoda načtení metodyNLLanguage
pro primární jazyk nalezený v textu:
partial void HandleDetermineLanguageButtonTap(UIButton sender)
{
UserInput.ResignFirstResponder();
if (!String.IsNullOrWhiteSpace(UserInput.Text))
{
NLLanguage lang = NLLanguageRecognizer.GetDominantLanguage(UserInput.Text);
DominantLanguageLabel.Text = lang.ToString();
}
}
Pravděpodobnosti jazyka
Klepnutím na tlačítko Pravděpodobnosti jazyka načtete seznam hypotéz jazyka pro vstup uživatele.
Metoda HandleLanguageProbabilitiesButtonTap
LanguageRecognizerViewController
třídy vytvoří NLLanguageRecognizer
instanci třídy a požádá ji o Process
text uživatele. Potom zavolá rozpoznávání jazyka. GetNativeLanguageHypotheses
metoda, která načte slovník jazyků a přidružených pravděpodobností. Třída LanguageRecognizerTableViewController
pak tyto jazyky a pravděpodobnosti vykreslí.
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);
}
}
Mezi potenciální NLLanguage
hodnoty patří:
Amharic
Arabic
Armenian
Bengali
Bulgarian
Burmese
Catalan
Cherokee
Croatian
Czech
Danish
Dutch
English
Finnish
French
Georgian
German
Greek
Gujarati
Hebrew
Hindi
Hungarian
Icelandic
Indonesian
Italian
Japanese
Kannada
Khmer
Korean
Lao
Malay
Malayalam
Marathi
Mongolian
Norwegian
Oriya
Persian
Polish
Portuguese
Punjabi
Romanian
Russian
SimplifiedChinese
Sinhalese
Slovak
Spanish
Swedish
Tamil
Telugu
Thai
Tibetan
TraditionalChinese
Turkish
Ukrainian
Undetermined
Urdu
Vietnamese
Úplný seznam podporovaných jazyků je k dispozici jako součást NLLanguage
Dokumentace k rozhraní API výčtu
Tokenizace textu na slova, věty a odstavce
Karta Tokenizer ukázkové aplikace ukazuje, jak oddělit blok textu do jeho součástí slov nebo vět pomocí NLTokenizer
.
Klepnutím na tlačítko Slova nebo věty načtete seznam tokenů. Každý token je přidružený ke slovu nebo větě v původním textu.
ShowTokens
rozdělí vstup uživatele na tokeny voláním GetTokens
NLTokenizer
metoda . Tato metoda vrátí pole NSValue
každý obtékání NSRange
hodnoty odpovídající tokenu v původním textu.
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
v každé buňce tabulky vykreslí jeden token. Extrahuje z NSRange
tokenu NSValue
, najde odpovídající řetězec v původním textu a nastaví popisek na buňce zobrazení tabulky:
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;
}
Označování pojmenovaných entit a částí řeči
Karta Tagger ukázkové aplikace XamarinNL ukazuje, jak používat NLTagger
třída, která přidruží kategorie k tokenům vstupního řetězce.
Architektura přirozeného jazyka zahrnuje integrovanou podporu pro rozpoznávání lidí, míst, organizací a slovních částí.
Poznámka:
Architektura přirozeného jazyka podporuje také vlastní schémata označování prostřednictvím modelů Core ML poskytovaných vývojářem. Další informace najdete v tématu Úvod do relace Rozhraní přirozeného jazyka z WWDC 2018.
Pokud chcete načíst pojmenované entity nebo slovní druhy, klepněte na tlačítko Pojmenované entity nebo slovní druhy:
- Pole
NSValue
objektů, každé obtékáníNSRange
tokenu v původním textu. - Pole
NLTag
hodnot – kategorie proNSValue
tokeny ve stejném indexu pole.
In LanguageTaggerViewController
, HandlePartsOfSpeechButtonTap
a HandleNamedEntitiesButtonTap
každé volání ShowTags
, předávat – NLTagScheme
buď NLTagScheme.LexicalClass
(pro části řeči) nebo NLTagScheme.NameType
(pro pojmenované entity).
ShowTags
vytvoří instanci s NLTagger
polem NLTagScheme
typů, pro které se bude dotazovat (v tomto případě pouze předaná NLTagScheme
hodnota). Pak použije GetTags
metodu NLTagger
pro určení značek relevantních pro text ve vstupu uživatele.
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);
}
}
Značky se pak zobrazí v tabulce podle LanguageTaggerTableViewController
tabulky .
Mezi potenciální NLTag
hodnoty patří:
Adjective
Adverb
Classifier
CloseParenthesis
CloseQuote
Conjunction
Dash
Determiner
Idiom
Interjection
Noun
Number
OpenParenthesis
OpenQuote
OrganizationName
Other
OtherPunctuation
OtherWhitespace
OtherWord
ParagraphBreak
Particle
PersonalName
PlaceName
Preposition
Pronoun
Punctuation
SentenceTerminator
Verb
Whitespace
Word
WordJoiner
Úplný seznam podporovaných značek je k dispozici jako součást NLTag
Dokumentace k rozhraní API výčtu