SharpSimpleNLG is a C# port of the University of Aberdeen simplenlg project. All thanks and acknowledgement for hard work goes to this team.
Please note that this port is behind the most current original simplenlg project.
Install-Package SharpSimpleNLG
Version 1.4.0:
- Thanks to PR from Michael Paulus Updated extensions to be internal so consuming projects don't pick them up.
Version 1.2.0:
- Thanks to PR from Arash-Sabet now supports .NET Standard 1.6 and .NET 4.6.2; along with VS2017 support. Added to NuGet package (I still hope my packaging is OK!)
Version 1.1.1:
- Thanks to PR from Andriy Svyrd now supports .NET Standard 1.3. Added to NuGet package (I hope my packaging is OK!)
- Renaming .csproj to ensure naming of assemblies is OK
- Move all extension methods (on Enums, mainly) into the SimpleNLG.Extensions namespace to stop pollution (thanks for recommendation Andriy)
- Fix pathing to Lexicon
- NuGet packaging fixes
Version 1.0.2:
- Permit passing of path to
default-lexicon.xml
into theXMLLexicon
constructor - thereby permitting a rough-draft (and untested) .NET Core port
Version 1.0.0 First commit/NuGet:
- Taken the current release of SimpleNLG (V4.4.8 API) version and generated a C# version.
- Unit tests ported, with added tests for C# specifics (Java idioms in Regex, Collections, equals, strings.substring etc)
- Current release English, with no HTML generation nor NIHLexicon import
I have to write some good documentation.
Look at the code in the Syntax Tutorials Unit Test. All these pass, so it is a good starter.
The simplenlg Tutorial is a good resource.
Or look at the general Unit Tests and see what simplenlg can do: SharpSimpleNLG Unit Tests
- Visual Studio 2022 with C# 6.0+ idioms used (as this is what I used)
- I've only used C# null conditionals and string interpolation in a couple of places so C# 6.0 isn't a forced requirement
- Assembly created has a minimum of .NET Standard 2.0 / .NET 4.6, but there is only use of generic
HashSet<T>
,Stack<T>
,List<T>
andDictionary<K,V>
with no async/await - so it should port to earlier .NET if you are into that sort of thing.
-
270 Unit tests using NUnit included.
- Passing Unit tests from the original project have been ported
- Added Unit tests for this particular port
- 7 tests do not pass; I think this is related to the configuration of the Unit tests rather than a code issue.
I am sure someone somewhere at sometime (most likely me) will find my Learnings on Java to C# interesting and useful.
- contribute back to parent!
- implement NIHLexicon and MultipleLexicon
- implement HTMLFormatter
- re-work Unit test hierarchy
- continue to track simplenlg changes and additions
- fluent-style sentence and phrase creation
- More C#/functional style
- Enums.ToString() change to Enum "side" hierarchy (because of C#/Java differences)
- smarter types (eg: widely used
Dictionary<string, object>
to subclassed to make life easier) - Documentation specific to this port