Exemplo n.º 1
0
        /// <summary>
        /// Train a new classifier.
        /// </summary>
        /// <param name="successCallback">The success callback.</param>
        /// <param name="failCallback">The fail callback.</param>
        /// <param name="classifierName">A name to give the classifier.</param>
        /// <param name="language">Language of the classifier.</param>
        /// <param name="trainingData">CSV training data.</param>
        /// <returns>Returns true if training data was submitted correctly.</returns>
        public bool TrainClassifier(SuccessCallback <Classifier> successCallback, FailCallback failCallback, string classifierName, string language, string trainingData, Dictionary <string, object> customData = null)
        {
            if (successCallback == null)
            {
                throw new ArgumentNullException("successCallback");
            }
            if (failCallback == null)
            {
                throw new ArgumentNullException("failCallback");
            }
            if (string.IsNullOrEmpty(classifierName))
            {
                throw new ArgumentNullException("classifierId");
            }
            if (string.IsNullOrEmpty(language))
            {
                throw new ArgumentNullException("language");
            }
            if (string.IsNullOrEmpty(trainingData))
            {
                throw new ArgumentNullException("trainingData");
            }

            RESTConnector connector = RESTConnector.GetConnector(Credentials, "/v1/classifiers");

            if (connector == null)
            {
                return(false);
            }

            Dictionary <string, object> trainingMetaData = new Dictionary <string, object>();

            trainingMetaData["language"] = language;
            trainingMetaData["name"]     = classifierName;

            TrainClassifierReq req = new TrainClassifierReq();

            req.SuccessCallback        = successCallback;
            req.FailCallback           = failCallback;
            req.HttpMethod             = UnityWebRequest.kHttpVerbPOST;
            req.DisableSslVerification = DisableSslVerification;
            req.CustomData             = customData == null ? new Dictionary <string, object>() : customData;
            if (req.CustomData.ContainsKey(Constants.String.CUSTOM_REQUEST_HEADERS))
            {
                foreach (KeyValuePair <string, string> kvp in req.CustomData[Constants.String.CUSTOM_REQUEST_HEADERS] as Dictionary <string, string> )
                {
                    req.Headers.Add(kvp.Key, kvp.Value);
                }
            }
            req.OnResponse = OnTrainClassifierResp;
            req.Headers["X-IBMCloud-SDK-Analytics"] = "service_name=natural_language_classifier;service_version=v1;operation_id=TrainClassifier";
            req.Forms = new Dictionary <string, RESTConnector.Form>();
            req.Forms["training_metadata"] = new RESTConnector.Form(Encoding.UTF8.GetBytes(Json.Serialize(trainingMetaData)));
            req.Forms["training_data"]     = new RESTConnector.Form(Encoding.UTF8.GetBytes(trainingData));

            return(connector.Send(req));
        }
Exemplo n.º 2
0
        private bool UploadClassifier(string classifierName, string className, byte[] positiveExamplesData, byte[] negativeExamplesData, OnTrainClassifier callback)
        {
            if (string.IsNullOrEmpty(mp_ApiKey))
            {
                mp_ApiKey = Config.Instance.GetAPIKey(SERVICE_ID);
            }
            if (string.IsNullOrEmpty(mp_ApiKey))
            {
                throw new WatsonException("GetClassifier - VISUAL_RECOGNITION_API_KEY needs to be defined in config.json");
            }
            if (string.IsNullOrEmpty(classifierName))
            {
                throw new ArgumentNullException("ClassifierName");
            }
            if (positiveExamplesData == null)
            {
                throw new ArgumentNullException("positiveExamplesData");
            }
            if (negativeExamplesData == null)
            {
                throw new ArgumentNullException("negativeExamplesData");
            }
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, SERVICE_CLASSIFIERS);

            if (connector == null)
            {
                return(false);
            }

            TrainClassifierReq req = new TrainClassifierReq();

            req.Callback              = callback;
            req.OnResponse            = OnTrainClassifierResp;
            req.Timeout               = REQUEST_TIMEOUT;
            req.Parameters["api_key"] = mp_ApiKey;
            req.Parameters["version"] = VisualRecognitionVersion.Version;
            req.Forms         = new Dictionary <string, RESTConnector.Form>();
            req.Forms["name"] = new RESTConnector.Form(classifierName);
            req.Forms[className + "_positive_examples"] = new RESTConnector.Form(positiveExamplesData, className + "_positive_examples.zip", "application/zip");
            req.Forms["negative_examples"] = new RESTConnector.Form(negativeExamplesData, "negative_examples.zip", "application/zip");

            return(connector.Send(req));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Train a new classifier.
        /// </summary>
        /// <param name="successCallback">The success callback.</param>
        /// <param name="failCallback">The fail callback.</param>
        /// <param name="classifierName">A name to give the classifier.</param>
        /// <param name="language">Language of the classifier.</param>
        /// <param name="trainingData">CSV training data.</param>
        /// <returns>Returns true if training data was submitted correctly.</returns>
        public bool TrainClassifier(SuccessCallback <Classifier> successCallback, FailCallback failCallback, string classifierName, string language, string trainingData, Dictionary <string, object> customData = null)
        {
            if (successCallback == null)
            {
                throw new ArgumentNullException("successCallback");
            }
            if (failCallback == null)
            {
                throw new ArgumentNullException("failCallback");
            }
            if (string.IsNullOrEmpty(classifierName))
            {
                throw new ArgumentNullException("classifierId");
            }
            if (string.IsNullOrEmpty(language))
            {
                throw new ArgumentNullException("language");
            }
            if (string.IsNullOrEmpty(trainingData))
            {
                throw new ArgumentNullException("trainingData");
            }

            RESTConnector connector = RESTConnector.GetConnector(Credentials, "/v1/classifiers");

            if (connector == null)
            {
                return(false);
            }

            Dictionary <string, object> trainingMetaData = new Dictionary <string, object>();

            trainingMetaData["language"] = language;
            trainingMetaData["name"]     = classifierName;

            TrainClassifierReq req = new TrainClassifierReq();

            req.SuccessCallback            = successCallback;
            req.FailCallback               = failCallback;
            req.CustomData                 = customData == null ? new Dictionary <string, object>() : customData;
            req.OnResponse                 = OnTrainClassifierResp;
            req.Forms                      = new Dictionary <string, RESTConnector.Form>();
            req.Forms["training_metadata"] = new RESTConnector.Form(Encoding.UTF8.GetBytes(Json.Serialize(trainingMetaData)));
            req.Forms["training_data"]     = new RESTConnector.Form(Encoding.UTF8.GetBytes(trainingData));

            return(connector.Send(req));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Train a new classifier.
        /// </summary>
        /// <param name="classifierName">A name to give the classifier.</param>
        /// <param name="language">Language of the classifier.</param>
        /// <param name="trainingData">CSV training data.</param>
        /// <param name="callback">Callback to invoke with the results.</param>
        /// <returns>Returns true if training data was submitted correctly.</returns>
        public bool TrainClassifier(string classifierName, string language, string trainingData, OnTrainClassifier callback)
        {
            if (string.IsNullOrEmpty(classifierName))
            {
                throw new ArgumentNullException("classifierId");
            }
            if (string.IsNullOrEmpty(language))
            {
                throw new ArgumentNullException("language");
            }
            if (string.IsNullOrEmpty(trainingData))
            {
                throw new ArgumentNullException("trainingData");
            }
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, "/v1/classifiers");

            if (connector == null)
            {
                return(false);
            }

            Dictionary <string, object> trainingMetaData = new Dictionary <string, object>();

            trainingMetaData["language"] = language;
            trainingMetaData["name"]     = classifierName;

            TrainClassifierReq req = new TrainClassifierReq();

            req.Callback   = callback;
            req.OnResponse = OnTrainClassifierResp;
            req.Forms      = new Dictionary <string, RESTConnector.Form>();
            req.Forms["training_metadata"] = new RESTConnector.Form(Encoding.UTF8.GetBytes(Json.Serialize(trainingMetaData)));
            req.Forms["training_data"]     = new RESTConnector.Form(Encoding.UTF8.GetBytes(trainingData));

            return(connector.Send(req));
        }