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();
        }
Exemplo n.º 4
0
        //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;
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 8
0
        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);
                }
            }
        }