Example #1
0
 private static string GetSentiment(string text)
 {
     try
     {
         double score = 0;
         var apiKey = "Tu api key de azure cognitive service text"";
         var document = new SentimentDocument()
         {
             Id = "OutlookSergio",
             Text = text,
             Language = "es"
         };
         var request = new SentimentRequest();
         request.Documents.Add(document);
         var client = new SentimentClient(apiKey);
         var response = client.GetSentiment(request);
         foreach (var doc in response.Documents)
         {
             score += doc.Score;
         }
         score = Math.Round((score / response.Documents.Count), 2) * 100;
         return score + "%";
     }
     catch(Exception e)
     {
         return null;
     }
 }
Example #2
0
        static void Main(string[] args)
        {
            var apiKey = "YOUR-TEXT-ANALYTICS-API-SUBSCRIPTION-KEY";

            var document = new SentimentDocument()
            {
                Id       = "YOUR-UNIQUE-ID",
                Text     = "YOUR-TEXT",
                Language = "en"
            };

            var request = new SentimentRequest();

            request.Documents.Add(document);

            var client = new SentimentClient(apiKey);

            var response = client.GetSentiment(request);

            foreach (var doc in response.Documents)
            {
                Console.WriteLine("   Document Id: {0}", doc.Id);
                Console.WriteLine("   Score: {0}%", (doc.Score * 100));
            }

            Console.WriteLine("   Press any key to exit...");
            Console.ReadLine();
        }
Example #3
0
        public async void GivenAnyMessageActivity_WhenGetSentimentIsInvoked_ThenScoreIsBeingReturned(
            ITextAnalyticsClient textAnalyticsClient,
            IMessageActivity activity,
            double sentiment)
        {
            // Arrange
            var instrumentation = new SentimentClient(textAnalyticsClient);
            var response        = new HttpOperationResponse <SentimentBatchResult>
            {
                Body = new SentimentBatchResult(new[] { new SentimentBatchResultItem(sentiment) })
            };

            Mock.Get(textAnalyticsClient)
            .Setup(tac => tac.SentimentWithHttpMessagesAsync(
                       It.IsAny <MultiLanguageBatchInput>(),
                       It.IsAny <Dictionary <string, List <string> > >(),
                       It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(response));

            // Act
            var score = await instrumentation.GetSentiment(activity)
                        .ConfigureAwait(false);

            // Assert
            score.Should().Be(sentiment);
        }
Example #4
0
        public async void GivenEmptyMessageActivity_WhenGetSentimentIsInvoked_ThenExceptionIsBeingThrown(
            ITextAnalyticsClient textAnalyticsClient)
        {
            // Arrange
            var instrumentation = new SentimentClient(textAnalyticsClient);
            const IMessageActivity emptyMessageActivity = null;

            // Act
            // Assert
            await Assert.ThrowsAsync <ArgumentNullException>(() => instrumentation.GetSentiment(emptyMessageActivity))
            .ConfigureAwait(false);
        }
        public static float AnalyzeSentiment(string id, string text, string language)
        {
            float score    = 0;
            var   document = new SentimentDocument()
            {
                Id       = id,
                Text     = text,
                Language = language
            };

            var client = new SentimentClient(Constants.ApiKey)
            {
                Url = "https://westeurope.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment"
            };
            var request = new SentimentRequest();

            request.Documents.Add(document);

            try
            {
                var response = client.GetSentiment(request);
                score = response.Documents.First().Score * 100;
            }
            catch (Exception ex)
            {
                var message      = "";
                var innerMessage = "";
                if (!String.IsNullOrEmpty(ex.Message))
                {
                    message = ex.Message;
                }

                try
                {
                    if ((ex.InnerException != null) && (!String.IsNullOrEmpty(ex.InnerException.Message)))
                    {
                        innerMessage = ex.InnerException.Message;
                    }
                }
                catch (Exception innerEx)
                {
                    if ((innerEx.InnerException != null) && (!String.IsNullOrEmpty(innerEx.InnerException.Message)))
                    {
                        innerMessage = innerEx.InnerException.Message;
                    }
                }

                Console.WriteLine(String.Format("Error in AnalyzeSentiment: {0}:{1}", message, innerMessage));
            }
            return(score);
        }
Example #6
0
        public async void GivenDisposedSentimentClient_WhenGetSentimentIsInvoked_ThenExceptionIsBeingThrown(
            ITextAnalyticsClient textAnalyticsClient,
            IMessageActivity activity)
        {
            // Arrange
            var instrumentation = new SentimentClient(textAnalyticsClient);

            instrumentation.Dispose();

            // Act
            // Assert
            await Assert.ThrowsAsync <ObjectDisposedException>(() => instrumentation.GetSentiment(activity))
            .ConfigureAwait(false);
        }
Example #7
0
        static void Main(string[] args)
        {
            // MS Cognitive Services API key
            var apiKeyTextAnalytics = "REPLACE_WITH_API_KEY";

            var text = @"A thing of beauty is a joy for ever:
                        Its loveliness increases; it will never
                        Pass into nothingness; but still will keep
                        A bower quiet for us, and a sleep
                        Full of sweet dreams, and health, and quiet breathing.";

            // GET text sentiment
            var sentimentDocument = new SentimentDocument()
            {
                Id       = "Sentiment",
                Text     = text,
                Language = "en"
            };

            Console.WriteLine("Analyzing {0}", sentimentDocument.Id + "..");

            var sentimentRequest = new SentimentRequest();

            sentimentRequest.Documents.Add(sentimentDocument);
            var sentimentClient   = new SentimentClient(apiKeyTextAnalytics);
            var sentimentResponse = sentimentClient.GetSentiment(sentimentRequest);

            Console.WriteLine("   Score: {0}%", (sentimentResponse.Documents[0].Score * 100) + " [0% - negative, 100% - positive]");

            // GET text keyphrases
            var keyPhraseDocument = new KeyPhraseDocument()
            {
                Id       = "KeyPhrases",
                Text     = text,
                Language = "en"
            };

            Console.WriteLine("Recognizing {0}", keyPhraseDocument.Id + "..");

            var keyPhraseRequest = new KeyPhraseRequest();

            keyPhraseRequest.Documents.Add(keyPhraseDocument);
            var keyPhraseClient   = new KeyPhraseClient(apiKeyTextAnalytics);
            var keyPhraseResponse = keyPhraseClient.GetKeyPhrases(keyPhraseRequest);

            foreach (var keyPhrase in keyPhraseResponse.Documents[0].KeyPhrases)
            {
                Console.WriteLine("   KeyPhrase: {0}", keyPhrase);
            }
        }
Example #8
0
        public static float AnalyzeSentiment(string id, string text, string language)
        {
            float score    = 0;
            var   document = new SentimentDocument()
            {
                Id       = id,
                Text     = text,
                Language = language
            };

            var client  = new SentimentClient(Constants.API_KEY);
            var request = new SentimentRequest();

            request.Documents.Add(document);

            try
            {
                var response = client.GetSentiment(request);
                score = response.Documents.First().Score * 100;
            }
            catch (Exception ex)
            {
                var message      = "";
                var innerMessage = "";
                if (!String.IsNullOrEmpty(ex.Message))
                {
                    message = ex.Message;
                }

                try
                {
                    if ((ex.InnerException != null) && (!String.IsNullOrEmpty(ex.InnerException.Message)))
                    {
                        innerMessage = ex.InnerException.Message;
                    }
                }
                catch (Exception innerEx)
                {
                    if ((innerEx.InnerException != null) && (!String.IsNullOrEmpty(innerEx.InnerException.Message)))
                    {
                        innerMessage = innerEx.InnerException.Message;
                    }
                }

                //Console.WriteLine(String.Format("Error in AnalyzeSentiment: {0}:{1}", message, innerMessage));
            }
            return(score);
        }
        public void Analyse(string gitPath)
        {
            var repo = OpenRepository(gitPath);

            if (repo == null)
            {
                return;
            }
            System.Console.WriteLine("OK");

            var commits = repo.Commits.Where(c => !c.Message.StartsWith("Merge")).Take(20);

            if (commits.Count() == 0)
            {
                System.Console.WriteLine("-- No data --");
            }

            var request = new SentimentRequest();

            foreach (var commit in commits)
            {
                var document = new SentimentDocument()
                {
                    Id       = commit.Id.Sha,
                    Text     = commit.Message,
                    Language = "en"
                };
                request.Documents.Add(document);
            }

            var apiKey = System.Configuration.ConfigurationManager.AppSettings["ApiKey"];
            var client = new SentimentClient(apiKey);

            var response = client.GetSentiment(request);
            var scores   = new List <float>();

            foreach (var doc in response.Documents)
            {
                scores.Add(doc.Score);
                System.Console.WriteLine($"Id: {doc.Id} | Score: {(doc.Score * 100)}%");
                if (doc.Score < 0.3 || 0.8 < doc.Score)
                {
                    System.Console.WriteLine($"\t --> {request.Documents.FirstOrDefault(d => d.Id == doc.Id).Text}");
                }
            }
            System.Console.WriteLine($"Average score: {(scores.Average() * 100)}");
        }
        public void GetSentiment_Positive()
        {
            var text = "I had a wonderful experience! The rooms were wonderful and the staff were helpful.";
            var doc  = new SentimentDocument()
            {
                Id = "TEST001", Text = text, Language = "en"
            };

            var request = new SentimentRequest();

            request.Documents.Add(doc);

            var client   = new SentimentClient(this.apiKey);
            var response = client.GetSentiment(request);

            var score = response.Documents[0].Score;

            Assert.IsTrue(score > 0.5);
        }
        public void GetSentiment_Negative()
        {
            var text = "I had a terrible time at the hotel. The staff were rude and the food was awful.";

            var doc = new SentimentDocument()
            {
                Id = "TEST001", Text = text, Language = "en"
            };

            var request = new SentimentRequest();

            request.Documents.Add(doc);

            var client   = new SentimentClient(this.apiKey);
            var response = client.GetSentiment(request);

            var score = response.Documents[0].Score;

            Assert.IsTrue(score < 0.5);
        }
Example #12
0
        private static void GetSentiment()
        {
            var client  = new SentimentClient(apiKey);
            var request = new SentimentRequest();

            var document = new SentimentDocument()
            {
                Id       = "YOUR-UNIQUE-ID",
                Text     = "YOUR-TEXT",
                Language = "en"
            };

            request.Documents.Add(document);

            var response = client.GetSentiment(request);

            foreach (var doc in response.Documents)
            {
                Console.WriteLine("   Document Id: {0}", doc.Id);
                Console.WriteLine("   Score: {0}%", (doc.Score * 100));
            }
        }
Example #13
0
        static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("Usage: ");
                Console.WriteLine("  " + System.AppDomain.CurrentDomain.FriendlyName + " <FILENAME> <APIKEY>");
                Environment.Exit(1);
            }
            string bookfile = args[0];
            string apiKey   = args[1];

            Console.WriteLine("Analyzing book: " + bookfile);
            EpubBook epubBook = EpubReader.ReadBook(bookfile);

            string title  = epubBook.Title;
            string author = epubBook.Author;

            Console.WriteLine("Book title: " + title);
            Console.WriteLine();

            double bookScore   = 0.0;
            int    numChapters = 0;

            foreach (EpubChapter chapter in epubBook.Chapters)
            {
                var request = new SentimentRequest();

                string chapterTitle = chapter.Title;

                AppendChapter(ref request, chapter);

                foreach (EpubChapter subChapter in chapter.SubChapters)
                {
                    AppendChapter(ref request, subChapter);
                }

                var client   = new SentimentClient(apiKey);
                var response = client.GetSentiment(request);

                foreach (Microsoft.ProjectOxford.Text.Core.DocumentError e in response.Errors)
                {
                    Console.WriteLine("Errors: " + e.Message);
                }

                double score     = 0.0;
                int    numScores = 0;

                foreach (SentimentDocumentResult r in  response.Documents)
                {
                    score += r.Score;
                    numScores++;
                }

                score /= numScores;

                Console.WriteLine(numChapters + ": " + chapterTitle + ", score: " + score);

                bookScore += score;
                numChapters++;
            }

            bookScore /= numChapters;

            Console.WriteLine();
            Console.WriteLine("Average book sentiment: " + bookScore);
        }