A tagger that analyzes natural language text.


@interface NLTagger : NSObject


NLTagger supports many different languages and scripts. Use it to segment natural language text into paragraph, sentence, or word units and to tag each unit with information like part of speech, lexical class, lemma, script, and language.

When you create a linguistic tagger, you specify what kind of information you're interested in by passing one or more NLTagScheme values. Set the string property to the natural language text you want to analyze, and the linguistic tagger processes it according to the specified tag schemes. You can then enumerate over the tags in a specified range, using the methods described in Enumerating Linguistic Tags, to get the information requested for a given scheme and unit.


Creating a Tagger

- initWithTagSchemes:

Creates a linguistic tagger instance using the specified tag schemes and options.


The string being analyzed by the linguistic tagger.

Getting the Tag Schemes

+ availableTagSchemesForUnit:language:

Retrieves the tag schemes available for a particular unit (like word or sentence) and language on the current device.

+ requestAssetsForLanguage:tagScheme:completionHandler:

Asks the Natural Language framework to load any missing assets for a tag scheme onto the device for the given language.


The response to an asset request.


The tag schemes configured for this linguistic tagger.


Constants for the tag schemes specified when initializing a linguistic tagger.

Determining the Dominant Language and Orthography


The dominant language of the string set for the linguistic tagger.

- setLanguage:range:

Sets the language for a range of text within the tagger's string.

- setOrthography:range:

Sets the orthography for the specified range.

Enumerating Linguistic Tags

- enumerateTagsInRange:unit:scheme:options:usingBlock:

Enumerates a block over the tagger’s string, given a range, token unit, and tag scheme.


Constants for linguistic tagger enumeration specifying which tokens to omit and whether to join names.


A token type, lexical class, name, lemma, language, or script returned by a linguistic tagger for natural language text.

Getting Linguistic Tags

- tagAtIndex:unit:scheme:tokenRange:

Finds a tag for a given linguistic unit, for a single scheme, at the specified character position.

- tagsInRange:unit:scheme:options:tokenRanges:

Finds an array of linguistic tags and token ranges for a given string range and linguistic unit.

Deteriming the Range of a Unit Token

- tokenRangeAtIndex:unit:

Returns the range of the linguistic unit containing the specified character index.


Constants representing linguistic units.

Using Models with a Tagger

- setModels:forTagScheme:

Assigns models for a tag scheme.

- modelsForTagScheme:

Returns the models that apply to the given tag scheme.

Using Gazetteers with a Tagger

- setGazetteers:forTagScheme:

Attaches gazetteers to a tag scheme, typically one gazetteer per language or one language-independent gazetteer.

- gazetteersForTagScheme:

Retrieves the gazetteers attached to a tag scheme.


A collection of terms and their labels, which take precedence over a word tagger.


Inherits From

See Also

Linguistic Tags

Identifying Parts of Speech

Classify nouns, verbs, adjectives, and other parts of speech in a string.

Identifying People, Places, and Organizations

Use a linguistic tagger to perform named entity recognition on a string.