Tokenisers
Tokenisers split raw text into token boundaries. Choose based on the input structure.
| Type | Notes |
|---|---|
Tokeniser |
Default. Splits on punctuation and whitespace; keeps letters and digits together |
WhitespaceTokeniser |
Splits on whitespace only |
KeywordTokeniser |
Emits the whole input as one token |
LetterTokeniser |
Emits letter runs only; drops digits and punctuation |
NGramTokeniser |
Sliding n-grams across tokens |
EdgeNGramTokeniser |
Prefix n-grams; useful for autocomplete-style matching |
CJKBigramTokeniser |
Overlapping bigrams for CJK ideographs with supplementary-plane support |
ChineseLexiconTokeniser |
Greedy longest-match Chinese segmentation with unigram fallback |
JapaneseTokeniser |
Character-class-based segmentation using Kuromoji CharacterDefinition.dat. Splits at script boundaries (kanji, hiragana, katakana) |
PathTreeTokeniser |
Path hierarchy tokeniser: compound tokens from root to leaf (or leaf to root in suffix mode). Root-aware parsing for drive letters, UNC paths, and scheme URIs |
IcuTokeniser |
Unicode-aware segmentation. Thai opt-in via constructor |
Uax29UrlEmailTokeniser |
Preserves URLs, emails, hashtags, and mentions as single tokens. Thai opt-in |
ThaiTokeniser |
Thai segmentation with dictionary. Needs a lexicon loaded from file or stream |
PatternTokeniser |
Regex-based tokenisation. Accepts a pattern string and optional group index |
MediaWikiTokeniser |
MediaWiki markup: headings, links, categories, citations |
Picking one
Tokeniserfor ordinary mixed-alphanumeric text.IcuTokeniserorIcuAnalyserwhen Unicode word boundaries matter.Uax29UrlEmailTokeniserfor social, web, or support text.PathTreeTokeniserfor indexing filesystem paths. Use forward mode for directory hierarchies, suffix mode for IDE-style file search.- With depth payloads:
new PathTreeTokeniser { EmitDepthPayloads = true }attaches depth metadata for shallow-match boosting. - Suffix mode:
new PathTreeTokeniser { SuffixMode = true }emits leaf-to-root tokens like["user.cs", "models/user.cs", ...].
- With depth payloads:
Use
JapaneseTokeniserwith KuromojiCharacterDefinition.datinlexicons/kuromoji/for Japanese script-boundary segmentation.
Custom pipeline
var analyser = new Analyser(
tokeniser: new Uax29UrlEmailTokeniser(),
new LowercaseFilter(),
new TypeTokenFilter([
Uax29UrlEmailTokeniser.UrlType,
Uax29UrlEmailTokeniser.EmailType
]));
See also
- Analysis overview
- Analysers
- Token filters
- <xref:Rowles.LeanCorpus.Analysis.Tokenisers.ITokeniser>