Esempio n. 1
0
        static void EntityRecognitionExample(TextAnalyticsClient client)
        {
            var response = client.RecognizeEntities("I had a wonderful trip to Seattle last week.");

            Console.WriteLine("Named Entities:");
            foreach (var entity in response.Value)
            {
                Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
                Console.WriteLine($"\t\tOffset: {entity.Offset},\tLength: {entity.Length},\tScore: {entity.Score:F3}\n");
            }
        }
Esempio n. 2
0
        static void EntityRecognitionExample(TextAnalyticsClient client, string inputText)
        {
            var response = client.RecognizeEntities(inputText);

            Console.WriteLine("Named Entities:");
            foreach (var entity in response.Value)
            {
                Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
                Console.WriteLine($"\t\tLength: {entity.GraphemeLength},\tScore: {entity.ConfidenceScore:F2}\n");
            }
        }
Esempio n. 3
0
        static void EntityRecognition(TextAnalyticsClient client, string inputText)
        {
            //"I had a wonderful trip to Seattle last week."
            var response = client.RecognizeEntities(inputText);

            Console.WriteLine("Entities:");
            foreach (var entity in response.Value)
            {
                Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
                Console.WriteLine($"\t\tLength: {entity.GraphemeLength},\tScore: {entity.ConfidenceScore:F2}\n");
            }
            Console.WriteLine("\n\n");
        }
        public static IEnumerable <string> EntityRecognition(TextAnalyticsClient client, string content)
        {
            var response = client.RecognizeEntities(content);

            Console.WriteLine("Named Entities:");
            List <string> entities = new List <string>();

            foreach (var entity in response.Value)
            {
//                Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
                entities.Add(entity.Text);
            }
            return(entities);
        }
Esempio n. 5
0
        static string EntityRecognitionExample(TextAnalyticsClient client, string text)
        {
            var response = client.RecognizeEntities(text);

            Console.WriteLine("Named Entities:");
            string result = "Named Entities:\n";

            foreach (var entity in response.Value)
            {
                Console.WriteLine($"      Text: {entity.Text},      Category: {entity.Category},      Sub-Category: {entity.SubCategory}");
                Console.WriteLine($"            Length: {entity.GraphemeLength},      Score: {entity.ConfidenceScore:F2}\n");
                result = result + $"      Text: {entity.Text}\n      Category: {entity.Category}\n      Sub-Category: {entity.SubCategory}\n";
                result = result + $"    Score: {entity.ConfidenceScore:F2}\n\n";
            }
            return(result);
        }
Esempio n. 6
0
        public void RecognizeEntities()
        {
            string endpoint        = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_ENDPOINT");
            string subscriptionKey = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_SUBSCRIPTION_KEY");

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), subscriptionKey);

            string input = "Microsoft was founded by Bill Gates and Paul Allen.";

            Debug.WriteLine($"Recognizing entities for input: \"{input}\"");
            var entities = client.RecognizeEntities(input).Value;

            Debug.WriteLine($"Recognized {entities.Count()} entities:");
            foreach (NamedEntity entity in entities)
            {
                Debug.WriteLine($"Text: {entity.Text}, Type: {entity.Type}, SubType: {entity.SubType ?? "N/A"}, Score: {entity.Score}, Offset: {entity.Offset}, Length: {entity.Length}");
            }
        }
Esempio n. 7
0
        public void RecognizeEntities()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

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

            #region Snippet:RecognizeEntities
            string document = @"We love this trail and make the trip every year. The views are breathtaking and well
                                worth the hike! Yesterday was foggy though, so we missed the spectacular views.
                                We tried again today and it was amazing. Everyone in my family liked the trail although
                                it was too challenging for the less athletic among us.
                                Not necessarily recommended for small children.
                                A hotel close to the trail offers services for childcare in case you want that.";

            try
            {
                Response <CategorizedEntityCollection> response           = client.RecognizeEntities(document);
                CategorizedEntityCollection            entitiesInDocument = response.Value;

                Console.WriteLine($"Recognized {entitiesInDocument.Count} entities:");
                foreach (CategorizedEntity entity in entitiesInDocument)
                {
                    Console.WriteLine($"  Text: {entity.Text}");
                    Console.WriteLine($"  Offset: {entity.Offset}");
                    Console.WriteLine($"  Length: {entity.Length}");
                    Console.WriteLine($"  Category: {entity.Category}");
                    if (!string.IsNullOrEmpty(entity.SubCategory))
                    {
                        Console.WriteLine($"  SubCategory: {entity.SubCategory}");
                    }
                    Console.WriteLine($"  Confidence score: {entity.ConfidenceScore}");
                    Console.WriteLine("");
                }
            }
            catch (RequestFailedException exception)
            {
                Console.WriteLine($"Error Code: {exception.ErrorCode}");
                Console.WriteLine($"Message: {exception.Message}");
            }
            #endregion
        }
        public void RecognizeEntities()
        {
            string endpoint = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_ENDPOINT");
            string apiKey   = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_API_KEY");

            #region Snippet:TextAnalyticsSample4CreateClient
            var client = new TextAnalyticsClient(new Uri(endpoint), new TextAnalyticsApiKeyCredential(apiKey));
            #endregion

            #region Snippet:RecognizeEntities
            string input = "Microsoft was founded by Bill Gates and Paul Allen.";

            IReadOnlyCollection <CategorizedEntity> entities = client.RecognizeEntities(input).Value;

            Console.WriteLine($"Recognized {entities.Count} entities:");
            foreach (CategorizedEntity entity in entities)
            {
                Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}");
            }
            #endregion
        }
Esempio n. 9
0
        public void RecognizeEntities()
        {
            string endpoint = TestEnvironment.Endpoint;
            string apiKey   = TestEnvironment.ApiKey;

            #region Snippet:TextAnalyticsSample4CreateClient
            var client = new TextAnalyticsClient(new Uri(endpoint), new AzureKeyCredential(apiKey));
            #endregion

            #region Snippet:RecognizeEntities
            string document = "Microsoft was founded by Bill Gates and Paul Allen.";

            CategorizedEntityCollection entities = client.RecognizeEntities(document);

            Console.WriteLine($"Recognized {entities.Count} entities:");
            foreach (CategorizedEntity entity in entities)
            {
                Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}");
            }
            #endregion
        }
        public void RecognizeEntities()
        {
            string endpoint        = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_ENDPOINT");
            string subscriptionKey = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_SUBSCRIPTION_KEY");

            #region Snippet:TextAnalyticsSample4CreateClient
            var client = new TextAnalyticsClient(new Uri(endpoint), new TextAnalyticsSubscriptionKeyCredential(subscriptionKey));
            #endregion

            #region Snippet:RecognizeEntities
            string input = "Microsoft was founded by Bill Gates and Paul Allen.";

            RecognizeEntitiesResult           result   = client.RecognizeEntities(input);
            IReadOnlyCollection <NamedEntity> entities = result.NamedEntities;

            Console.WriteLine($"Recognized {entities.Count()} entities:");
            foreach (NamedEntity entity in entities)
            {
                Console.WriteLine($"Text: {entity.Text}, Type: {entity.Type}, SubType: {entity.SubType ?? "N/A"}, Score: {entity.Score}, Offset: {entity.Offset}, Length: {entity.Length}");
            }
            #endregion
        }
Esempio n. 11
0
        //Entity Recognition
        private List <NamedEntity> EntityRecognition(string textInput)
        {
            List <NamedEntity> entities = new List <NamedEntity>();
            var response = client.RecognizeEntities(textInput);

            Console.WriteLine("Named Entities:");
            foreach (var entity in response.Value)
            {
                NamedEntity namedEntity = new NamedEntity();
                Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
                Console.WriteLine($"\t\tScore: {entity.ConfidenceScore:F2}\n");

                namedEntity.Id          = entity.Text;
                namedEntity.Text        = entity.Text;
                namedEntity.Category    = entity.Category.ToString();
                namedEntity.SubCategory = entity.SubCategory;
                namedEntity.Score       = entity.ConfidenceScore;


                entities.Add(namedEntity);
            }

            return(entities);
        }
Esempio n. 12
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            try
            {
                var logEntry = new LogEntry();
                var options  = new JsonSerializerOptions
                {
                    WriteIndented = false
                };
                options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));

                //var configurationBuilder = new ConfigurationBuilder().AddUserSecrets();
                // var configuration = configurationBuilder.Build();
                var hashTags     = _configuration.GetValue <string>("HashTags").Split(",").ToList();
                var users        = _configuration.GetValue <string>("Users").Split(",").ToList();
                var blockedWords = _configuration.GetValue <string>("BlockedWords").Split(",").ToList();
                var blockedUsers = _configuration.GetValue <string>("BlockedUsers").Split(",").ToList();

                var userCredentials = new TwitterCredentials(
                    _configuration.GetValue <string>("Twitter:ApiKey"),
                    _configuration.GetValue <string>("Twitter:ApiSecret"),
                    _configuration.GetValue <string>("Twitter:AccessToken"),
                    _configuration.GetValue <string>("Twitter:AccessSecret")
                    );

                var textAnalyticsClient = new TextAnalyticsClient(
                    new Uri(_configuration.GetValue <string>("Azure:TextAnalyticsURI")),
                    new AzureKeyCredential(_configuration.GetValue <string>("Azure:TextAnalyticsKey"))
                    );
                var userClient = new TwitterClient(userCredentials);
                var stream     = userClient.Streams.CreateFilteredStream();
                stream.AddLanguageFilter(LanguageFilter.English);
                stream.FilterLevel = StreamFilterLevel.Low;
                foreach (var hashTag in hashTags)
                {
                    stream.AddTrack(hashTag);
                }
                foreach (var user in users)
                {
                    var twitterUser = await userClient.Users.GetUserAsync(user);

                    stream.AddFollow(twitterUser);
                }

                stream.MatchingTweetReceived += (sender, eventReceived) =>
                {
                    ITweet tweet         = eventReceived.Tweet;
                    string textToAnalyze = tweet.FullText ?? tweet.Text;
                    foreach (var blockedWord in blockedWords)
                    {
                        if (textToAnalyze.ToLower().Contains(blockedWord.ToLower()))
                        {
                            return;
                        }
                    }
                    if (blockedUsers.Contains(tweet.CreatedBy.ScreenName))
                    {
                        return;
                    }
                    foreach (var blockedWord in blockedWords)
                    {
                        if (textToAnalyze.ToLower().Contains(blockedWord.ToLower()))
                        {
                            return;
                        }
                    }
                    if (eventReceived.Tweet.IsRetweet)
                    {
                        return;
                    }
                    if (eventReceived.Tweet.CreatedBy.CreatedAt > DateTime.Now.AddMonths(-1))
                    {
                        return;
                    }
                    if (eventReceived.Tweet.CreatedBy.FollowersCount < 100)
                    {
                        return;
                    }
                    if (eventReceived.MatchingFollowers.Length > 0 && eventReceived.MatchingFollowers.Contains(tweet.CreatedBy.Id) == false)
                    {
                        return;
                    }


                    //_logger.LogInformation("Matching tweet: {time}, {text}", DateTimeOffset.Now, textToAnalyze.Replace(Environment.NewLine,""));
                    var connStr        = _configuration.GetConnectionString("DefaultConnection");
                    var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();
                    optionsBuilder.UseSqlServer(connStr);
                    hashTags = _configuration.GetValue <string>("HashTags").Split(",").ToList();
                    foreach (var hashTag in hashTags)
                    {
                        textToAnalyze = textToAnalyze.Replace(hashTag, "");
                    }

                    DocumentSentiment      documentSentiment = null;
                    TweetSentiment         tweetSentiment    = new TweetSentiment();
                    List <SentimentDetail> sentimentDetails  = new List <SentimentDetail>();
                    List <TweetEntity>     listEntities      = new List <TweetEntity>();
                    List <TweetKeyPhrase>  listKeyPhrases    = new List <TweetKeyPhrase>();


                    //_logger.LogInformation("Analyzing sentiment: {time}", DateTimeOffset.Now);
                    documentSentiment  = textAnalyticsClient.AnalyzeSentiment(textToAnalyze);
                    logEntry.Sentiment = JsonSerializer.Serialize(documentSentiment, options);
                    //_logger.LogInformation("Sentiment: {time}", documentSentiment.Sentiment);
                    tweetSentiment = new TweetSentiment
                    {
                        IsPositive   = (eventReceived.MatchingFollowers.Contains(tweet.CreatedBy.Id) && documentSentiment.Sentiment != TextSentiment.Negative) || (documentSentiment.Sentiment == TextSentiment.Positive) && (!documentSentiment.Sentences.Where(s => s.Sentiment == TextSentiment.Mixed || s.Sentiment == TextSentiment.Negative).Any()),
                        TweetContent = textToAnalyze,
                        TweetedBy    = 0,
                        TweetedOn    = DateTime.Now,
                        TweetID      = tweet.Id
                    };

                    foreach (var sentence in documentSentiment.Sentences)
                    {
                        var sentimentDetail = new SentimentDetail()
                        {
                            Sentence  = sentence.Text,
                            Positive  = sentence.ConfidenceScores.Positive,
                            Negative  = sentence.ConfidenceScores.Negative,
                            Neutral   = sentence.ConfidenceScores.Neutral,
                            TweetID   = tweet.Id,
                            Sentiment = sentence.Sentiment.ToString()
                        };
                        sentimentDetails.Add(sentimentDetail);
                    }
                    logEntry.Details = JsonSerializer.Serialize(sentimentDetails, options);

                    var responseEntities = textAnalyticsClient.RecognizeEntities(textToAnalyze);
                    foreach (var entity in responseEntities.Value)
                    {
                        var tweetEntity = new TweetEntity
                        {
                            EntityText  = entity.Text,
                            Category    = entity.Category.ToString(),
                            SubCategory = entity.SubCategory,
                            Confidence  = entity.ConfidenceScore,
                            TweetID     = tweet.Id
                        };
                        listEntities.Add(tweetEntity);
                    }
                    logEntry.Entities = JsonSerializer.Serialize(listEntities);

                    var responseKeyPhrases = textAnalyticsClient.ExtractKeyPhrases(textToAnalyze);
                    foreach (string keyphrase in responseKeyPhrases.Value)
                    {
                        var tweetKeyPhrase = new TweetKeyPhrase
                        {
                            TweetID   = tweet.Id,
                            KeyPhrase = keyphrase
                        };
                        listKeyPhrases.Add(tweetKeyPhrase);
                    }
                    logEntry.Phrases = JsonSerializer.Serialize(listKeyPhrases, options);


                    using (ApplicationDbContext db = new ApplicationDbContext(optionsBuilder.Options))
                    {
                        //_logger.LogWarning("Saving tweet: {time}", DateTimeOffset.Now);
                        db.TweetSentiments.Add(tweetSentiment);
                        db.SentimentDetails.AddRange(sentimentDetails);
                        db.TweetEntities.AddRange(listEntities);
                        db.TweetKeyPhrases.AddRange(listKeyPhrases);
                        db.SaveChanges();
                    }

                    if (tweetSentiment.IsPositive)
                    {
                        eventReceived.Tweet.FavoriteAsync();
                        eventReceived.Tweet.PublishRetweetAsync();
                    }

                    _logger.LogInformation(@$ "{logEntry.Sentiment} {logEntry.Details} {logEntry.Entities} {logEntry.Phrases}");
                };

                stream.StreamStopped += (sender, eventReceived) =>
                {
                    stream.StartMatchingAnyConditionAsync();
                };
                _ = stream.StartMatchingAnyConditionAsync();
                while (!stoppingToken.IsCancellationRequested)
                {
                    await Task.Delay(1000, stoppingToken);
                }
            }
            catch (OperationCanceledException)
            {
                _logger.LogWarning("Worker process was cancelled");

                Environment.ExitCode = 0;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Worker process caught exception");

                Environment.ExitCode = 0;
            }
            finally
            {
                // No matter what happens (success or exception), we need to indicate that it's time to stop the application.
                applicationLifetime.StopApplication();
            }
        }
Esempio n. 13
0
        public void RecognizeEntitiesBatchAdvanced()
        {
            string endpoint        = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_ENDPOINT");
            string subscriptionKey = Environment.GetEnvironmentVariable("TEXT_ANALYTICS_SUBSCRIPTION_KEY");

            // Instantiate a client that will be used to call the service.
            var client = new TextAnalyticsClient(new Uri(endpoint), subscriptionKey);

            var inputs = new List <TextDocumentInput>
            {
                new TextDocumentInput("1", "Microsoft was founded by Bill Gates and Paul Allen.")
                {
                    Language = "en",
                },
                new TextDocumentInput("2", "Text Analytics is one of the Azure Cognitive Services.")
                {
                    Language = "en",
                },
                new TextDocumentInput("3", "A key technology in Text Analytics is Named Entity Recognition (NER).")
                {
                    Language = "en",
                }
            };

            RecognizeEntitiesResultCollection results = client.RecognizeEntities(inputs, new TextAnalyticsRequestOptions {
                IncludeStatistics = true
            });

            int i = 0;

            Debug.WriteLine($"Results of Azure Text Analytics \"Named Entity Recognition\" Model, version: \"{results.ModelVersion}\"");
            Debug.WriteLine("");

            foreach (var result in results)
            {
                var document = inputs[i++];

                Debug.WriteLine($"On document (Id={document.Id}, Language=\"{document.Language}\", Text=\"{document.Text}\"):");

                if (result.ErrorMessage != default)
                {
                    Debug.WriteLine($"    Document error: {result.ErrorMessage}.");
                }
                else
                {
                    Debug.WriteLine($"    Recognized the following {result.NamedEntities.Count()} entities:");

                    foreach (var entity in result.NamedEntities)
                    {
                        Debug.WriteLine($"        Text: {entity.Text}, Type: {entity.Type}, SubType: {entity.SubType ?? "N/A"}, Score: {entity.Score:0.00}, Offset: {entity.Offset}, Length: {entity.Length}");
                    }

                    Debug.WriteLine($"    Document statistics:");
                    Debug.WriteLine($"        Character count: {result.Statistics.CharacterCount}");
                    Debug.WriteLine($"        Transaction count: {result.Statistics.TransactionCount}");
                    Debug.WriteLine("");
                }
            }

            Debug.WriteLine($"Batch operation statistics:");
            Debug.WriteLine($"    Document count: {results.Statistics.DocumentCount}");
            Debug.WriteLine($"    Valid document count: {results.Statistics.ValidDocumentCount}");
            Debug.WriteLine($"    Invalid document count: {results.Statistics.InvalidDocumentCount}");
            Debug.WriteLine($"    Transaction count: {results.Statistics.TransactionCount}");
            Debug.WriteLine("");
        }
Esempio n. 14
0
        private CategorizedEntityCollection KeyPhraseExtractionPerLine(TextAnalyticsClient client, string line)
        {
            var response = client.RecognizeEntities(line);

            return(response.Value);
        }