Natural Language Tools Port to .NET Core

The Immersive Reader service helps users with reading comprehension. Its functionality includes highlighting words based on Part-of-Speech (Nouns, Verbs, etc.) and helping users understand how to pronounce a word by breaking the word into Syllables. Behind the scenes, the Immersive Reader uses complex algorithms that were originally developed by Microsoft as part of their spell-checking and grammar-checking tools.

The code that powers Microsoft’s “natural language” tools is written in C++. However, in order to support the Immersive Reader Cognitive Service running in Kubernetes containers, we needed a version of the code built for Linux.

In this project, I ported large chunks of the “natural language” code base (approximately 20 KLOC) from C++ to C# and .NET 5. This was a big effort, particularly since I have limited experience with C++.

This project was exciting because it was an opportunity to work with “unsafe” code inside the C# and Managed .NET model. I created numerous design patterns to bridge the world of native pointers and managed objects.

Employer
Microsoft Corporation
Role
Principal Software Engineer
Focus Areas
Natural Language Processing, Language Processing, Globalization
Technology
C# 9/.NET 5, C# 8/.NET Core 3.x, Visual Studio 2019
Screenshot of Natural Language Tools Port to .NET Core