static async Task MainAsync() { 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 = await client.GetSentimentAsync(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(); }
public async Task <float> MakeRequest(string text) { var language = await GetLanguage(text); var document = new SentimentDocument() { Id = Guid.NewGuid().ToString(), Text = text, Language = language }; var request = new SentimentRequest(); request.Documents.Add(document); var client = new SentimentClient(_subKey) { Url = ConfigurationManager.AppSettings["TextSentimentServiceUrl"] + "/sentiment" }; var response = await client.GetSentimentAsync(request); var score = response.Documents[0].Score * 100; return(score); }
public async Task <float> GetSentimentAnalysisAsync(string text) { var client = new SentimentClient(this.Settings.Text.Key1) { Url = this.Settings.Text.EndPoint }; var document = new SentimentDocument { Id = Guid.NewGuid().ToString(), Text = text, Language = "en" }; var request = new SentimentRequest { Documents = new List <IDocument> { document } }; var response = await client.GetSentimentAsync(request); // Only one document was sent, therefore only one result should be returned. var result = response.Documents.FirstOrDefault(); if (result == null) { throw new ApplicationException("Text Analysis Failed."); } return(result.Score); }
public async Task SentimentPercentage(string input) { var document = new SentimentDocument() { Id = "1", Text = input, Language = "en" }; var request = new SentimentRequest(); request.Documents.Add(document); var client = new SentimentClient(System.Configuration.ConfigurationManager.AppSettings["apikey"]); var response = await client.GetSentimentAsync(request); float sum = 0, average = 0; foreach (var doc in response.Documents) { sum += (doc.Score * 100); } average = sum / response.Documents.Count; WriteNewLine("\n\nSentiment analysis value is {0}", average.ToString()); }
private async void Analyze_Text(object sender, RoutedEventArgs e) { this.Score = ""; try { var language = await GetLanguage(); var document = new SentimentDocument() { Id = Guid.NewGuid().ToString(), Text = this.InputText, Language = language }; var request = new SentimentRequest(); request.Documents.Add(document); MainWindow mainWindow = Window.GetWindow(this) as MainWindow; var client = new SentimentClient(mainWindow._scenariosControl.SubscriptionKey); MainWindow.Log("Request: Analyzing sentiment."); var response = await client.GetSentimentAsync(request); MainWindow.Log("Response: Success. Sentiment analyzed."); var score = response.Documents[0].Score * 100; this.Score = string.Format("{0}%", score); } catch (Exception ex) { MainWindow.Log(ex.Message); } }
public static async Task AnalyzeSentimentAsync(string id, string text, string language) { 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 = await client.GetSentimentAsync(request); foreach (var doc in response.Documents) { Console.WriteLine("Sentiment Score: {0}", doc.Score); } } catch (Exception ex) { throw ex; } }
async Task ExecuteCheckTextAnalyticsApiCommand() { if (IsBusy) { return; } IsBusy = true; try { LanguageClient languageClient = new LanguageClient(ApiKeys.TextAnalyticsApiKey); languageClient.Url = "https://westeurope.api.cognitive.microsoft.com/text/analytics/v2.0/languages"; LanguageRequest lr = new LanguageRequest(); lr.Documents.Add(new Document() { Id = Guid.NewGuid().ToString(), Text = TextAnalyticsText }); var lrResult = await languageClient.GetLanguagesAsync(lr); var language = lrResult.Documents.First().DetectedLanguages.First().Name; var languageCode = lrResult.Documents.First().DetectedLanguages.First().Iso639Name; SentimentClient textClient = new SentimentClient(ApiKeys.TextAnalyticsApiKey); textClient.Url = "https://westeurope.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment"; SentimentRequest sr = new SentimentRequest(); sr.Documents.Add(new SentimentDocument() { Id = Guid.NewGuid().ToString(), Text = TextAnalyticsText, Language = languageCode }); var result = await textClient.GetSentimentAsync(sr); TextAnalyticsResult = $"Language: {language}, Sentiment Score: {result.Documents.First().Score}"; } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
private static int count = 1; // count to keep the ID // This methods perform the text analysis and return the score public static async Task <string> TextAnalysis(string message) { client = new SentimentClient(ConfigurationManager.AppSettings["TextAnalyticsApiKey"]); // my API Key var request = new SentimentRequest(); count++; // increment var text = new SentimentDocument() { Id = count.ToString(), Text = message, Language = "en" }; request.Documents.Add(text); var response = ((await client.GetSentimentAsync(request)).Documents.FirstOrDefault()).Score; // retrieve the score return(string.Format("{0:N2}", response)); // return the result in string (2 Decimal Place) }
private static async Task RunSentimentAnalysis() { Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Begining sentiment analysis ({0})", DateTime.Now.ToString()); var client = new SentimentClient(textAnalyticsApiKey); foreach (var conversation in conversations) { foreach (var message in conversation.Messages) { try { var document = new SentimentDocument() { Id = message.Id.ToString(), Text = message.Text, Language = message.Metadata.LanguageName }; var request = new SentimentRequest(); request.Documents.Add(document); var response = await client.GetSentimentAsync(request); message.Metadata.SentimentScore = response.Documents[0].Score; Console.Write("Conversation {0} | Message {1} | Sentiment Score {2}", conversation.Id, message.Id, message.Metadata.SentimentScore); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(); Console.WriteLine("Exception encountered ({0})", DateTime.Now.ToString()); Console.WriteLine("Conversation {0} | Message {1}", conversation.Id, message.Id); Console.WriteLine(ex.Message); } } } Console.WriteLine("Sentiment analysis complete ({0})", DateTime.Now.ToString()); Console.WriteLine(); }
private async void Get_Sentiment(string text, string lastNTest) { try { var document = new SentimentDocument() { Id = Guid.NewGuid().ToString(), Text = text, Language = "en" }; var lastNDocument = new SentimentDocument() { Id = Guid.NewGuid().ToString(), Text = lastNTest, Language = "en" }; var request = new SentimentRequest(); request.Documents.Add(document); request.Documents.Add(lastNDocument); MainWindow mainWindow = Window.GetWindow(this) as MainWindow; var client = new SentimentClient(mainWindow._scenariosControl.SubscriptionKey); var response = await client.GetSentimentAsync(request); Log("Response: Success. Sentiment analyzed."); var score = response.Documents[0].Score * 100; var lastNScore = response.Documents[1].Score * 100; ((MainWindow)Application.Current.MainWindow)._scenariosControl.LogSentiment(string.Format("Last sentence: {0}%\nLast {1} sentences: {2}%", score, SENTENCE_LIMIT, lastNScore)); if (sendToPBICheckbox.IsChecked == true) { //post(sentimentUrl, "[" + json + "]"); string json = JsonConvert.SerializeObject(new { dt = (DateTime.UtcNow.ToString("s") + "Z"), sentence = text, sentiment_Nlast = score, average_sentiment = lastNScore }); Thread myNewThread = new Thread(() => post(sentimentUrl, "[" + json + "]")); myNewThread.Start(); } } catch (Exception ex) { MainWindow.Log(ex.Message); } }
public override async Task HandleChangeAsync(IChangeDetails details) { if (details.Changes.TryGetValue("Ticket", out var changeSetDetails) && changeSetDetails.Insertions.Length > 0) { // A new thread has been started - run sentiment analysis. try { var tickets = changeSetDetails.Insertions .Select(i => i.CurrentObject) .Select(o => (string)(o.Title + Environment.NewLine + o.Description)) .ToArray(); if (tickets.Length == 0) { return; } Console.WriteLine($"Requesting sentiment score for {tickets.Length} objects..."); var sentimentRequest = tickets.Select((text, index) => new SentimentDocument { Id = index.ToString(), Text = text, Language = "en" }) .Cast <IDocument>() .ToList(); var sentimentResponse = await _sentimentClient.GetSentimentAsync(new SentimentRequest { Documents = sentimentRequest }); foreach (var error in sentimentResponse.Errors) { Console.WriteLine("Error from sentiment API: " + error.Message); } Console.WriteLine($"Requesting key phrases for {tickets.Length} objects..."); var keyPhraseRequest = tickets.Select((text, index) => new KeyPhraseDocument { Id = index.ToString(), Text = text, Language = "en" }) .Cast <IDocument>() .ToList(); var keyPhraseResponse = await _keyPhraseClient.GetKeyPhrasesAsync(new KeyPhraseRequest { Documents = keyPhraseRequest }); foreach (var error in keyPhraseResponse.Errors) { Console.WriteLine("Error from KeyPhrase API: " + error.Message); } var keyPhraseDictionary = keyPhraseResponse.Documents.ToDictionary(d => d.Id, d => d.KeyPhrases); var toUpdate = sentimentResponse.Documents .Select(doc => { var obj = changeSetDetails.Insertions[int.Parse(doc.Id)].CurrentObject; if (!keyPhraseDictionary.TryGetValue(doc.Id, out var keyPhrases) || keyPhrases == null) { keyPhrases = new List <string> { "Unknown" }; } Console.WriteLine("------------------"); Console.WriteLine($"Analyzed: {obj.Title}"); Console.WriteLine($"Score: {doc.Score}"); Console.WriteLine($"KeyPhrases: {string.Join(", ", keyPhrases)}"); Console.WriteLine("------------------"); return(new { Score = doc.Score, Reference = ThreadSafeReference.Create(obj), KeyPhrases = keyPhrases }); }) .ToArray(); using (var realm = details.GetRealmForWriting()) { var resolved = toUpdate.Select(t => new { Score = t.Score, Object = realm.ResolveReference(t.Reference), KeyPhrases = t.KeyPhrases }) .ToArray(); realm.Write(() => { foreach (var item in resolved) { item.Object.Score = item.Score; item.Object.Tags = string.Join(" ", item.KeyPhrases); } }); } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } } }