public async Task KeyPhraseAnalysis(string input) { var document = new KeyPhraseDocument() { Id = "1", Text = input, Language = "en" }; var request = new KeyPhraseRequest(); request.Documents.Add(document); var client = new KeyPhraseClient(System.Configuration.ConfigurationManager.AppSettings["apikey"]); var response = await client.GetKeyPhrasesAsync(request); foreach (var doc in response.Documents) { foreach (var keyPhrase in doc.KeyPhrases) { WriteNewLine("{0}", keyPhrase); } } }
public static async Task AnalyzeKeyPhraseAsync(string id, string text, string language) { var document = new KeyPhraseDocument() { Id = id, Text = text, Language = language }; var client = new KeyPhraseClient(Constants.ApiKey) { Url = "https://westeurope.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases" }; var request = new KeyPhraseRequest(); request.Documents.Add(document); try { var response = await client.GetKeyPhrasesAsync(request); foreach (var doc in response.Documents) { foreach (var keyPhrase in doc.KeyPhrases) { Console.WriteLine("Key Phrase: {0}", keyPhrase); } } } catch (Exception ex) { throw ex; } }
static async Task MainAsync() { var apiKey = "YOUR-TEXT-ANALYTICS-API-SUBSCRIPTION-KEY"; var document = new KeyPhraseDocument() { Id = "YOUR-UNIQUE-ID", Text = "YOUR-TEXT", Language = "en" }; var request = new KeyPhraseRequest(); request.Documents.Add(document); var client = new KeyPhraseClient(apiKey); var response = await client.GetKeyPhrasesAsync(request); foreach (var doc in response.Documents) { Console.WriteLine("Document Id: {0}", doc.Id); foreach (var keyPhrase in doc.KeyPhrases) { Console.WriteLine(" Key Phrase: {0}", keyPhrase); } Console.WriteLine(); } Console.WriteLine("Press any key to exit..."); Console.ReadLine(); }
//public IConfiguration configuration; //public KeyExtraction(IConfiguration _configuration) //{ // configuration = _configuration; //} public static async Task <List <string> > CallWebAPIAsync(string utterance) { //var client = new HttpClient(); //var queryString = HttpUtility.ParseQueryString(String.Empty); // Request headers //client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", configuration["TextAnalylisisAPIKey"]); //client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "3ff10cb8e78442bab6ac035ea5c1630a"); //client.DefaultRequestHeaders.Add("Accept", "application/json"); //client.DefaultRequestHeaders.Add("Content-Type", "application/json"); //var uri = configuration["TextAnalylisisAPIHostName"] + queryString; //var uri = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases" ; //HttpResponseMessage response; //string body = "'documents': [{'language':'en','id':'1','text':'We love this trail and make the trip every year. The views are breathtaking and well worth the hike!'}]"; //string body = "documents: [{language:en,id:1,text:We love this trail and make the trip every year. The views are breathtaking and well worth the hike!}]"; //string body = @"{ // 'documents': [ // { // 'language': 'en', // 'id': '1', // 'text': 'We love this trail and make the trip every year. The views are breathtaking and well worth the hike!' // } // ] // }"; //var data = JsonConvert.SerializeObject(body); var document = new KeyPhraseDocument() { Language = "en", Id = "1", Text = utterance }; var keyclient = new KeyPhraseClient("3ff10cb8e78442bab6ac035ea5c1630a"); var keyrequest = new KeyPhraseRequest(); keyrequest.Documents.Add(document); var keyresponse = await keyclient.GetKeyPhrasesAsync(keyrequest); return(keyresponse.Documents[0].KeyPhrases); // Request body //byte[] byteData = Encoding.UTF8.GetBytes(body); //using (var content = new ByteArrayContent(byteData)) //{ // content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); // response = await client.PostAsync(uri, content); //} //return null; }
private static async Task RunKeyPhraseDetection() { Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("Begining key phrase detection ({0})", DateTime.Now.ToString()); var client = new KeyPhraseClient(textAnalyticsApiKey); foreach (var conversation in conversations) { foreach (var message in conversation.Messages) { try { var document = new KeyPhraseDocument() { Id = message.Id.ToString(), Text = message.Text, Language = message.Metadata.LanguageName }; var request = new KeyPhraseRequest(); request.Documents.Add(document); var response = await client.GetKeyPhrasesAsync(request); foreach (var keyPhrase in response.Documents[0].KeyPhrases) { message.Metadata.KeyPhrases.Add(keyPhrase); } Console.Write("Conversation {0} | Message {1} | Key Phrase Count {2}", conversation.Id, message.Id, message.Metadata.KeyPhrases.Count); } 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("Key phrase detection complete ({0})", DateTime.Now.ToString()); Console.WriteLine(); }
private async void Detect_Key_Phrases(object sender, RoutedEventArgs e) { this.KeyPhrases = ""; try { var language = await GetLanguage(); var document = new KeyPhraseDocument() { Id = Guid.NewGuid().ToString(), Text = this.InputText, Language = language }; var request = new KeyPhraseRequest(); request.Documents.Add(document); MainWindow mainWindow = Window.GetWindow(this) as MainWindow; var client = new KeyPhraseClient(mainWindow._scenariosControl.SubscriptionKey); MainWindow.Log("Request: Identifying key phrases.."); var response = await client.GetKeyPhrasesAsync(request); MainWindow.Log("Response: Success. Key phrases identified."); var keyPhrases = new StringBuilder(); foreach (var keyPhrase in response.Documents[0].KeyPhrases) { keyPhrases.Append(string.Format("{0} ", keyPhrase)); } this.KeyPhrases = keyPhrases.ToString(); } catch (Exception ex) { MainWindow.Log(ex.Message); } }
private async void Detect_Key_Phrases(string text) { try { var document = new KeyPhraseDocument() { Id = Guid.NewGuid().ToString(), Text = text, Language = "en" }; var request = new KeyPhraseRequest(); request.Documents.Add(document); MainWindow mainWindow = Window.GetWindow(this) as MainWindow; var client = new KeyPhraseClient(mainWindow._scenariosControl.SubscriptionKey); var response = await client.GetKeyPhrasesAsync(request); Log("Response: Success. Key phrases identified."); Dictionary <string, int> deltaPhrasesDict = new Dictionary <string, int>(); var keyPhrases = new StringBuilder(); //add only new phrases keyPhrasesList.AddRange(response.Documents[0].KeyPhrases.Where(x => !keyPhrasesList.Any(y => y == x))); //((MainWindow)Application.Current.MainWindow)._scenariosControl.HighlightWords(keyPhrasesList); ((MainWindow)Application.Current.MainWindow)._scenariosControl.HighlightWords(response.Documents[0].KeyPhrases); foreach (var keyPhrase in response.Documents[0].KeyPhrases.ConvertAll(d => ps.Singularize(d.ToLower()))) { if (keyPhrase.Trim() != "") { keyPhrases.Append(string.Format("{0}; ", keyPhrase)); if (keyPhrasesDict.ContainsKey(keyPhrase)) { keyPhrasesDict[keyPhrase] = keyPhrasesDict[keyPhrase] + 1; deltaPhrasesDict.Add(keyPhrase, keyPhrasesDict[keyPhrase]); } else { keyPhrasesDict.Add(keyPhrase, 1); deltaPhrasesDict.Add(keyPhrase, 1); } } } keyPhrasesString = string.Join("; ", keyPhrasesDict.Keys); ((MainWindow)Application.Current.MainWindow)._scenariosControl.LogKeywords(keyPhrasesString); if (sendToPBICheckbox.IsChecked == true) { string json = JsonConvert.SerializeObject(deltaPhrasesDict.Select(e => new { keyword = e.Key, frequency = e.Value, dt = (DateTime.UtcNow.ToString("s") + "Z") })); //post(keywordUrl, json); Thread myNewThread = new Thread(() => post(keywordUrl, json)); myNewThread.Start(); } } catch (Exception ex) { 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); } } }