in sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeActionsUtilClient.java [1054:1305]
private AnalyzeActionsResult toAnalyzeActionsResultLanguageApi(AnalyzeTextJobState analyzeJobState) {
final TasksStateTasks tasksStateTasks = analyzeJobState.getTasks();
final List<AnalyzeTextLROResult> tasksResults = tasksStateTasks.getItems();
final List<RecognizeEntitiesActionResult> recognizeEntitiesActionResults = new ArrayList<>();
final List<RecognizePiiEntitiesActionResult> recognizePiiEntitiesActionResults = new ArrayList<>();
final List<ExtractKeyPhrasesActionResult> extractKeyPhrasesActionResults = new ArrayList<>();
final List<RecognizeLinkedEntitiesActionResult> recognizeLinkedEntitiesActionResults = new ArrayList<>();
final List<AnalyzeHealthcareEntitiesActionResult> analyzeHealthcareEntitiesActionResults = new ArrayList<>();
final List<AnalyzeSentimentActionResult> analyzeSentimentActionResults = new ArrayList<>();
final List<RecognizeCustomEntitiesActionResult> recognizeCustomEntitiesActionResults = new ArrayList<>();
final List<SingleLabelClassifyActionResult> singleLabelClassifyActionResults = new ArrayList<>();
final List<MultiLabelClassifyActionResult> multiLabelClassifyActionResults = new ArrayList<>();
final List<AbstractiveSummaryActionResult> abstractiveSummaryActionResults = new ArrayList<>();
final List<ExtractiveSummaryActionResult> extractiveSummaryActionResults = new ArrayList<>();
if (!CoreUtils.isNullOrEmpty(tasksResults)) {
for (int i = 0; i < tasksResults.size(); i++) {
final AnalyzeTextLROResult taskResult = tasksResults.get(i);
if (taskResult instanceof EntityRecognitionLROResult) {
final EntityRecognitionLROResult entityTaskResult = (EntityRecognitionLROResult) taskResult;
final RecognizeEntitiesActionResult actionResult = new RecognizeEntitiesActionResult();
final EntitiesResult results = entityTaskResult.getResults();
if (results != null) {
RecognizeEntitiesActionResultPropertiesHelper.setDocumentsResults(actionResult,
Utility.toRecognizeEntitiesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
entityTaskResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
entityTaskResult.getLastUpdateDateTime());
recognizeEntitiesActionResults.add(actionResult);
} else if (taskResult instanceof CustomEntityRecognitionLROResult) {
final CustomEntityRecognitionLROResult customEntityTaskResult
= (CustomEntityRecognitionLROResult) taskResult;
final RecognizeCustomEntitiesActionResult actionResult = new RecognizeCustomEntitiesActionResult();
final CustomEntitiesResult results = customEntityTaskResult.getResults();
if (results != null) {
RecognizeCustomEntitiesActionResultPropertiesHelper.setDocumentsResults(actionResult,
toRecognizeCustomEntitiesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
customEntityTaskResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
customEntityTaskResult.getLastUpdateDateTime());
recognizeCustomEntitiesActionResults.add(actionResult);
} else if (taskResult instanceof CustomSingleLabelClassificationLROResult) {
final CustomSingleLabelClassificationLROResult customSingleLabelClassificationResult
= (CustomSingleLabelClassificationLROResult) taskResult;
final SingleLabelClassifyActionResult actionResult = new SingleLabelClassifyActionResult();
final CustomLabelClassificationResult results = customSingleLabelClassificationResult.getResults();
if (results != null) {
SingleLabelClassifyActionResultPropertiesHelper.setDocumentsResults(actionResult,
toLabelClassificationResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
customSingleLabelClassificationResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
customSingleLabelClassificationResult.getLastUpdateDateTime());
singleLabelClassifyActionResults.add(actionResult);
} else if (taskResult instanceof CustomMultiLabelClassificationLROResult) {
final CustomMultiLabelClassificationLROResult customMultiLabelClassificationLROResult
= (CustomMultiLabelClassificationLROResult) taskResult;
final MultiLabelClassifyActionResult actionResult = new MultiLabelClassifyActionResult();
final CustomLabelClassificationResult results
= customMultiLabelClassificationLROResult.getResults();
if (results != null) {
MultiLabelClassifyActionResultPropertiesHelper.setDocumentsResults(actionResult,
toLabelClassificationResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
customMultiLabelClassificationLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
customMultiLabelClassificationLROResult.getLastUpdateDateTime());
multiLabelClassifyActionResults.add(actionResult);
} else if (taskResult instanceof EntityLinkingLROResult) {
final EntityLinkingLROResult entityLinkingLROResult = (EntityLinkingLROResult) taskResult;
final RecognizeLinkedEntitiesActionResult actionResult = new RecognizeLinkedEntitiesActionResult();
final EntityLinkingResult results = entityLinkingLROResult.getResults();
if (results != null) {
RecognizeLinkedEntitiesActionResultPropertiesHelper.setDocumentsResults(actionResult,
toRecognizeLinkedEntitiesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
entityLinkingLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
entityLinkingLROResult.getLastUpdateDateTime());
recognizeLinkedEntitiesActionResults.add(actionResult);
} else if (taskResult instanceof PiiEntityRecognitionLROResult) {
final PiiEntityRecognitionLROResult piiEntityRecognitionLROResult
= (PiiEntityRecognitionLROResult) taskResult;
final RecognizePiiEntitiesActionResult actionResult = new RecognizePiiEntitiesActionResult();
final PiiResult results = piiEntityRecognitionLROResult.getResults();
if (results != null) {
RecognizePiiEntitiesActionResultPropertiesHelper.setDocumentsResults(actionResult,
toRecognizePiiEntitiesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
piiEntityRecognitionLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
piiEntityRecognitionLROResult.getLastUpdateDateTime());
recognizePiiEntitiesActionResults.add(actionResult);
} else if (taskResult instanceof HealthcareLROResult) {
final HealthcareLROResult healthcareLROResult = (HealthcareLROResult) taskResult;
final AnalyzeHealthcareEntitiesActionResult actionResult
= new AnalyzeHealthcareEntitiesActionResult();
final HealthcareResult results = healthcareLROResult.getResults();
if (results != null) {
AnalyzeHealthcareEntitiesActionResultPropertiesHelper.setDocumentsResults(actionResult,
toAnalyzeHealthcareEntitiesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
healthcareLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
healthcareLROResult.getLastUpdateDateTime());
analyzeHealthcareEntitiesActionResults.add(actionResult);
} else if (taskResult instanceof SentimentLROResult) {
final SentimentLROResult sentimentLROResult = (SentimentLROResult) taskResult;
final AnalyzeSentimentActionResult actionResult = new AnalyzeSentimentActionResult();
final SentimentResponse results = sentimentLROResult.getResults();
if (results != null) {
AnalyzeSentimentActionResultPropertiesHelper.setDocumentsResults(actionResult,
toAnalyzeSentimentResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
sentimentLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
sentimentLROResult.getLastUpdateDateTime());
analyzeSentimentActionResults.add(actionResult);
} else if (taskResult instanceof KeyPhraseExtractionLROResult) {
final KeyPhraseExtractionLROResult keyPhraseExtractionLROResult
= (KeyPhraseExtractionLROResult) taskResult;
final ExtractKeyPhrasesActionResult actionResult = new ExtractKeyPhrasesActionResult();
final KeyPhraseResult results = keyPhraseExtractionLROResult.getResults();
if (results != null) {
ExtractKeyPhrasesActionResultPropertiesHelper.setDocumentsResults(actionResult,
toExtractKeyPhrasesResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
keyPhraseExtractionLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
keyPhraseExtractionLROResult.getLastUpdateDateTime());
extractKeyPhrasesActionResults.add(actionResult);
} else if (taskResult instanceof ExtractiveSummarizationLROResult) {
final ExtractiveSummarizationLROResult extractiveSummarizationLROResult
= (ExtractiveSummarizationLROResult) taskResult;
final ExtractiveSummaryActionResult actionResult = new ExtractiveSummaryActionResult();
final ExtractiveSummarizationResult results = extractiveSummarizationLROResult.getResults();
if (results != null) {
ExtractiveSummaryActionResultPropertiesHelper.setDocumentsResults(actionResult,
toExtractiveSummaryResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
extractiveSummarizationLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
extractiveSummarizationLROResult.getLastUpdateDateTime());
extractiveSummaryActionResults.add(actionResult);
} else if (taskResult instanceof AbstractiveSummarizationLROResult) {
final AbstractiveSummarizationLROResult abstractiveSummarizationLROResult
= (AbstractiveSummarizationLROResult) taskResult;
final AbstractiveSummaryActionResult actionResult = new AbstractiveSummaryActionResult();
final AbstractiveSummarizationResult results = abstractiveSummarizationLROResult.getResults();
if (results != null) {
AbstractiveSummaryActionResultPropertiesHelper.setDocumentsResults(actionResult,
toAbstractiveSummaryResultCollection(results));
}
TextAnalyticsActionResultPropertiesHelper.setActionName(actionResult,
abstractiveSummarizationLROResult.getTaskName());
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
abstractiveSummarizationLROResult.getLastUpdateDateTime());
abstractiveSummaryActionResults.add(actionResult);
} else {
throw LOGGER.logExceptionAsError(
new RuntimeException("Invalid Long running operation task result: " + taskResult.getClass()));
}
}
}
//TODO: In Language REST API, there is no such task names. It might be a different way to parse the Error Target
// https://github.com/Azure/azure-sdk-for-java/issues/28834
final List<Error> errors = analyzeJobState.getErrors();
if (!CoreUtils.isNullOrEmpty(errors)) {
for (Error error : errors) {
if (error != null) {
final String[] targetPair
= parseActionErrorTargetLanguageApi(error.getTarget(), error.getMessage());
final String taskName = targetPair[0];
final Integer taskIndex = Integer.valueOf(targetPair[1]);
final TextAnalyticsActionResult actionResult;
if (ENTITY_RECOGNITION.equals(taskName)) {
actionResult = recognizeEntitiesActionResults.get(taskIndex);
} else if (PII_ENTITY_RECOGNITION.equals(taskName)) {
actionResult = recognizePiiEntitiesActionResults.get(taskIndex);
} else if (KEY_PHRASE_EXTRACTION.equals(taskName)) {
actionResult = extractKeyPhrasesActionResults.get(taskIndex);
} else if (ENTITY_LINKING.equals(taskName)) {
actionResult = recognizeLinkedEntitiesActionResults.get(taskIndex);
} else if (SENTIMENT_ANALYSIS.equals(taskName)) {
actionResult = analyzeSentimentActionResults.get(taskIndex);
} else if (CUSTOM_ENTITY_RECOGNITION.equals(taskName)) {
actionResult = recognizeCustomEntitiesActionResults.get(taskIndex);
} else if (CUSTOM_SINGLE_LABEL_CLASSIFICATION.equals(taskName)) {
actionResult = singleLabelClassifyActionResults.get(taskIndex);
} else if (CUSTOM_MULTI_LABEL_CLASSIFICATION.equals(taskName)) {
actionResult = multiLabelClassifyActionResults.get(taskIndex);
} else if (HEALTHCARE.equals(taskName)) {
actionResult = analyzeHealthcareEntitiesActionResults.get(taskIndex);
} else if (EXTRACTIVE_SUMMARIZATION.equals(taskName)) {
actionResult = extractiveSummaryActionResults.get(taskIndex);
} else if (ABSTRACTIVE_SUMMARIZATION.equals(taskName)) {
actionResult = abstractiveSummaryActionResults.get(taskIndex);
} else {
throw LOGGER.logExceptionAsError(
new RuntimeException("Invalid task name in target reference, " + taskName));
}
TextAnalyticsActionResultPropertiesHelper.setIsError(actionResult, true);
TextAnalyticsActionResultPropertiesHelper.setError(actionResult,
new com.azure.ai.textanalytics.models.TextAnalyticsError(
TextAnalyticsErrorCode
.fromString(error.getCode() == null ? null : error.getCode().toString()),
error.getMessage(), null));
}
}
}
final AnalyzeActionsResult analyzeActionsResult = new AnalyzeActionsResult();
AnalyzeActionsResultPropertiesHelper.setRecognizeEntitiesResults(analyzeActionsResult,
IterableStream.of(recognizeEntitiesActionResults));
AnalyzeActionsResultPropertiesHelper.setRecognizePiiEntitiesResults(analyzeActionsResult,
IterableStream.of(recognizePiiEntitiesActionResults));
AnalyzeActionsResultPropertiesHelper.setAnalyzeHealthcareEntitiesResults(analyzeActionsResult,
IterableStream.of(analyzeHealthcareEntitiesActionResults));
AnalyzeActionsResultPropertiesHelper.setExtractKeyPhrasesResults(analyzeActionsResult,
IterableStream.of(extractKeyPhrasesActionResults));
AnalyzeActionsResultPropertiesHelper.setRecognizeLinkedEntitiesResults(analyzeActionsResult,
IterableStream.of(recognizeLinkedEntitiesActionResults));
AnalyzeActionsResultPropertiesHelper.setAnalyzeSentimentResults(analyzeActionsResult,
IterableStream.of(analyzeSentimentActionResults));
AnalyzeActionsResultPropertiesHelper.setRecognizeCustomEntitiesResults(analyzeActionsResult,
IterableStream.of(recognizeCustomEntitiesActionResults));
AnalyzeActionsResultPropertiesHelper.setClassifySingleCategoryResults(analyzeActionsResult,
IterableStream.of(singleLabelClassifyActionResults));
AnalyzeActionsResultPropertiesHelper.setClassifyMultiCategoryResults(analyzeActionsResult,
IterableStream.of(multiLabelClassifyActionResults));
AnalyzeActionsResultPropertiesHelper.setAbstractiveSummaryResults(analyzeActionsResult,
IterableStream.of(abstractiveSummaryActionResults));
AnalyzeActionsResultPropertiesHelper.setExtractiveSummaryResults(analyzeActionsResult,
IterableStream.of(extractiveSummaryActionResults));
return analyzeActionsResult;
}