Skip to content

Commit 1a92a48

Browse files
authored
[TA] Generate 3.1-preview.4 swagger and fixes breaking changes (Azure#19413)
* Regenerated and fix errors and create follow-up issue
1 parent 110d881 commit 1a92a48

File tree

373 files changed

+6841
-5536
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

373 files changed

+6841
-5536
lines changed

sdk/textanalytics/azure-ai-textanalytics/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# Release History
22
## 5.1.0-beta.5 (Unreleased)
3-
3+
### Breaking changes
4+
- Renamed `AspectSentiment` to `TargetSentiment`, `OpinionSentiment` to `AssesssmentSentiment`.
5+
- Renamed
6+
`SentenceSentiment`'s method, `getMinedOpinions()` to `getOpinions()`.
7+
`MinedOpinion`'s methods, `getAspect()` to `getTarget()`, `getOpinions()` to `getAssessments()`,
8+
- Removed constructors,
9+
`SentenceSentiment(String text, TextSentiment sentiment, SentimentConfidenceScores confidenceScores, IterableStream<MinedOpinion> minedOpinions, int offset)`,
10+
`AspectSentiment(String text, TextSentiment sentiment, int offset, SentimentConfidenceScores confidenceScores)`,
11+
`OpinionSentiment(String text, TextSentiment sentiment, int offset, boolean isNegated, SentimentConfidenceScores confidenceScores)`
412

513
## 5.1.0-beta.4 (2021-02-10)
614
### New features

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeBatchActionsAsyncClient.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
import com.azure.ai.textanalytics.implementation.Utility;
1414
import com.azure.ai.textanalytics.implementation.models.AnalyzeBatchInput;
1515
import com.azure.ai.textanalytics.implementation.models.AnalyzeJobState;
16+
import com.azure.ai.textanalytics.implementation.models.EntitiesResult;
1617
import com.azure.ai.textanalytics.implementation.models.EntitiesTask;
1718
import com.azure.ai.textanalytics.implementation.models.EntitiesTaskParameters;
1819
import com.azure.ai.textanalytics.implementation.models.JobManifestTasks;
20+
import com.azure.ai.textanalytics.implementation.models.KeyPhraseResult;
1921
import com.azure.ai.textanalytics.implementation.models.KeyPhrasesTask;
2022
import com.azure.ai.textanalytics.implementation.models.KeyPhrasesTaskParameters;
2123
import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput;
24+
import com.azure.ai.textanalytics.implementation.models.PiiResult;
2225
import com.azure.ai.textanalytics.implementation.models.PiiTask;
2326
import com.azure.ai.textanalytics.implementation.models.PiiTaskParameters;
2427
import com.azure.ai.textanalytics.implementation.models.PiiTaskParametersDomain;
@@ -334,8 +337,11 @@ private AnalyzeBatchActionsResult toAnalyzeTasks(AnalyzeJobState analyzeJobState
334337
for (int i = 0; i < entityRecognitionTasksItems.size(); i++) {
335338
final TasksStateTasksEntityRecognitionTasksItem taskItem = entityRecognitionTasksItems.get(i);
336339
final RecognizeEntitiesActionResult actionResult = new RecognizeEntitiesActionResult();
337-
RecognizeEntitiesActionResultPropertiesHelper.setResult(actionResult,
338-
toRecognizeEntitiesResultCollectionResponse(taskItem.getResults()));
340+
final EntitiesResult results = taskItem.getResults();
341+
if (results != null) {
342+
RecognizeEntitiesActionResultPropertiesHelper.setResult(actionResult,
343+
toRecognizeEntitiesResultCollectionResponse(results));
344+
}
339345
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
340346
taskItem.getLastUpdateDateTime());
341347
recognizeEntitiesActionResults.add(actionResult);
@@ -345,8 +351,11 @@ private AnalyzeBatchActionsResult toAnalyzeTasks(AnalyzeJobState analyzeJobState
345351
for (int i = 0; i < piiTasksItems.size(); i++) {
346352
final TasksStateTasksEntityRecognitionPiiTasksItem taskItem = piiTasksItems.get(i);
347353
final RecognizePiiEntitiesActionResult actionResult = new RecognizePiiEntitiesActionResult();
348-
RecognizePiiEntitiesActionResultPropertiesHelper.setResult(actionResult,
349-
toRecognizePiiEntitiesResultCollection(taskItem.getResults()));
354+
final PiiResult results = taskItem.getResults();
355+
if (results != null) {
356+
RecognizePiiEntitiesActionResultPropertiesHelper.setResult(actionResult,
357+
toRecognizePiiEntitiesResultCollection(results));
358+
}
350359
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
351360
taskItem.getLastUpdateDateTime());
352361
recognizePiiEntitiesActionResults.add(actionResult);
@@ -356,8 +365,11 @@ private AnalyzeBatchActionsResult toAnalyzeTasks(AnalyzeJobState analyzeJobState
356365
for (int i = 0; i < keyPhraseExtractionTasks.size(); i++) {
357366
final TasksStateTasksKeyPhraseExtractionTasksItem taskItem = keyPhraseExtractionTasks.get(i);
358367
final ExtractKeyPhrasesActionResult actionResult = new ExtractKeyPhrasesActionResult();
359-
ExtractKeyPhrasesActionResultPropertiesHelper.setResult(actionResult,
360-
toExtractKeyPhrasesResultCollection(taskItem.getResults()));
368+
final KeyPhraseResult results = taskItem.getResults();
369+
if (results != null) {
370+
ExtractKeyPhrasesActionResultPropertiesHelper.setResult(actionResult,
371+
toExtractKeyPhrasesResultCollection(results));
372+
}
361373
TextAnalyticsActionResultPropertiesHelper.setCompletedAt(actionResult,
362374
taskItem.getLastUpdateDateTime());
363375
extractKeyPhrasesActionResults.add(actionResult);

sdk/textanalytics/azure-ai-textanalytics/src/main/java/com/azure/ai/textanalytics/AnalyzeSentimentAsyncClient.java

Lines changed: 76 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,29 @@
33

44
package com.azure.ai.textanalytics;
55

6-
import com.azure.ai.textanalytics.implementation.AspectSentimentPropertiesHelper;
7-
import com.azure.ai.textanalytics.implementation.OpinionSentimentPropertiesHelper;
6+
import com.azure.ai.textanalytics.implementation.SentenceOpinionPropertiesHelper;
7+
import com.azure.ai.textanalytics.implementation.TargetSentimentPropertiesHelper;
8+
import com.azure.ai.textanalytics.implementation.AssessmentSentimentPropertiesHelper;
89
import com.azure.ai.textanalytics.implementation.SentenceSentimentPropertiesHelper;
910
import com.azure.ai.textanalytics.implementation.TextAnalyticsClientImpl;
1011
import com.azure.ai.textanalytics.implementation.Utility;
11-
import com.azure.ai.textanalytics.implementation.models.AspectConfidenceScoreLabel;
12-
import com.azure.ai.textanalytics.implementation.models.AspectRelationType;
1312
import com.azure.ai.textanalytics.implementation.models.DocumentError;
1413
import com.azure.ai.textanalytics.implementation.models.DocumentSentiment;
1514
import com.azure.ai.textanalytics.implementation.models.DocumentSentimentValue;
1615
import com.azure.ai.textanalytics.implementation.models.MultiLanguageBatchInput;
17-
import com.azure.ai.textanalytics.implementation.models.SentenceAspect;
18-
import com.azure.ai.textanalytics.implementation.models.SentenceOpinion;
16+
import com.azure.ai.textanalytics.implementation.models.SentenceAssessment;
1917
import com.azure.ai.textanalytics.implementation.models.SentenceSentimentValue;
18+
import com.azure.ai.textanalytics.implementation.models.SentenceTarget;
2019
import com.azure.ai.textanalytics.implementation.models.SentimentConfidenceScorePerLabel;
2120
import com.azure.ai.textanalytics.implementation.models.SentimentResponse;
21+
import com.azure.ai.textanalytics.implementation.models.TargetConfidenceScoreLabel;
22+
import com.azure.ai.textanalytics.implementation.models.TargetRelationType;
2223
import com.azure.ai.textanalytics.implementation.models.WarningCodeValue;
2324
import com.azure.ai.textanalytics.models.AnalyzeSentimentOptions;
2425
import com.azure.ai.textanalytics.models.AnalyzeSentimentResult;
25-
import com.azure.ai.textanalytics.models.AspectSentiment;
26-
import com.azure.ai.textanalytics.models.MinedOpinion;
27-
import com.azure.ai.textanalytics.models.OpinionSentiment;
26+
import com.azure.ai.textanalytics.models.TargetSentiment;
27+
import com.azure.ai.textanalytics.models.SentenceOpinion;
28+
import com.azure.ai.textanalytics.models.AssessmentSentiment;
2829
import com.azure.ai.textanalytics.models.SentenceSentiment;
2930
import com.azure.ai.textanalytics.models.SentimentConfidenceScores;
3031
import com.azure.ai.textanalytics.models.TextAnalyticsWarning;
@@ -166,10 +167,10 @@ private AnalyzeSentimentResult convertToAnalyzeSentimentResult(DocumentSentiment
166167
final SentenceSentiment sentenceSentiment1 = new SentenceSentiment(sentenceSentiment.getText(),
167168
TextSentiment.fromString(sentenceSentimentValue == null ? null : sentenceSentimentValue.toString()),
168169
new SentimentConfidenceScores(confidenceScorePerSentence.getNegative(),
169-
confidenceScorePerSentence.getNeutral(), confidenceScorePerSentence.getPositive()),
170-
toMinedOpinionList(sentenceSentiment, documentSentimentList),
171-
sentenceSentiment.getOffset()
172-
);
170+
confidenceScorePerSentence.getNeutral(), confidenceScorePerSentence.getPositive()));
171+
SentenceSentimentPropertiesHelper.setOpinions(sentenceSentiment1,
172+
toSentenceOpinionList(sentenceSentiment, documentSentimentList));
173+
SentenceSentimentPropertiesHelper.setOffset(sentenceSentiment1, sentenceSentiment.getOffset());
173174
SentenceSentimentPropertiesHelper.setLength(sentenceSentiment1, sentenceSentiment.getLength());
174175
return sentenceSentiment1;
175176
}).collect(Collectors.toList());
@@ -229,112 +230,123 @@ private Mono<Response<AnalyzeSentimentResultCollection>> getAnalyzedSentimentRes
229230
/*
230231
* Transform SentenceSentiment's opinion mining to output that user can use.
231232
*/
232-
private IterableStream<MinedOpinion> toMinedOpinionList(
233+
private IterableStream<SentenceOpinion> toSentenceOpinionList(
233234
com.azure.ai.textanalytics.implementation.models.SentenceSentiment sentenceSentiment,
234235
List<DocumentSentiment> documentSentimentList) {
235-
// If include opinion mining indicator is false, the service return null for the aspect list.
236-
final List<SentenceAspect> sentenceAspects = sentenceSentiment.getAspects();
237-
if (sentenceAspects == null) {
236+
// If include opinion mining indicator is false, the service return null for the target list.
237+
final List<SentenceTarget> sentenceTargets = sentenceSentiment.getTargets();
238+
if (sentenceTargets == null) {
238239
return null;
239240
}
240-
final List<MinedOpinion> minedOpinions = new ArrayList<>();
241-
sentenceAspects.forEach(sentenceAspect -> {
242-
final List<OpinionSentiment> opinionSentiments = new ArrayList<>();
243-
sentenceAspect.getRelations().forEach(aspectRelation -> {
244-
final AspectRelationType aspectRelationType = aspectRelation.getRelationType();
245-
final String opinionPointer = aspectRelation.getRef();
246-
if (AspectRelationType.OPINION == aspectRelationType) {
247-
opinionSentiments.add(toOpinionSentiment(
248-
findSentimentOpinion(opinionPointer, documentSentimentList)));
241+
final List<SentenceOpinion> sentenceOpinions = new ArrayList<>();
242+
sentenceTargets.forEach(sentenceTarget -> {
243+
final List<AssessmentSentiment> assessmentSentiments = new ArrayList<>();
244+
sentenceTarget.getRelations().forEach(targetRelation -> {
245+
final TargetRelationType targetRelationType = targetRelation.getRelationType();
246+
final String opinionPointer = targetRelation.getRef();
247+
if (TargetRelationType.ASSESSMENT == targetRelationType) {
248+
assessmentSentiments.add(toAssessmentSentiment(
249+
findSentimentAssessment(opinionPointer, documentSentimentList)));
249250
}
250251
});
251-
final AspectSentiment aspectSentiment = new AspectSentiment(sentenceAspect.getText(),
252-
TextSentiment.fromString(sentenceAspect.getSentiment().toString()),
253-
sentenceAspect.getOffset(),
254-
toSentimentConfidenceScores(sentenceAspect.getConfidenceScores()));
255-
AspectSentimentPropertiesHelper.setLength(aspectSentiment, sentenceAspect.getLength());
256-
minedOpinions.add(new MinedOpinion(aspectSentiment, new IterableStream<>(opinionSentiments)));
252+
final TargetSentiment targetSentiment = new TargetSentiment();
253+
TargetSentimentPropertiesHelper.setText(targetSentiment, sentenceTarget.getText());
254+
TargetSentimentPropertiesHelper.setSentiment(targetSentiment,
255+
TextSentiment.fromString(sentenceTarget.getSentiment().toString()));
256+
TargetSentimentPropertiesHelper.setConfidenceScores(targetSentiment,
257+
toSentimentConfidenceScores(sentenceTarget.getConfidenceScores()));
258+
TargetSentimentPropertiesHelper.setOffset(targetSentiment, sentenceTarget.getOffset());
259+
TargetSentimentPropertiesHelper.setLength(targetSentiment, sentenceTarget.getLength());
260+
261+
final SentenceOpinion sentenceOpinion = new SentenceOpinion();
262+
SentenceOpinionPropertiesHelper.setTarget(sentenceOpinion, targetSentiment);
263+
SentenceOpinionPropertiesHelper.setAssessments(sentenceOpinion, new IterableStream<>(assessmentSentiments));
264+
sentenceOpinions.add(sentenceOpinion);
257265
});
258266

259-
return new IterableStream<>(minedOpinions);
267+
return new IterableStream<>(sentenceOpinions);
260268
}
261269

262270
/*
263-
* Transform type AspectConfidenceScoreLabel to SentimentConfidenceScores.
271+
* Transform type TargetConfidenceScoreLabel to SentimentConfidenceScores.
264272
*/
265273
private SentimentConfidenceScores toSentimentConfidenceScores(
266-
AspectConfidenceScoreLabel aspectConfidenceScoreLabel) {
267-
return new SentimentConfidenceScores(aspectConfidenceScoreLabel.getNegative(), NEUTRAL_SCORE_ZERO,
268-
aspectConfidenceScoreLabel.getPositive());
274+
TargetConfidenceScoreLabel targetConfidenceScoreLabel) {
275+
return new SentimentConfidenceScores(targetConfidenceScoreLabel.getNegative(), NEUTRAL_SCORE_ZERO,
276+
targetConfidenceScoreLabel.getPositive());
269277
}
270278

271279
/*
272280
* Transform type SentenceOpinion to OpinionSentiment.
273281
*/
274-
private OpinionSentiment toOpinionSentiment(SentenceOpinion sentenceOpinion) {
275-
final OpinionSentiment opinionSentiment = new OpinionSentiment(sentenceOpinion.getText(),
276-
TextSentiment.fromString(sentenceOpinion.getSentiment().toString()),
277-
sentenceOpinion.getOffset(), sentenceOpinion.isNegated(),
278-
toSentimentConfidenceScores(sentenceOpinion.getConfidenceScores()));
279-
OpinionSentimentPropertiesHelper.setLength(opinionSentiment, sentenceOpinion.getLength());
280-
return opinionSentiment;
282+
private AssessmentSentiment toAssessmentSentiment(SentenceAssessment sentenceAssessment) {
283+
final AssessmentSentiment assessmentSentiment = new AssessmentSentiment();
284+
AssessmentSentimentPropertiesHelper.setText(assessmentSentiment, sentenceAssessment.getText());
285+
AssessmentSentimentPropertiesHelper.setSentiment(assessmentSentiment,
286+
TextSentiment.fromString(sentenceAssessment.getSentiment().toString()));
287+
AssessmentSentimentPropertiesHelper.setConfidenceScores(assessmentSentiment,
288+
toSentimentConfidenceScores(sentenceAssessment.getConfidenceScores()));
289+
AssessmentSentimentPropertiesHelper.setNegated(assessmentSentiment, sentenceAssessment.isNegated());
290+
AssessmentSentimentPropertiesHelper.setOffset(assessmentSentiment, sentenceAssessment.getOffset());
291+
AssessmentSentimentPropertiesHelper.setLength(assessmentSentiment, sentenceAssessment.getLength());
292+
return assessmentSentiment;
281293
}
282294

283295
/*
284296
* Parses the reference pointer to an index array that contains document, sentence, and opinion indexes.
285297
*/
286-
int[] parseRefPointerToIndexArray(String opinionPointer) {
287-
// The pattern always start with character '#', the opinion index will existing in specified sentence, which
298+
int[] parseRefPointerToIndexArray(String assessmentPointer) {
299+
// The pattern always start with character '#', the assessment index will existing in specified sentence, which
288300
// is under specified document.
289-
// example: #/documents/0/sentences/0/opinions/0
290-
final String patternRegex = "#/documents/(\\d+)/sentences/(\\d+)/opinions/(\\d+)";
301+
// example: #/documents/0/sentences/0/assessments/0
302+
final String patternRegex = "#/documents/(\\d+)/sentences/(\\d+)/assessments/(\\d+)";
291303
final Pattern pattern = Pattern.compile(patternRegex);
292-
final Matcher matcher = pattern.matcher(opinionPointer);
304+
final Matcher matcher = pattern.matcher(assessmentPointer);
293305
final boolean isMatched = matcher.find();
294306

295307
// The first index represents the document index, second one represents the sentence index,
296-
// third ond represents the opinion index.
308+
// third ond represents the assessment index.
297309
final int[] result = new int[3];
298310

299311
if (isMatched) {
300-
String[] segments = opinionPointer.split("/");
312+
String[] segments = assessmentPointer.split("/");
301313
result[0] = Integer.parseInt(segments[2]);
302314
result[1] = Integer.parseInt(segments[4]);
303315
result[2] = Integer.parseInt(segments[6]);
304316
} else {
305317
throw logger.logExceptionAsError(new IllegalStateException(
306-
String.format("'%s' is not a valid opinion pointer.", opinionPointer)));
318+
String.format("'%s' is not a valid assessment pointer.", assessmentPointer)));
307319
}
308320

309321
return result;
310322
}
311323

312324
/*
313-
* Find the specific sentence opinion in the document sentiment list by given the opinion reference pointer.
325+
* Find the specific sentence assessment in the document sentiment list by given the assessment reference pointer.
314326
*/
315-
SentenceOpinion findSentimentOpinion(String opinionPointer, List<DocumentSentiment> documentSentiments) {
316-
final int[] opinionIndexes = parseRefPointerToIndexArray(opinionPointer);
317-
final int documentIndex = opinionIndexes[0];
318-
final int sentenceIndex = opinionIndexes[1];
319-
final int opinionIndex = opinionIndexes[2];
327+
SentenceAssessment findSentimentAssessment(String assessmentPointer, List<DocumentSentiment> documentSentiments) {
328+
final int[] assessmentIndexes = parseRefPointerToIndexArray(assessmentPointer);
329+
final int documentIndex = assessmentIndexes[0];
330+
final int sentenceIndex = assessmentIndexes[1];
331+
final int assessmentIndex = assessmentIndexes[2];
320332
if (documentIndex >= documentSentiments.size()) {
321333
throw logger.logExceptionAsError(new IllegalStateException(
322-
String.format("Invalid document index '%s' in '%s'.", documentIndex, opinionPointer)));
334+
String.format("Invalid document index '%s' in '%s'.", documentIndex, assessmentPointer)));
323335
}
324336
final DocumentSentiment documentsentiment = documentSentiments.get(documentIndex);
325337

326338
final List<com.azure.ai.textanalytics.implementation.models.SentenceSentiment> sentenceSentiments =
327339
documentsentiment.getSentences();
328340
if (sentenceIndex >= sentenceSentiments.size()) {
329341
throw logger.logExceptionAsError(new IllegalStateException(
330-
String.format("Invalid sentence index '%s' in '%s'.", sentenceIndex, opinionPointer)));
342+
String.format("Invalid sentence index '%s' in '%s'.", sentenceIndex, assessmentPointer)));
331343
}
332344

333-
final List<SentenceOpinion> opinions = sentenceSentiments.get(sentenceIndex).getOpinions();
334-
if (opinionIndex >= opinions.size()) {
345+
final List<SentenceAssessment> assessments = sentenceSentiments.get(sentenceIndex).getAssessments();
346+
if (assessmentIndex >= assessments.size()) {
335347
throw logger.logExceptionAsError(new IllegalStateException(
336-
String.format("Invalid opinion index '%s' in '%s'.", opinionIndex, opinionPointer)));
348+
String.format("Invalid assessment index '%s' in '%s'.", assessmentIndex, assessmentPointer)));
337349
}
338-
return opinions.get(opinionIndex);
350+
return assessments.get(assessmentIndex);
339351
}
340352
}

0 commit comments

Comments
 (0)