/// <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)); }
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)); }
/// <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)); }
/// <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)); }