I've recently been working on a project that required some natural language processing. After a surprisingly brief search I came upon the Stanford CoreNLP suite of tools and after playing with their online demo was astounded at the capabilities it provided. Furthermore, it was free, could be run such that it provided a basic HTTP API and came packaged with everything it needed save a copy of the JRE.
Having recently enjoyed a lot of success running various JAVA services inside a Docker container running Windows Nano Server, I decided to see if CoreNLP could be run like this too. Copying my previous build script and amending it to build a container running CoreNLP was ludicrously easy and in no time I had a local API I could hit to perform all the natural language processing I needed.
Now, while the project I was working on mainly required the "Named Entity Recognition" and "Open IE" annotators, I was intrigued to see that CoreNLP also included a basic Sentiment annotator. Given that I had written part one of this post back in January, had noted at the time how much I'd like to do sentiment analysis on the transcripts of Red Dwarf, and that I hadn't written a blog post since, I decided to take some time out and perform the sentiment analysis so that I could write this post.
Again employing Project Jupyter hosted on Azure Notebooks and using F# coupled with FsLab as my primary language and toolkit, I had a lot of fun performing the analysis. Like last time, you can find the full notebook and source material in my Github repository.
Note: As before, Github provides a "limited rendering only" so, to see all the charts running correctly you need to use the 'nbviewer' link shown below to see a full rendering of the notepad.
The best bit of all (note: spoilers ahead!) is that it seems my original conclusion may indeed have been wrong... or at least mis-attributed.