use of com.ibm.watson.developer_cloud.natural_language_classifier.v1.model.Classifier in project java-sdk by watson-developer-cloud.
the class VisualRecognitionIT method testCreateClassifierAndClassifyImage.
/**
* Test create a classifier.
*
* @throws FileNotFoundException the file not found exception
* @throws InterruptedException the interrupted exception
*/
@Ignore
@Test
public void testCreateClassifierAndClassifyImage() throws FileNotFoundException, InterruptedException {
String classifierName = "integration-test-java-sdk";
String carClassifier = "car";
String baseballClassifier = "baseball";
File carImages = new File("src/test/resources/visual_recognition/car_positive.zip");
File baseballImages = new File("src/test/resources/visual_recognition/baseball_positive.zip");
File negativeImages = new File("src/test/resources/visual_recognition/negative.zip");
File imageToClassify = new File("src/test/resources/visual_recognition/car.png");
CreateClassifierOptions.Builder builder = new CreateClassifierOptions.Builder().name(classifierName);
builder.addClass(carClassifier, carImages);
builder.addClass(baseballClassifier, baseballImages);
builder.negativeExamples(negativeImages);
Classifier newClassifier = service.createClassifier(builder.build()).execute();
try {
assertEquals(classifierName, newClassifier.getName());
boolean ready = false;
for (int x = 0; (x < 20) && !ready; x++) {
Thread.sleep(2000);
GetClassifierOptions getOptions = new GetClassifierOptions.Builder(newClassifier.getClassifierId()).build();
newClassifier = service.getClassifier(getOptions).execute();
ready = newClassifier.getStatus().equals(Status.READY);
}
assertEquals(Status.READY, newClassifier.getStatus());
ClassifyOptions options = new ClassifyOptions.Builder().imagesFile(imageToClassify).build();
ClassifiedImages classification = service.classify(options).execute();
assertNotNull(classification);
} finally {
DeleteClassifierOptions deleteOptions = new DeleteClassifierOptions.Builder(newClassifier.getClassifierId()).build();
service.deleteClassifier(deleteOptions).execute();
}
}
use of com.ibm.watson.developer_cloud.natural_language_classifier.v1.model.Classifier in project java-sdk by watson-developer-cloud.
the class VisualRecognitionTest method testUpdateClassifier.
/**
* Test update classifier.
*
* @throws IOException Signals that an I/O exception has occurred.
* @throws InterruptedException the interrupted exception
*/
@Test
public void testUpdateClassifier() throws IOException, InterruptedException {
Classifier mockResponse = loadFixture(FIXTURE_CLASSIFIER, Classifier.class);
server.enqueue(new MockResponse().setBody(mockResponse.toString()));
// execute request
File images = new File(IMAGE_FILE);
String class1 = "class1";
String classifierId = "foo123";
UpdateClassifierOptions options = new UpdateClassifierOptions.Builder(classifierId).addClass(class1, images).build();
Classifier serviceResponse = service.updateClassifier(options).execute();
// first request
String path = String.format(PATH_CLASSIFIER, classifierId);
RecordedRequest request = server.takeRequest();
path += "?" + VERSION_DATE + "=2016-05-20&api_key=" + API_KEY;
assertEquals(path, request.getPath());
assertEquals("POST", request.getMethod());
String body = request.getBody().readUtf8();
String contentDisposition = "Content-Disposition: form-data; name=\"class1_positive_examples\"; filename=\"test.zip\"";
assertTrue(body.contains(contentDisposition));
assertTrue(!body.contains("Content-Disposition: form-data; name=\"name\""));
assertEquals(serviceResponse, mockResponse);
}
use of com.ibm.watson.developer_cloud.natural_language_classifier.v1.model.Classifier in project java-sdk by watson-developer-cloud.
the class NaturalLanguageClassifier method createClassifier.
/**
* Create classifier.
*
* This method is here for backwards-compatibility with the old version of createClassifier.
*
* @param name the classifier name
* @param language IETF primary language for the classifier. for example: 'en'
* @param trainingData the set of questions and their "keys" used to adapt a system to a domain (the ground truth)
* @return the classifier
* @throws FileNotFoundException if the file could not be found
*/
public ServiceCall<Classifier> createClassifier(String name, String language, File trainingData) throws FileNotFoundException {
Map<String, String> metadataMap = new HashMap<>();
metadataMap.put("name", name);
metadataMap.put("language", language);
String metadataString = GsonSingleton.getGson().toJson(metadataMap);
CreateClassifierOptions createClassifierOptions = new CreateClassifierOptions.Builder().metadata(new ByteArrayInputStream(metadataString.getBytes())).trainingData(trainingData).build();
return createClassifier(createClassifierOptions);
}
use of com.ibm.watson.developer_cloud.natural_language_classifier.v1.model.Classifier in project java-sdk by watson-developer-cloud.
the class NaturalLanguageClassifier method getClassifier.
/**
* Get information about a classifier.
*
* Returns status and other information about a classifier.
*
* @param getClassifierOptions the {@link GetClassifierOptions} containing the options for the call
* @return a {@link ServiceCall} with a response type of {@link Classifier}
*/
public ServiceCall<Classifier> getClassifier(GetClassifierOptions getClassifierOptions) {
Validator.notNull(getClassifierOptions, "getClassifierOptions cannot be null");
String[] pathSegments = { "v1/classifiers" };
String[] pathParameters = { getClassifierOptions.classifierId() };
RequestBuilder builder = RequestBuilder.get(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments, pathParameters));
return createServiceCall(builder.build(), ResponseConverterUtils.getObject(Classifier.class));
}
use of com.ibm.watson.developer_cloud.natural_language_classifier.v1.model.Classifier in project java-sdk by watson-developer-cloud.
the class NaturalLanguageClassifier method createClassifier.
/**
* Create classifier.
*
* Sends data to create and train a classifier and returns information about the new classifier.
*
* @param createClassifierOptions the {@link CreateClassifierOptions} containing the options for the call
* @return a {@link ServiceCall} with a response type of {@link Classifier}
*/
public ServiceCall<Classifier> createClassifier(CreateClassifierOptions createClassifierOptions) {
Validator.notNull(createClassifierOptions, "createClassifierOptions cannot be null");
String[] pathSegments = { "v1/classifiers" };
RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments));
MultipartBody.Builder multipartBuilder = new MultipartBody.Builder();
multipartBuilder.setType(MultipartBody.FORM);
RequestBody trainingMetadataBody = RequestUtils.inputStreamBody(createClassifierOptions.metadata(), "application/json");
multipartBuilder.addFormDataPart("training_metadata", createClassifierOptions.metadataFilename(), trainingMetadataBody);
RequestBody trainingDataBody = RequestUtils.inputStreamBody(createClassifierOptions.trainingData(), "text/csv");
multipartBuilder.addFormDataPart("training_data", createClassifierOptions.trainingDataFilename(), trainingDataBody);
builder.body(multipartBuilder.build());
return createServiceCall(builder.build(), ResponseConverterUtils.getObject(Classifier.class));
}
Aggregations