コード例 #1
0
        public void GetKeyPhrases()
        {
            var text = "how is the weather? how is the food? how are the people?";

            var doc = new KeyPhraseDocument()
            {
                Id = "TEST001", Text = text, Language = "en"
            };

            var request = new KeyPhraseRequest();

            request.Documents.Add(doc);

            var client   = new KeyPhraseClient(this.apiKey);
            var response = client.GetKeyPhrases(request);

            string expected = "";
            string actual   = "";

            expected = "weather";
            actual   = response.Documents[0].KeyPhrases[0];
            Assert.AreEqual(expected, actual);

            expected = "food";
            actual   = response.Documents[0].KeyPhrases[1];
            Assert.AreEqual(expected, actual);

            expected = "people";
            actual   = response.Documents[0].KeyPhrases[2];
            Assert.AreEqual(expected, actual);
        }
        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);
                }
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        private static void GetKeyPhrases()
        {
            var client  = new KeyPhraseClient(apiKey);
            var request = new KeyPhraseRequest();

            var document = new KeyPhraseDocument()
            {
                Id       = "YOUR-UNIQUE-ID",
                Text     = "YOUR-TEXT",
                Language = "en"
            };

            request.Documents.Add(document);

            var response = client.GetKeyPhrases(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();
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            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 = client.GetKeyPhrases(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();
        }
コード例 #6
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;
        }
コード例 #7
0
        public static IList <string> AnalyzeKeyPhrases(string id, string text, string language)
        {
            IList <string> keyPhrases = new List <string>();
            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 = client.GetKeyPhrases(request);
                var doc      = response.Documents.First();
                foreach (var keyPhrase in doc.KeyPhrases)
                {
                    keyPhrases.Add(keyPhrase);
                }
            }
            catch (Exception ex)
            {
                var message      = "";
                var innerMessage = "";
                if (!String.IsNullOrEmpty(ex.Message))
                {
                    message = ex.Message;
                }

                try
                {
                    if ((ex.InnerException != null) && (!String.IsNullOrEmpty(ex.InnerException.Message)))
                    {
                        innerMessage = ex.InnerException.Message;
                    }
                }
                catch (Exception innerEx)
                {
                    if ((innerEx.InnerException != null) && (!String.IsNullOrEmpty(innerEx.InnerException.Message)))
                    {
                        innerMessage = innerEx.InnerException.Message;
                    }
                }

                Console.WriteLine(String.Format("Error in AnalyzeSentiment: {0}:{1}", message, innerMessage));
            }
            return(keyPhrases);
        }
コード例 #8
0
        public FeedbackHandler() : base($"^/{Constants.FeedbackRealm}$")
        {
            _sentimentClient = new SentimentClient(Constants.SentimentApiKey)
            {
                Url = Constants.SentimentUrl
            };

            _keyPhraseClient = new KeyPhraseClient(Constants.SentimentApiKey)
            {
                Url = Constants.KeyPhraseUrl
            };
        }
コード例 #9
0
        static void Main(string[] args)
        {
            // MS Cognitive Services API key
            var apiKeyTextAnalytics = "REPLACE_WITH_API_KEY";

            var text = @"A thing of beauty is a joy for ever:
                        Its loveliness increases; it will never
                        Pass into nothingness; but still will keep
                        A bower quiet for us, and a sleep
                        Full of sweet dreams, and health, and quiet breathing.";

            // GET text sentiment
            var sentimentDocument = new SentimentDocument()
            {
                Id       = "Sentiment",
                Text     = text,
                Language = "en"
            };

            Console.WriteLine("Analyzing {0}", sentimentDocument.Id + "..");

            var sentimentRequest = new SentimentRequest();

            sentimentRequest.Documents.Add(sentimentDocument);
            var sentimentClient   = new SentimentClient(apiKeyTextAnalytics);
            var sentimentResponse = sentimentClient.GetSentiment(sentimentRequest);

            Console.WriteLine("   Score: {0}%", (sentimentResponse.Documents[0].Score * 100) + " [0% - negative, 100% - positive]");

            // GET text keyphrases
            var keyPhraseDocument = new KeyPhraseDocument()
            {
                Id       = "KeyPhrases",
                Text     = text,
                Language = "en"
            };

            Console.WriteLine("Recognizing {0}", keyPhraseDocument.Id + "..");

            var keyPhraseRequest = new KeyPhraseRequest();

            keyPhraseRequest.Documents.Add(keyPhraseDocument);
            var keyPhraseClient   = new KeyPhraseClient(apiKeyTextAnalytics);
            var keyPhraseResponse = keyPhraseClient.GetKeyPhrases(keyPhraseRequest);

            foreach (var keyPhrase in keyPhraseResponse.Documents[0].KeyPhrases)
            {
                Console.WriteLine("   KeyPhrase: {0}", keyPhrase);
            }
        }
コード例 #10
0
        public TextAnalyticsHandler() : base($"^/{Constants.RealmName}$")
        {
            sentimentClient = new SentimentClient(Constants.TextAnalyticsApiKey)
            {
                Url = Constants.SentimentUrl
            };

            keyPhraseClient = new KeyPhraseClient(Constants.TextAnalyticsApiKey)
            {
                Url = Constants.KeyPhraseUrl
            };

            newTaskSubject      = new Subject <TaskItem>();
            modifiedTaskSubject = new Subject <TaskItem>();

            newTaskSubject.Select(async t =>
            {
                t.Score = await GetScore(t);
                t.Tags  = await GetTags(t);
                return(t);
            })
            .Concat()
            .Subscribe(
                UpdateTask,
                ex =>
            {
                Console.WriteLine(ex.Message);
            });

            modifiedTaskSubject
            //.Where(t => t.Text.Length > 10)
            .GroupBy(t => t.Id)
            .SelectMany(g => g.Throttle(TimeSpan.FromSeconds(3)))
            .Select(async t =>
            {
                t.Score = await GetScore(t);
                t.Tags  = await GetTags(t);
                return(t);
            })
            .Concat()
            .Subscribe(
                UpdateTask,
                ex =>
            {
                Console.WriteLine(ex.Message);
            });
        }
コード例 #11
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();
        }
コード例 #12
0
        public void Analyse(string gitPath)
        {
            var repo = OpenRepository(gitPath);

            if (repo == null)
            {
                return;
            }
            System.Console.WriteLine("OK");

            //Must have min of 100 docs for Topic API
            var commits = repo.Commits.Where(c => !c.Message.StartsWith("Merge")).Take(100);

            if (commits.Count() == 0)
            {
                System.Console.WriteLine("-- No data --");
            }

            var request = new KeyPhraseRequest();

            foreach (var commit in commits)
            {
                var document = new KeyPhraseDocument()
                {
                    Id       = commit.Id.Sha,
                    Text     = commit.Message,
                    Language = "en"
                };
                request.Documents.Add(document);
            }

            var apiKey = System.Configuration.ConfigurationManager.AppSettings["ApiKey"];
            var client = new KeyPhraseClient(apiKey);

            var response = client.GetKeyPhrases(request);

            var phrases = response.Documents.SelectMany(d => d.KeyPhrases).ToList();

            var phraseStats = phrases.Distinct().Select(p => new { phrase = p, count = phrases.Count(x => x.Equals(p)) });

            foreach (var result in phraseStats.OrderBy(ps => ps.count).Take(10))
            {
                System.Console.WriteLine($"Key Phrase: {result.phrase} | Occurrences: {result.count}");
            }
        }
コード例 #13
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);
            }
        }
コード例 #14
0
        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);
            }
        }