/// <summary>
        /// POST /v1/classifiers
        /// The training data must have at least five records (rows) and no more than 20,000 records.
        /// The maximum total length of a text value is 1024 characters.
        /// </summary>
        /// <param name="training_data">(Required) Training data. Each text value must have at least one class. The data can include up to 15,000 records. For details, see https://www.ibm.com/watson/developercloud/doc/natural-language-classifier/using-your-data.html</param>
        /// <param name="training_metadata">The metadata identifies the required language of the data and an optional name to identify the classifier. Specify the language with the 2-letter primary language code as assigned in ISO standard 639. Supported languages are English (en), Arabic (ar), French (fr), German, (de), Italian (it), Japanese (ja), Korean (ko), Brazilian Portuguese (pt), and Spanish (es).</param>
        /// <returns></returns>
        public virtual Classifier CreateClassifier(string classifier_name, string training_data_language, string training_data)
        {
            var form = new MultipartFormDataContent();

            TrainingMetadataEntity trainingMetadata = new TrainingMetadataEntity {
                name = classifier_name, language = training_data_language
            };

            var metadataContent = new ByteArrayContent(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(trainingMetadata)));

            metadataContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            form.Add(metadataContent, "training_metadata", "filename");

            var contentBytes        = Encoding.ASCII.GetBytes(training_data);
            var trainingDataContent = new ByteArrayContent(contentBytes, 0, contentBytes.Length);

            trainingDataContent.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
            form.Add(trainingDataContent, "training_data", "filename");

            var response = RepositoryClient
                           .WithAuthentication(ApiKeys.NaturalLanguageClassifierUsername, ApiKeys.NaturalLanguageClassifierPassword)
                           .PostAsync(ApiKeys.NaturalLanguageClassifierEndpoint)
                           .WithBodyContent(form)
                           .As <Classifier>()
                           .Result;

            return(response);
        }
Example #2
0
        /// <summary>
        /// POST /v1/classifiers
        /// </summary>
        /// <param name="training_data">(Required) Training data. Each text value must have at least one class. The data can include up to 15,000 records. For details, see https://www.ibm.com/watson/developercloud/doc/natural-language-classifier/using-your-data.html</param>
        /// <param name="training_metadata">The metadata identifies the required language of the data and an optional name to identify the classifier. Specify the language with the 2-letter primary language code as assigned in ISO standard 639. Supported languages are English (en), Arabic (ar), French (fr), German, (de), Italian (it), Japanese (ja), Korean (ko), Brazilian Portuguese (pt), and Spanish (es).</param>
        /// <returns></returns>
        public virtual CreateClassifierResponse CreateClassifier(string classifier_name, string training_data_language, string training_data)
        {
            TrainingMetadataEntity trainingMetadata = new TrainingMetadataEntity()
            {
                name     = classifier_name,
                language = training_data_language
            };

            var response = RepositoryClient.SendJsonPost(ApiKeys.NaturalLanguageClassifierUsername,
                                                         ApiKeys.NaturalLanguageClassifierPassword,
                                                         ApiKeys.NaturalLanguageClassifierEndpoint,
                                                         JsonConvert.SerializeObject(trainingMetadata));

            return(JsonConvert.DeserializeObject <CreateClassifierResponse>(response));
        }