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.