Skip to content

Commit 88e34cc

Browse files
authored
[TA] Add flags enum for Opinion mining (#14624)
* add flags enum for OM * PR feedback * export-api
1 parent e8daad9 commit 88e34cc

File tree

6 files changed

+54
-16
lines changed

6 files changed

+54
-16
lines changed

sdk/textanalytics/Azure.AI.TextAnalytics/api/Azure.AI.TextAnalytics.netstandard2.0.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
namespace Azure.AI.TextAnalytics
22
{
3+
[System.FlagsAttribute]
4+
public enum AdditionalSentimentAnalyses
5+
{
6+
None = 0,
7+
OpinionMining = 1,
8+
}
39
public partial class AnalyzeSentimentOptions : Azure.AI.TextAnalytics.TextAnalyticsRequestOptions
410
{
511
public AnalyzeSentimentOptions() { }
6-
public bool IncludeOpinionMining { get { throw null; } set { } }
12+
public Azure.AI.TextAnalytics.AdditionalSentimentAnalyses AdditionalSentimentAnalyses { get { throw null; } set { } }
713
}
814
public partial class AnalyzeSentimentResult : Azure.AI.TextAnalytics.TextAnalyticsResult
915
{
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
 // Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using System;
5+
6+
namespace Azure.AI.TextAnalytics
7+
{
8+
/// <summary>
9+
/// Additional types of Sentiment Analysis to be applied to the
10+
/// AnalyzeSentiment method, like for example Opinion Mining.
11+
/// </summary>
12+
[Flags]
13+
public enum AdditionalSentimentAnalyses
14+
{
15+
/// <summary>
16+
/// Use standard sentiment analysis for documents and its sentences.
17+
/// </summary>
18+
None = 0,
19+
20+
/// <summary>
21+
/// Sentiment analysis results with Opinion Mining,
22+
/// also known as Aspect-based Sentiment Analysis.
23+
/// Only available for Text Analytics Service version v3.1-preview.1 and above.
24+
/// </summary>
25+
OpinionMining = 1,
26+
}
27+
}

sdk/textanalytics/Azure.AI.TextAnalytics/src/AnalyzeSentimentOptions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ internal AnalyzeSentimentOptions(TextAnalyticsRequestOptions options)
2323
}
2424

2525
/// <summary>
26-
/// If set to true, response will contain Opinion Mining sentiment analysis results.
27-
/// Only available for Text Analytics Service version v3.1-preview.1 and above.
26+
/// Additional types of Sentiment Analysis to be applied to the
27+
/// AnalyzeSentiment method, like for example Opinion Mining.
2828
/// </summary>
29-
public bool IncludeOpinionMining { get; set; } = false;
30-
}
29+
public AdditionalSentimentAnalyses AdditionalSentimentAnalyses { get; set; }
30+
}
3131
}

sdk/textanalytics/Azure.AI.TextAnalytics/src/SentenceSentiment.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ internal SentenceSentiment(SentenceSentimentInternal sentenceSentiment, IReadOnl
5757

5858
/// <summary>
5959
/// Gets the mined opinions of a sentence. This is only returned if
60-
/// <see cref="AnalyzeSentimentOptions.IncludeOpinionMining"/> is set to true.
60+
/// <see cref="AdditionalSentimentAnalyses.OpinionMining"/> is set in <see cref="AnalyzeSentimentOptions.AdditionalSentimentAnalyses"/>.
6161
/// </summary>
6262
public IReadOnlyCollection<MinedOpinion> MinedOpinions { get; }
6363

sdk/textanalytics/Azure.AI.TextAnalytics/src/TextAnalyticsClient.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -788,11 +788,12 @@ public virtual async Task<Response<DocumentSentiment>> AnalyzeSentimentAsync(str
788788
try
789789
{
790790
var documents = new List<MultiLanguageInput>() { ConvertToMultiLanguageInput(document, language) };
791+
bool opinionMining = options.AdditionalSentimentAnalyses.HasFlag(AdditionalSentimentAnalyses.OpinionMining);
791792
Response<SentimentResponse> result = await _serviceRestClient.SentimentAsync(
792793
new MultiLanguageBatchInput(documents),
793794
options.ModelVersion,
794795
options.IncludeStatistics,
795-
options.IncludeOpinionMining,
796+
opinionMining,
796797
_stringCodeUnit,
797798
cancellationToken).ConfigureAwait(false);
798799
Response response = result.GetRawResponse();
@@ -848,11 +849,12 @@ public virtual Response<DocumentSentiment> AnalyzeSentiment(string document, str
848849
try
849850
{
850851
var documents = new List<MultiLanguageInput>() { ConvertToMultiLanguageInput(document, language) };
852+
bool opinionMining = options.AdditionalSentimentAnalyses.HasFlag(AdditionalSentimentAnalyses.OpinionMining);
851853
Response<SentimentResponse> result = _serviceRestClient.Sentiment(
852854
new MultiLanguageBatchInput(documents),
853855
options.ModelVersion,
854856
options.IncludeStatistics,
855-
options.IncludeOpinionMining,
857+
opinionMining,
856858
_stringCodeUnit,
857859
cancellationToken);
858860
Response response = result.GetRawResponse();
@@ -1126,11 +1128,12 @@ private async Task<Response<AnalyzeSentimentResultCollection>> AnalyzeSentimentB
11261128

11271129
try
11281130
{
1131+
bool opinionMining = options.AdditionalSentimentAnalyses.HasFlag(AdditionalSentimentAnalyses.OpinionMining);
11291132
Response<SentimentResponse> result = await _serviceRestClient.SentimentAsync(
11301133
batchInput,
11311134
options.ModelVersion,
11321135
options.IncludeStatistics,
1133-
options.IncludeOpinionMining,
1136+
opinionMining,
11341137
_stringCodeUnit,
11351138
cancellationToken).ConfigureAwait(false);
11361139
var response = result.GetRawResponse();
@@ -1153,10 +1156,12 @@ private Response<AnalyzeSentimentResultCollection> AnalyzeSentimentBatch(MultiLa
11531156

11541157
try
11551158
{
1156-
Response<SentimentResponse> result = _serviceRestClient.Sentiment(batchInput,
1159+
bool opinionMining = options.AdditionalSentimentAnalyses.HasFlag(AdditionalSentimentAnalyses.OpinionMining);
1160+
Response<SentimentResponse> result = _serviceRestClient.Sentiment(
1161+
batchInput,
11571162
options.ModelVersion,
11581163
options.IncludeStatistics,
1159-
options.IncludeOpinionMining,
1164+
opinionMining,
11601165
_stringCodeUnit,
11611166
cancellationToken);
11621167
var response = result.GetRawResponse();

sdk/textanalytics/Azure.AI.TextAnalytics/tests/AnalyzeSentimentTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public async Task AnalyzeSentimentWithOpinionMining()
6565
TextAnalyticsClient client = GetClient();
6666
string document = "The park was clean and pretty. The bathrooms and restaurant were not clean.";
6767

68-
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options: new AnalyzeSentimentOptions() { IncludeOpinionMining = true });
68+
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options: new AnalyzeSentimentOptions() { AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining });
6969

7070
CheckAnalyzeSentimentProperties(docSentiment, opinionMining: true);
7171
Assert.AreEqual("Mixed", docSentiment.Sentiment.ToString());
@@ -77,7 +77,7 @@ public async Task AnalyzeSentimentWithOpinionMiningEmpty()
7777
TextAnalyticsClient client = GetClient();
7878
string document = singleEnglish;
7979

80-
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, "en", new AnalyzeSentimentOptions() { IncludeOpinionMining = true });
80+
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, "en", new AnalyzeSentimentOptions() { AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining });
8181

8282
CheckAnalyzeSentimentProperties(docSentiment);
8383
Assert.AreEqual("Positive", docSentiment.Sentiment.ToString());
@@ -89,7 +89,7 @@ public async Task AnalyzeSentimentWithOpinionMiningNegated()
8989
TextAnalyticsClient client = GetClient();
9090
string document = "The bathrooms are not clean.";
9191

92-
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options: new AnalyzeSentimentOptions() { IncludeOpinionMining = true });
92+
DocumentSentiment docSentiment = await client.AnalyzeSentimentAsync(document, options: new AnalyzeSentimentOptions() { AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining });
9393

9494
CheckAnalyzeSentimentProperties(docSentiment, opinionMining: true);
9595
MinedOpinion minedOpinion = docSentiment.Sentences.FirstOrDefault().MinedOpinions.FirstOrDefault();
@@ -151,7 +151,7 @@ public async Task AnalyzeSentimentBatchConvenienceWithOpinionMiningTest()
151151
"The food and service is not good."
152152
};
153153

154-
AnalyzeSentimentResultCollection results = await client.AnalyzeSentimentBatchAsync(documents, options: new AnalyzeSentimentOptions() { IncludeOpinionMining = true });
154+
AnalyzeSentimentResultCollection results = await client.AnalyzeSentimentBatchAsync(documents, options: new AnalyzeSentimentOptions() { AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining });
155155

156156
foreach (AnalyzeSentimentResult docs in results)
157157
{
@@ -334,7 +334,7 @@ public async Task AnalyzeSentimentBatchWithOpinionMiningTest()
334334
}
335335
};
336336

337-
AnalyzeSentimentResultCollection results = await client.AnalyzeSentimentBatchAsync(documents, options: new AnalyzeSentimentOptions() { IncludeOpinionMining = true });
337+
AnalyzeSentimentResultCollection results = await client.AnalyzeSentimentBatchAsync(documents, options: new AnalyzeSentimentOptions() { AdditionalSentimentAnalyses = AdditionalSentimentAnalyses.OpinionMining });
338338

339339
foreach (AnalyzeSentimentResult docs in results)
340340
{

0 commit comments

Comments
 (0)