Exemplo n.º 1
0
        public async Task AnalyzeSentimentWithOpinionMining()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "The park was clean and pretty. The bathrooms and restaurant were not clean.";

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options : new AnalyzeSentimentOptions()
            {
                IncludeOpinionMining = true
            });

            CheckAnalyzeSentimentProperties(docSentiment, opinionMining: true);
            Assert.AreEqual("Mixed", docSentiment.Sentiment.ToString());
        }
Exemplo n.º 2
0
        public async Task AnalyzeSentimentWithOpinionMiningEmpty()
        {
            TextAnalyticsClient client = GetClient();
            string document            = singleEnglish;

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, "en", new AnalyzeSentimentOptions()
            {
                IncludeOpinionMining = true
            });

            CheckAnalyzeSentimentProperties(docSentiment);
            Assert.AreEqual("Positive", docSentiment.Sentiment.ToString());
        }
        public async Task <AzTextAnalyticsResult> AnalyzeText(string textToAnalyze)
        {
            var endpoint = new Uri(_analyticsUrl);
            var key      = _analyticsKey;
            var client   = new TextAnalyticsClient(endpoint, new TextAnalyticsApiKeyCredential(key));
            var response = await client.AnalyzeSentimentAsync(textToAnalyze);

            var textAnalyticsResult = _mapper.Map <DocumentSentiment, AzTextAnalyticsResult>(response.Value);

            textAnalyticsResult.TextAnalyzed = textToAnalyze;

            return(textAnalyticsResult);
        }
        public async Task <Sentiment> AnalysisAsync(string message)
        {
            var client = new TextAnalyticsClient(new Uri(this.appSetting.TextAnalyticsEndpoint), new AzureKeyCredential(this.appSetting.TextAnalyticsApiKey));

            var documentSentiment = await client.AnalyzeSentimentAsync(message);

            return(new Sentiment()
            {
                Positive = documentSentiment.Value.ConfidenceScores.Positive,
                Negative = documentSentiment.Value.ConfidenceScores.Negative,
                Neutral = documentSentiment.Value.ConfidenceScores.Neutral,
                Message = message
            });
        }
Exemplo n.º 5
0
        public async Task AnalyzeSentimentTest()
        {
            TextAnalyticsClient client = GetClient();
            string input = "That was the best day of my life!";

            AnalyzeSentimentResult result = await client.AnalyzeSentimentAsync(input);

            TextSentiment sentiment = result.DocumentSentiment;

            Assert.AreEqual("Positive", sentiment.SentimentClass.ToString());
            Assert.IsNotNull(sentiment.PositiveScore);
            Assert.IsNotNull(sentiment.NeutralScore);
            Assert.IsNotNull(sentiment.NegativeScore);
            Assert.IsNotNull(sentiment.Offset);
        }
Exemplo n.º 6
0
        public static async Task TestTextAnalyticsApiKeyAsync(string key, string apiEndpoint)
        {
            bool isUri = !string.IsNullOrEmpty(apiEndpoint) ? Uri.IsWellFormedUriString(apiEndpoint, UriKind.Absolute) : false;

            if (!isUri)
            {
                throw new ArgumentException("Invalid URI");
            }
            else
            {
                var credentials            = new AzureKeyCredential(key);
                var endpoint               = new Uri(apiEndpoint);
                TextAnalyticsClient client = new TextAnalyticsClient(endpoint, credentials);
                await client.AnalyzeSentimentAsync("I had the best day of my life.");
            }
        }
Exemplo n.º 7
0
        static async Task Analyze(TextAnalyticsClient client, string text)
        {
            DocumentSentiment sentiment = await client.AnalyzeSentimentAsync(text);

            Console.WriteLine($"Sentiment: {sentiment.ConfidenceScores.Positive}:{sentiment.ConfidenceScores.Neutral}:{sentiment.ConfidenceScores.Negative} - {sentiment.Sentiment}");

            var keywords = await client.ExtractKeyPhrasesAsync(text);

            // Printing key phrases
            Console.WriteLine("Key phrases:");

            foreach (string keyphrase in keywords.Value)
            {
                Console.WriteLine($"\t{keyphrase}");
            }
        }
Exemplo n.º 8
0
        public async Task AnalyzeSentimentAsync()
        {
            string endpoint = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_ENDPOINT");
            string apiKey   = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_API_KEY");

            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey));

            string document = "That was the best day of my life!";

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document);

            Console.WriteLine($"Sentiment was {docSentiment.Sentiment}, with confidence scores: ");
            Console.WriteLine($"    Positive confidence score: {docSentiment.ConfidenceScores.Positive}.");
            Console.WriteLine($"    Neutral confidence score: {docSentiment.ConfidenceScores.Neutral}.");
            Console.WriteLine($"    Negative confidence score: {docSentiment.ConfidenceScores.Negative}.");
        }
        public async Task <CognitiveServicesModel> AccessCognitiveServices(string input)
        {
            Azure.Response <DocumentSentiment> response =
                await _textAnalyticsClient.AnalyzeSentimentAsync(input);

            DocumentSentiment sentiment = response.Value;

            return(new CognitiveServicesModel
            {
                Sentiment = sentiment.Sentiment.ToString(),
                ConfidenceScores = new Dictionary <string, double>
                {
                    [TextSentiment.Positive.ToString()] = sentiment.ConfidenceScores.Positive,
                    [TextSentiment.Negative.ToString()] = sentiment.ConfidenceScores.Negative,
                    [TextSentiment.Neutral.ToString()] = sentiment.ConfidenceScores.Neutral,
                }
            });
        }
        public async Task DoSentimentAnalysis(string message)
        {
            DocumentSentiment documentSentiment = await _client.AnalyzeSentimentAsync(message);

            Console.WriteLine($"Document sentiment: { documentSentiment.Sentiment }\n");

            var stringInfo = new StringInfo(message);

            foreach (var sentence in documentSentiment.Sentences)
            {
                Console.WriteLine($"\tSentence [length {sentence.GraphemeLength}]");
                Console.WriteLine($"\tText: \"{stringInfo.SubstringByTextElements(sentence.GraphemeOffset, sentence.GraphemeLength)}\"");
                Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
                Console.WriteLine($"\tPositive score: {sentence.ConfidenceScores.Positive:0.00}");
                Console.WriteLine($"\tNegative score: {sentence.ConfidenceScores.Negative:0.00}");
                Console.WriteLine($"\tNeutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
            }
        }
Exemplo n.º 11
0
        public async Task AnalyzeSentimentWithOpinionMiningNegated()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "The bathrooms are not clean.";

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options : new AnalyzeSentimentOptions()
            {
                IncludeOpinionMining = true
            });

            CheckAnalyzeSentimentProperties(docSentiment, opinionMining: true);
            SentenceOpinion opinion = docSentiment.Sentences.FirstOrDefault().Opinions.FirstOrDefault();

            Assert.AreEqual("bathrooms", opinion.Target.Text);
            Assert.AreEqual(TextSentiment.Negative, opinion.Target.Sentiment);
            Assert.AreEqual("clean", opinion.Assessments.FirstOrDefault().Text);
            Assert.AreEqual(TextSentiment.Negative, opinion.Assessments.FirstOrDefault().Sentiment);
            Assert.IsTrue(opinion.Assessments.FirstOrDefault().IsNegated);
        }
        public async Task AnalyzeSentimentWithOpinionMiningNegated()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "The bathrooms are not clean.";

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options : new AnalyzeSentimentOptions()
            {
                AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining
            });

            CheckAnalyzeSentimentProperties(docSentiment, opinionMining: true);
            MinedOpinion minedOpinion = docSentiment.Sentences.FirstOrDefault().MinedOpinions.FirstOrDefault();

            Assert.AreEqual("bathrooms", minedOpinion.Aspect.Text);
            Assert.AreEqual(TextSentiment.Negative, minedOpinion.Aspect.Sentiment);
            Assert.AreEqual("clean", minedOpinion.Opinions.FirstOrDefault().Text);
            Assert.AreEqual(TextSentiment.Negative, minedOpinion.Opinions.FirstOrDefault().Sentiment);
            Assert.IsTrue(minedOpinion.Opinions.FirstOrDefault().IsNegated);
        }
Exemplo n.º 13
0
        private static async Task SentimentAnalysisExampleAsync(TextAnalyticsClient client)
        {
            WriteLine("****** Sentiment analysis ******");
            WriteLine();

            var document = "I had the best day of my life. I wish you were there with me.";
            DocumentSentiment documentSentiment = await client.AnalyzeSentimentAsync(document);

            WriteLine($"Document: {document}");
            WriteLine($"Document sentiment: {documentSentiment.Sentiment}\n");

            foreach (var sentence in documentSentiment.Sentences)
            {
                WriteLine($"\tText: \"{sentence.Text}\"");
                WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
                WriteLine($"\tPositive score: {sentence.ConfidenceScores.Positive:0.00}");
                WriteLine($"\tNegative score: {sentence.ConfidenceScores.Negative:0.00}");
                WriteLine($"\tNeutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
            }

            WriteLine();
        }
Exemplo n.º 14
0
        public async Task <FileAnalysisResult> AnalyzeFileContentAsync(InputFileData inputFileData)
        {
            if (inputFileData.FileContentType == FileContentType.PDF)
            {
                var sasToken = _storageService.GenerateSasToken();
                inputFileData.FilePath = $"{inputFileData.FilePath}?{sasToken}";

                var textFromTheInputDocument = await _ocrScannerService.ScanDocumentAndGetResultsAsync(inputFileData.FilePath);

                var sentimentAnalysisResponse = await _textAnalyticsClient.AnalyzeSentimentAsync(textFromTheInputDocument);

                if (sentimentAnalysisResponse != null)
                {
                    var sentimentAnalysisResult = sentimentAnalysisResponse.Value;
                    var fileAnalysisResult      = new FileAnalysisResult();
                    fileAnalysisResult.SentimentValues.Add(sentimentAnalysisResult.Sentiment.ToString());
                    return(fileAnalysisResult);
                }
            }

            throw new ArgumentException("Input file shuld be either TXT or PDF file.");
        }
Exemplo n.º 15
0
        public async Task AnalyzeSentimentTest()
        {
            TextAnalyticsClient client = GetClient();
            string document            = "That was the best day of my life!";

            DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document);

            Assert.AreEqual("Positive", docSentiment.Sentiment.ToString());
            Assert.IsNotNull(docSentiment.ConfidenceScores.Positive);
            Assert.IsNotNull(docSentiment.ConfidenceScores.Neutral);
            Assert.IsNotNull(docSentiment.ConfidenceScores.Negative);

            foreach (var sentence in docSentiment.Sentences)
            {
                Assert.AreEqual("Positive", sentence.Sentiment.ToString());
                Assert.IsNotNull(sentence.Text);
                Assert.AreEqual(document, sentence.Text);
                Assert.IsNotNull(sentence.ConfidenceScores.Positive);
                Assert.IsNotNull(sentence.ConfidenceScores.Neutral);
                Assert.IsNotNull(sentence.ConfidenceScores.Negative);
            }
        }
        public async Task <DocumentSentiment> AnalyzeSentitmentAsync(string text, string language = "en")
        {
            DocumentSentiment result = await client.AnalyzeSentimentAsync(text, language);

            return(result);
        }
Exemplo n.º 17
0
        static async Task Main(string[] args)
        {
            Env.Load("../../../../.env");

            //using var listener = AzureEventSourceListener.CreateConsoleLogger();

            var cred = Identity.GetCredentialChain();

            // QueueClient
            var queueServiceClient = new QueueServiceClient(
                new Uri(Env.GetString("AZURE_STORAGE_QUEUE_ENDPOINT")), cred);

            var queueClient = queueServiceClient.GetQueueClient(Env.GetString("AZURE_STORAGE_QUEUE_NAME"));
            await queueClient.CreateIfNotExistsAsync();

            // FormRecognizerClient
            var formRecognizerClient = new FormRecognizerClient(
                new Uri(Env.GetString("AZURE_FORM_RECOGNIZER_ENDPOINT")),
                cred);

            // TextAnalyticsClient
            var textAnalyticsClient = new TextAnalyticsClient(
                new Uri(Env.GetString("AZURE_TEXT_ANALYTICS_ENDPOINT")),
                cred);

            // CosmosClient
            var cosmosClient = new CosmosClient(
                Env.GetString("AZURE_COSMOS_ENDPOINT"),
                Env.GetString("AZURE_COSMOS_KEY"),
                new CosmosClientOptions
            {
                Diagnostics =
                {
                    IsLoggingEnabled = false
                },
                ConnectionMode    = ConnectionMode.Direct,
                ConsistencyLevel  = ConsistencyLevel.Session,
                SerializerOptions = new CosmosSerializationOptions {
                    PropertyNamingPolicy = CosmosPropertyNamingPolicy.CamelCase, IgnoreNullValues = true
                },
            });

            // Create Database and Container
            var databaseResponse = await cosmosClient.CreateDatabaseIfNotExistsAsync(Env.GetString("AZURE_COSMOS_DB"));

            var containerResponse = await databaseResponse.Database.CreateContainerIfNotExistsAsync(new ContainerProperties(Env.GetString("AZURE_COSMOS_CONTAINER"), "/uid"));

            while (true)
            {
                Console.WriteLine("Receiving Messages...");

                // Get Messages
                var messages = await queueClient.ReceiveMessagesAsync(maxMessages : Env.GetInt("AZURE_STORAGE_QUEUE_MSG_COUNT", 10));

                foreach (var message in messages.Value)
                {
                    Console.WriteLine(message.MessageText);

                    // Deserialize Message
                    var image = JsonSerializer.Deserialize <Image>(message.MessageText,
                                                                   new JsonSerializerOptions {
                        PropertyNamingPolicy = JsonNamingPolicy.CamelCase
                    });

                    // Extract Text from Image
                    var recognizeContentOperation = await formRecognizerClient.StartRecognizeContentFromUriAsync(new Uri(image.BlobUri));

                    var recognizeContentCompletion = await recognizeContentOperation.WaitForCompletionAsync();

                    var content = recognizeContentCompletion.Value;
                    var text    = content.SelectMany(page => page.Lines).Aggregate(new StringBuilder(), (a, b) =>
                    {
                        a.Append($"{b.Text} ");
                        return(a);
                    });

                    image.Text = text.ToString();

                    if (!string.IsNullOrEmpty(image.Text))
                    {
                        Console.WriteLine($"Image Text: {image.Text}");

                        // Analyize Text Sentiment
                        var documentSentiment = await textAnalyticsClient.AnalyzeSentimentAsync(image.Text);

                        image.Sentiment = documentSentiment.Value.Sentiment.ToString();

                        Console.WriteLine($"Image Sentiment: {image.Sentiment}");
                    }
                    else
                    {
                        Console.WriteLine("No Text Extracted from Image.");
                    }

                    // Create Cosmos Document
                    var document = await containerResponse.Container.UpsertItemAsync(image);

                    Console.WriteLine($"Cosmos Document Saved: {document.Value.Id}");

                    // Delete Queue Message
                    var deleteResponse = await queueClient.DeleteMessageAsync(message.MessageId, message.PopReceipt);

                    Console.WriteLine($"Queue Message Deleted: {message.MessageId}");
                }
                await Task.Delay(TimeSpan.FromSeconds(Env.GetInt("AZURE_STORAGE_QUEUE_RECEIVE_SLEEP", 1)));
            }
        }
        public async Task <string> AnalyseSentiment(string textToAnalyse)
        {
            DocumentSentiment documentSentiment = await client.AnalyzeSentimentAsync(textToAnalyse);

            return(documentSentiment.Sentiment.ToString());
        }
Exemplo n.º 19
0
        private static async Task <TextSentiment> GetSentiment(string text)
        {
            DocumentSentiment documentSentiment = await client.AnalyzeSentimentAsync(text);

            return(documentSentiment.Sentiment);
        }