Monday, October 27, 2014

Using Stanford NLP to run a sentiment analysis with F#

Stanford NLP is a great tool for text analysis and Sergey Tihon did a great job demonstrating how it can be called from .NET code with C# and F#.

Purpose of this post is to show how StanfordNLP sentiment analysis can be called from F# application. Code used in this example provides sentiment value - from very negative to very positive - for all sentences of the specified text.

Prerequisites:

    -Nuget Stanford.NLP.CoreNLP package needs to be installed (this code works with 3.4.0.0)  
    -Java binaries should be downloaded from http://nlp.stanford.edu/software/stanford-corenlp-full-2014-06-16.zip and unzipped. After that you need to extract content of stanford-corenlp-3.4-
models.jar(it is part of the zip file)to some directory.  

Source code:

    F# code is elegant as usual :)


    To call this method you can use following code, where models location should be set to modelsDir variable:


    Enjoy!

3 comments:

  1. With public sentiment, nothing can fail. Without it, nothing can succeed.
    See the link below for more info.

    #sentiment
    www.ufgop.org

    ReplyDelete
  2. Hi, I was testing this and I observed that for each iteration with the same text time is getting increased by 3 to 4 seconds.
    Below is our code :

    let analyzer = makeSentimentAnalyzer "ModelDirectoryPath"
    let result =
    [1..10]
    |> List.map(fun x -> analyzer someText)

    and output is :

    iteration = 1 and its Time : 00:00:04.7943076
    iteration = 2 and its Time : 00:00:07.8334975
    iteration = 3 and its Time : 00:00:11.0907054
    iteration = 4 and its Time : 00:00:14.3769231
    iteration = 5 and its Time : 00:00:17.7311399
    iteration = 6 and its Time : 00:00:20.9423484
    iteration = 7 and its Time : 00:00:24.3025585
    iteration = 8 and its Time : 00:00:27.5257557
    iteration = 9 and its Time : 00:00:30.9089676
    iteration = 10 and its Time : 00:00:34.1181736

    Any suggestions ?

    ReplyDelete
  3. problem got resolved we were using older version now we are using 12 December library.
    Regards,
    ABB

    ReplyDelete