Search code examples
c#jsonanalytics

Not able to get output result from Microsoft text analytics topic sentiment recognition


I am using the Text Analytics APIs to detect sentiment and score by passing the JSON object. As per the information mentioned in the document if we get the response as 200 then API is returning the correct result and score of sentiment. Now the issue is I am getting the response as 200 but I am not getting the sentiment score to use for further processing.

Request object:

{ "documents": [{ "language": "en", "id": 1, "text": "I had a wonderful experience" }, { "language": "en", "id": 2, "text": "It was an Ugly picture" }] }

response object:

{
    "Version": {
        "Major": 1,
        "Minor": 1,
        "Build": -1,
        "Revision": -1,
        "MajorRevision": -1,
        "MinorRevision": -1
    },
    "Content": {
        "Headers": [{
            "Key": "Content-Type",
            "Value": ["application/json; charset=utf-8"]
        }]
    },
    "StatusCode": 200,
    "ReasonPhrase": "OK",
    "Headers": [{
        "Key": "Transfer-Encoding",
        "Value": ["chunked"]
    }, {
        "Key": "x-ms-transaction-count",
        "Value": ["1"]
    }, {
        "Key": "x-aml-ta-request-id",
        "Value": ["f78d8964-a2a1-4b67-aaa5-1a92b6ea25f9"]
    }, {
        "Key": "X-Content-Type-Options",
        "Value": ["nosniff"]
    }, {
        "Key": "apim-request-id",
        "Value": ["0882ea1e-6c31-4a2c-b3c0-1963ec0734c1"]
    }, {
        "Key": "Strict-Transport-Security",
        "Value": ["max-age=31536000; includeSubDomains; preload"]
    }, {
        "Key": "Date",
        "Value": ["Sat, 01 Jul 2017 19:49:10 GMT"]
    }],
    "RequestMessage": {
        "Version": {
            "Major": 1,
            "Minor": 1,
            "Build": -1,
            "Revision": -1,
            "MajorRevision": -1,
            "MinorRevision": -1
        },
        "Content": {
            "Headers": [{
                "Key": "Content-Type",
                "Value": ["application/json"]
            }, {
                "Key": "Content-Length",
                "Value": ["135"]
            }]
        },
        "Method": {
            "Method": "POST"
        },
        "RequestUri": "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment",
        "Headers": [{
            "Key": "Ocp-Apim-Subscription-Key",
            "Value": ["************************"]
        }],
        "Properties": {}
    },
    "IsSuccessStatusCode": true
}

Below is the code pass to JSON object and calling webAPI

 var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);
    enter code here
            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "******************");
            var uri = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment"; 

            HttpResponseMessage response;
            Document doc = new Document();
             byte[] byteData = Encoding.UTF8.GetBytes(doc.ReturnJson());                      

            using (var content = new ByteArrayContent(byteData))
            {
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                response = await client.PostAsync(uri, content);
                response.ToJSON();
            }

Following are the link to refer the Microsoft code and reference:

https://westus.dev.cognitive.microsoft.com/docs/services/TextAnalytics.V2.0/oper ations/56f30ceeeda5650db055a3c9

https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment


Solution

  • I've just made a test in here and it's working fine:

    using System;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Net.Http;
    using System.Web;
    using System.IO;
    
    namespace CSHttpClientSample
    {
        static class Program
        {
            static void Main()
            {
                MakeRequest();
                Console.WriteLine("Hit ENTER to exit...");
                Console.ReadLine();
            }
    
            static async void MakeRequest()
            {
                var client = new HttpClient();
                var queryString = "";
    
                // Request headers
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "YOUR KEY IN HERE");
    
                var json = "{  \"documents\": [    {      \"language\": \"en\",      \"id\": \"1\",      \"text\": \"I had a wonderful experience\"    }, {      \"language\": \"en\",      \"id\": \"2\",      \"text\": \"It was an Ugly picture\"    }  ]}";
    
    
                var uri = "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment?" + queryString;
    
                HttpResponseMessage response;
    
                // Request body
                byte[] byteData = Encoding.UTF8.GetBytes(json);
    
                using (var content = new ByteArrayContent(byteData))
                {
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    response = await client.PostAsync(uri, content);
    
                    Console.WriteLine(response.Content.ReadAsStringAsync().Result);
                }
    
            }
        }
    }
    

    OUTPUT

    Hit ENTER to exit...
    {"documents":[{"score":0.972635705189504,"id":"1"},{"score":0.0438970184772759,"id":"2"}],"errors":[]}