-
Notifications
You must be signed in to change notification settings - Fork 5
faq
This page ports and adapts the Java Zemberek FAQ for ZemberekDotNet users.
ZemberekDotNet is a .NET implementation of Turkish NLP tooling inspired by Java Zemberek. It provides modules for:
- morphology
- tokenization
- normalization
- NER
- classification
- language identification
- language modeling
See module matrix in the root README.
Active .NET development with practical parity goals for core modules and examples. The repository is not a strict line-by-line Java mirror; .NET-specific improvements are allowed.
Yes, especially for:
- Turkish preprocessing pipelines
- tokenization and sentence splitting
- lemmatization/stemming workflows
- baseline NLP systems in .NET
For state-of-the-art tasks, modern transformer-based pipelines may outperform classical approaches, but ZemberekDotNet remains very useful for deterministic preprocessing and hybrid systems.
Morphological analysis decomposes words into stem/lemma and morphemes. For example, a word may include plural, possessive, and case morphemes that are surfaced in analysis output.
Use:
TurkishMorphology morphology = TurkishMorphology.CreateWithDefaults();
WordAnalysis analyses = morphology.Analyze("kalemlerimden");Many Turkish words are ambiguous out of context. Disambiguation selects the most likely parse using sentence context.
Use:
SentenceAnalysis sentence = morphology.AnalyzeAndDisambiguate("yarın okula gideceğim");Disambiguation is statistical/contextual and can fail on sparse, noisy, or domain-specific text. Common causes:
- insufficient domain adaptation
- informal/noisy language
- out-of-vocabulary forms
Yes. You can extract stems/lemmas from best analyses. For sentence-level quality, prefer disambiguated results.
Yes. You can build custom lexicons and load dictionary lines. See:
Yes. Word generation is available in morphology module. See morphology examples in this repository.
Use the normalization module. It contains spell-checking and suggestion functionality. For noisy sentence normalization, additional data/resources may be needed depending on scenario.
Yes. Use the LangID module:
LanguageIdentifier lid = LanguageIdentifier.FromInternalModels();
string lang = lid.Identify("merhaba dünya");For very short strings (especially single words), language detection is less reliable.
There is no first-class Python package in this repository. Typical integration patterns are:
- host .NET services and call from Python
- inter-process communication in your own architecture
gRPC support in this repository is deferred for future and not part of current port-completion scope.
No official Android support is provided in this repository. Primary target is modern .NET runtime usage (server/desktop/tooling scenarios).
Check this repository license terms and dependency licenses. As a general rule, commercial usage is possible when license obligations are met.
Alternatives include other Turkish NLP toolchains and modern deep-learning frameworks. In many real systems, ZemberekDotNet works well as a preprocessing component even when a neural model is used later in the pipeline.
English documentation/code conventions improve accessibility for broader developer audiences and cross-team collaboration.
Getting Started
Module Reference
- Morphology Notes
- Additions and Release Notes
- Morphemes Reference
- Classification Training Guide
- Normalization Guide
- Proper Nouns and Named Entities
- Text Dictionary Rules
API Parity & Migration
Reference
Roadmap