# Java to .NET Migration Quickstart This page helps teams migrate from Java Zemberek usage patterns to ZemberekDotNet with minimal friction. ## 1. Dependency Setup Java (Maven): ```xml zemberek-nlp zemberek-morphology 0.17.1 ``` .NET (NuGet): ```sh dotnet add package ZemberekDotNet.Morphology ``` All modules: ```sh dotnet add package ZemberekDotNet.All ``` ## 2. Morphology Java: ```java TurkishMorphology morphology = TurkishMorphology.createWithDefaults(); SentenceAnalysis analysis = morphology.analyzeAndDisambiguate("Yarın okula gideceğim."); ``` .NET: ```csharp TurkishMorphology morphology = TurkishMorphology.CreateWithDefaults(); SentenceAnalysis analysis = morphology.AnalyzeAndDisambiguate("Yarın okula gideceğim."); ``` ## 3. Tokenization Java: ```java List tokens = TurkishTokenizer.DEFAULT.tokenize("Merhaba dünya."); ``` .NET: ```csharp List tokens = TurkishTokenizer.Default.Tokenize("Merhaba dünya."); ``` ## 4. Sentence Extraction Java: ```java List sentences = TurkishSentenceExtractor.DEFAULT.fromParagraph(text); ``` .NET: ```csharp List sentences = TurkishSentenceExtractor.Default.FromParagraph(text); ``` ## 5. Language Identification Java: ```java LanguageIdentifier lid = LanguageIdentifier.fromInternalModels(); String lang = lid.identify("merhaba dünya"); ``` .NET: ```csharp LanguageIdentifier lid = LanguageIdentifier.FromInternalModels(); string lang = lid.Identify("merhaba dünya"); ``` ## 6. NER Java: ```java PerceptronNer ner = PerceptronNer.loadModel(modelRoot, morphology); NerSentence result = ner.findNamedEntities(sentence); ``` .NET: ```csharp PerceptronNer ner = PerceptronNer.LoadModel(modelRoot, morphology); NerSentence result = ner.FindNamedEntities(sentence); ``` ## 7. Typical Naming Differences | Java | .NET | |---|---| | `createWithDefaults()` | `CreateWithDefaults()` | | `analyzeAndDisambiguate()` | `AnalyzeAndDisambiguate()` | | `DEFAULT` | `Default` | | `fromParagraph()` | `FromParagraph()` | | `identify()` | `Identify()` | ## 8. Practical Notes - Keep one long-lived `TurkishMorphology` instance in app lifetime. - Prefer module-specific examples in this repository when behavior differs from old Java snippets. - gRPC usage is deferred for future in this repository and is outside current port-completion scope.