コード例 #1
0
        private async void Detect_Topics(string text)
        {
            try
            {
                var source     = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();
                var randomText = new RandomText(source);

                var request = new TopicRequest();

                for (int i = 0; i < 100; i++)
                {
                    request.Documents.Add(new TopicDocument()
                    {
                        Id = i.ToString(), Text = randomText.Next()
                    });
                }

                MainWindow mainWindow  = Window.GetWindow(this) as MainWindow;
                var        client      = new TopicClient(mainWindow._scenariosControl.SubscriptionKey);
                var        opeationUrl = await client.StartTopicProcessingAsync(request);

                TopicResponse response       = null;
                var           doneProcessing = false;

                while (!doneProcessing)
                {
                    response = await client.GetTopicResponseAsync(opeationUrl);

                    switch (response.Status)
                    {
                    case TopicOperationStatus.Cancelled:
                        Log("Operation Status: Cancelled");
                        doneProcessing = true;
                        break;

                    case TopicOperationStatus.Failed:
                        Log("Operation Status: Failed");
                        doneProcessing = true;
                        break;

                    case TopicOperationStatus.NotStarted:
                        Log("Operation Status: Not Started");
                        Thread.Sleep(100);
                        break;

                    case TopicOperationStatus.Running:
                        Log("Operation Status: Running");
                        Thread.Sleep(100);
                        break;

                    case TopicOperationStatus.Succeeded:
                        Log("Operation Status: Succeeded");
                        doneProcessing = true;
                        break;
                    }
                }

                foreach (var topic in response.OperationProcessingResult.Topics)
                {
                    var score = topic.Score * 100;
                    Log(string.Format("{0} ({1}%)", topic.KeyPhrase, score));
                }
            }
            catch (Exception ex)
            {
                Log(ex.Message);
            }
        }