Home
%3CLINGO-SUB%20id%3D%22lingo-sub-1113651%22%20slang%3D%22en-US%22%3ERe%3A%20January%202020%20unified%20Azure%20SDK%20release%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1113651%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F311932%22%20target%3D%22_blank%22%3E%40adrian_hall%3C%2FA%3E%26nbsp%3BThe%20links%20for%20release%20notes%20are%20throwing%20a%20404%20for%20me.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1124721%22%20slang%3D%22en-US%22%3ERe%3A%20January%202020%20unified%20Azure%20SDK%20release%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1124721%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20there%2C%20I%20applaud%20the%20effort%2C%20looks%20promising.%3CBR%20%2F%3EI%20work%20a%20ton%20with%20the%20Azure%20blob%20and%20files%20SDKs%20and%20coming%20from%20V11%20here%20is%20a%20bit%20of%20feedback.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3EV11%20SDKs%20had%20OpenRead()%20and%20OpenWrite()%20for%20the%20BlobClient%20and%20ShareFileClient%20equivalent%20classes%2C%20they%20are%20missing%20from%20V12%2C%20is%20there%20a%20plan%20to%20bring%20that%20back%3F%20What's%20the%20reasoning%20behind%20removing%20those%20methods%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3EBlobClient%20and%20ShareFileClient%20only%20has%20IProgress%3CINT%3E%20as%20a%20param%20for%20Upload()%2C%20what%20about%20Download%3F%20Are%20you%20committed%20to%20IProgress%3CT%3E%20or%20is%20there%20an%20alternative%3F%20There%20are%20other%20ways%20of%20getting%20the%20progress%2C%20just%20wondering%20about%20the%20(lack%20of)%20consistency%20there.%3C%2FT%3E%3C%2FINT%3E%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAs%20far%20as%20I%20can%20tell%2C%20the%20difference%20between%20DownloadAsync%20and%20DownloadToAsync%20is%20DownloadTo%20being%20parallel%2C%20is%20this%20true%3F%3CBR%20%2F%3EWhy%20is%20there%20no%20UploadToAsync%20then%3F%20Also%2C%20ShareFileClient%20is%20missing%20UploadTo%20and%20DownloadTo%20completely.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3EShareFileClient%20missing%20Exists()%2C%20I%20kinda%20wish%20traversing%20Files%20was%20more%20like%20the%20BlobClient%20instead%20of%20having%20to%20traverse%20from%20Share%20to%20Directory%20and%20then%20to%20File.%20V11%20was%20much%20more%20consistent%20in%20this%20regard%20when%20integrating%20with%20both%20Files.Shares%20and%20Blobs%2C%20and%20it's%20called%20the%20Unified%20SDK%2C%20right%3F%20%3B)%3C%2Fimg%3E%20I'm%20primary%20using%20Azure%20functions%20so%20using%20FS%20to%20access%20files%20in%20Files.Shares%20is%20not%20possible.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F311932%22%20target%3D%22_blank%22%3E%40adrian_hall%3C%2FA%3E%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F459374%22%20target%3D%22_blank%22%3E%40LarryOlson%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1097290%22%20slang%3D%22en-US%22%3EJanuary%202020%20unified%20Azure%20SDK%20release%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1097290%22%20slang%3D%22en-US%22%3E%3CP%3EThis%20month%2C%20we%20have%20promoted%20three%20of%20the%20client%20libraries%20to%20general%20availability%2C%20and%20expanded%20our%20service%20support%20to%20include%20a%20preview%20SDK%20for%20our%20Cognitive%20Service%3A%20the%20Azure%20Text%20Analytics%20service.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20new%20generally%20available%20libraries%20being%20released%20this%20month%20are%3A%3C%2FP%3E%0A%3CUL%20class%3D%22added%20rich-diff-level-zero%22%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fazure%2Fazure-app-configuration%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20App%20Configuration%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fkey-vault%2Fcertificate-scenarios%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20Key%20Vault%20Certificates%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fevent-hubs%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20Event%20Hubs%3C%2FA%3E%2C%20%3CSPAN%3E(.NET%20and%20Java%20are%20pending%20final%20validation%2C%20but%20should%20appear%20soon!)%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3EThese%20are%20ready%20to%20use%20in%20your%20production%20applications.%26nbsp%3B%20You%20can%20find%20details%20of%20all%20released%20libraries%20on%20our%20releases%20page.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ENew%20preview%20releases%3A%3C%2FP%3E%0A%3CUL%20class%3D%22added%20rich-diff-level-zero%22%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fstorage%2Fblobs%2Fdata-lake-storage-introduction%3Ftoc%3D%252fazure%252fstorage%252fblobs%252ftoc.json%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20Storage%20Data%20Lake%20Files%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fcognitive-services%2Ftext-analytics%2Findex%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAzure%20Text%20Analytics%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%3EWe%20believe%20these%20are%20ready%20for%20your%20use%2C%20but%20not%20yet%20ready%20for%20production.%26nbsp%3B%20Between%20now%20and%20the%20GA%20release%2C%20these%20libraries%20may%20undergo%20API%20changes.%26nbsp%3B%20We'd%20love%20your%20feedback!%26nbsp%3B%20If%20you%20use%20these%20libraries%20and%20like%20what%20you%20see%2C%20or%20you%20want%20to%20see%20changes%2C%20let%20us%20know%20in%20the%20GitHub%20issues%20for%20the%20appropriate%20language.%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId-1061502326%22%20id%3D%22toc-hId-1061502326%22%3E%3CSPAN%3EGetting%20Started%3C%2FSPAN%3E%3C%2FH3%3E%0A%3CP%20class%3D%22rich-diff-level-zero%22%3EUse%20the%20links%20below%20to%20get%20started%20with%20your%20language%20of%20choice.%20You%20will%20notice%20that%20all%20the%20preview%20libraries%20are%20tagged%20with%20%22preview%22.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22added%20rich-diff-level-zero%22%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fazure.github.io%2Fazure-sdk%2Freleases%2F2020-01%2Fdotnet.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E.NET%20release%20notes%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fazure.github.io%2Fazure-sdk%2Freleases%2F2020-01%2Fjava.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJava%20release%20notes%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fazure.github.io%2Fazure-sdk%2Freleases%2F2020-01%2Fpython.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EPython%20release%20notes%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fazure.github.io%2Fazure-sdk%2Freleases%2F2020-01%2Fjs.html%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJavaScript%20release%20notes%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%20class%3D%22rich-diff-level-zero%22%3EIf%20you%20want%20to%20dive%20deep%20into%20the%20content%2C%20the%20release%20notes%20linked%20above%20and%20the%20change%20logs%20they%20point%20to%20give%20more%20details%20on%20what%20has%20changed.%3C%2FP%3E%0A%3CH3%20class%3D%22rich-diff-level-zero%22%20id%3D%22toc-hId--745952137%22%20id%3D%22toc-hId--745952137%22%3EText%20Analytics%3C%2FH3%3E%0A%3CP%3E%3CSPAN%3EThe%20Text%20Analytics%20API%20is%20part%20of%20the%20Azure%20Cognitive%20Services%20suite%20of%20machine%20learning%20services%20that%20provides%20advanced%20natural%20language%20processing%20over%20raw%20text.%20It%20can%20be%20used%20for%20sentiment%20analysis%2C%20language%20detection%2C%20key%20phrase%20extraction%20and%20entity%20recognition%20(such%20as%20PII).%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThe%20new%20SDK%20supports%20%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fcognitive-services%2Ftext-analytics%2Foverview%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3Eall%20the%20features%3C%2FA%3E%26nbsp%3Bof%20the%20new%20v3.0%20REST%20API%20for%20Text%20Analytics.%20For%20example%2C%20you%20can%20detect%20the%20language%20that%20the%20text%20was%20written%20in%2C%20identify%20PII%20(personally%20identifiable%20information)%2C%20extract%20key%20phrases%2C%20categorize%20concepts%20like%20places%20and%20people%20within%20the%20text%2C%20link%20to%20external%20sources%20(like%20Wikipedia%20or%20Bing)%20for%20disambiguation%2C%20and%20perform%20sentiment%20analysis.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3ETo%20use%20the%20Text%20Analytics%20SDK%2C%20first%20create%20a%20client.%26nbsp%3B%20We'll%20use%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-net%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2FAzure.AI.TextAnalytics%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EC%23%3C%2FA%3E%20for%20this%20months%20snippets%2C%20although%20the%20SDK%20is%20also%20available%20in%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-java%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2Fazure-ai-textanalytics%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EJava%3C%2FA%3E%2C%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-python%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2Fazure-ai-textanalytics%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EPython%3C%2FA%3E%2C%20and%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-js%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2Fai-text-analytics%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EJavaScript%20%2F%20TypeScript%3C%2FA%3E.%20To%20create%20a%20client%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3Evar%20endpoint%20%3D%20new%20Uri(myEndpoint)%3B%0Avar%20client%20%3D%20new%20TextAnalyticsClient(endpoint%2C%20new%20DefaultAzureCredential())%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20%3CTT%3EDefaultAzureCredential()%3C%2FTT%3E%20object%20will%20use%20whatever%20credentials%20it%20can%20find.%26nbsp%3B%20If%20you%20are%20running%20on%20a%20local%20development%20workstation%2C%20it%20will%20use%20the%20user%20credentials%20from%20local%20development%20tools%20like%20Visual%20Studio.%26nbsp%3B%20If%20you%20are%20running%20the%20app%20in%20the%20Azure%20cloud%2C%20it%20will%20use%20the%20connected%20service%20principal.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELet's%20take%20a%20typical%20string%20and%20use%20the%20Text%20Analytics%20API%20to%20obfuscate%20PII%20within%20a%20hypothetical%20logging%20method%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3Evar%20input%20%3D%20%22SSN%20555-55-5555%2C%20phone%3A%20555-555-5555%2C%20some%20other%20info%22%3B%0A%0ARecognizePiiEntitiesResult%20result%20%3D%20client.RecognizePiiEntities(input)%3B%0AIReadOnlyCollection%3CNAMEDENTITY%3E%20entities%20%3D%20result.NamedEntities%3B%0Avar%20output%20%3D%20new%20StringBuilder(input)%3B%0Aforeach%20(var%20entity%20in%20entities)%20%7B%0A%20%20%20%20var%20newText%20%3D%20new%20string('*'%2C%20entity.Length)%3B%0A%20%20%20%20output.Replace(entity.Text%2C%20newText)%3B%0A%7D%0AConsole.WriteLine(output)%3B%3C%2FNAMEDENTITY%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20output%20should%20be%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3ESSN%20***********%2C%20phone%3A%20************%2C%20some%20other%20info%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20personally%20identifiable%20information%20has%20been%20replaced%20with%20something%20innocuous.%26nbsp%3B%20The%20SDK%20has%20both%20synchronous%20and%20asynchronous%20methods%20in%20all%20libraries%2C%20allowing%20you%20the%20flexiblity%20to%20build%20your%20app%20in%20the%20way%20that%20you%20prefer.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3ELet's%20take%20a%20look%20at%20another%20use%20case%20-%20sentiment%20analysis.%20Use%20sentiment%20analysis%20to%20find%20out%20what%20your%20customers%20think%20about%20the%20comments%20that%20they%20write%20in%20social%20media%20or%20other%20channels.%20The%20API%20returns%20a%20score%20between%200%20and%201%20for%20each%20document.%20This%20time%2C%20we%20will%20look%20at%20a%20Python%20example.%20As%20before%2C%20you%20need%20a%20client%20reference%3A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-python%22%3E%3CCODE%3Efrom%20azure.ai.textanalytics%20import%20TextAnalyticsClient%0A%0Aendpoint%20%3D%20os.getenv(%22AZURE_TEXT_ANALYTICS_ENDPOINT%22)%0Aapi_key%20%3D%20os.getenv(%22AZURE_TEXT_ANALYTICS_KEY%22)%0Aclient%20%3D%20TextAnalyticsClient(endpoint%20%3D%20self.endpoint%2C%20credential%3Dself.api_key)%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWith%20a%20reusable%20client%2C%20you%20can%20perform%20any%20of%20the%20text%20analytics%20operations%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-python%22%3E%3CCODE%3Edocs%20%3D%20%5B%0A%20%20%20%20%22This%20speaker%20was%20awesome.%20%20The%20talk%20was%20very%20relevant%20to%20my%20work.%22%2C%0A%20%20%20%20%22How%20boring!%20%20The%20speaker%20was%20monotone%20and%20put%20me%20to%20sleep!%22%0A%5D%0A%0Aapi_result%20%3D%20client.analyze_sentiment(docs)%0Aresults%20%3D%20%5Bdoc%20for%20doc%20in%20api_result%20if%20not%20doc.is_error%5D%0A%0Afor%20idx%2C%20s%20in%20enumerate(results)%3A%0A%20%20print(%22Sentiment%20%3D%20%7B%7D%20for%20doc%20%7B%7D%22.format(s.sentiment%2C%20docs%5Bidx%5D))%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EThis%20gives%20you%20an%20idea%20of%20how%20easy%20sentiment%20analysis%20is%20to%20implement%2C%20but%20there%20is%20much%20more%20power%20there.%20For%20example%2C%20you%20can%20do%20per-sentence%20sentiment%20analysis.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3EBe%20sure%20to%20check%20out%20all%20the%20samples%20for%20Text%20Analytics%20and%20let%20us%20know%20what%20you%20think!%20You%20can%20find%20samples%20for%26nbsp%3B%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-net%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2FAzure.AI.TextAnalytics%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E.NET%3C%2FA%3E%2C%26nbsp%3B%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-java%2Fblob%2Fmaster%2Fsdk%2Ftextanalytics%2Fazure-ai-textanalytics%2Fsrc%2Fsamples%2FREADME.md%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJava%3C%2FA%3E%2C%26nbsp%3B%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-js%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2Fai-text-analytics%2Fsamples%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJavaScript%20%2F%20TypeScript%3C%2FA%3E%2C%20and%26nbsp%3B%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-python%2Ftree%2Fmaster%2Fsdk%2Ftextanalytics%2Fazure-ai-textanalytics%2Fsamples%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EPython%3C%2FA%3E.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId-1741560696%22%20id%3D%22toc-hId-1741560696%22%3E%3CSPAN%3EWorking%20with%20us%20and%20giving%20feedback%3C%2FSPAN%3E%3C%2FH3%3E%0A%3CP%20class%3D%22rich-diff-level-zero%22%3ESo%20far%2C%20the%20community%20has%20filed%20hundreds%20of%20issues%20against%20these%20new%20SDKs%20with%20feedback%20randing%20from%20documentation%20issues%20to%20API%20surface%20area%20change%20requests%20to%20pointing%20out%20failure%20cases.%20Please%20keep%20that%20coming.%20We%20work%20in%20the%20open%20on%20GitHub%20and%20you%20can%20submit%20issues%20here%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22added%20rich-diff-level-zero%22%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EAPI%20design%20guidelines%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-net%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E.NET%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-java%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJava%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-js%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EJavaScript%20%2F%20TypeScript%3C%2FA%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22rich-diff-level-one%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-sdk-for-python%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3EPython%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%20class%3D%22rich-diff-level-zero%22%3EFinally%2C%20please%20keep%20up%20to%20date%20with%20all%20the%20news%20about%20the%20Azure%20developer%20experience%20programs%20and%20let%20us%20know%20how%20we%20are%20doing%20by%20following%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CA%20class%3D%22rich-diff-level-one%22%20href%3D%22https%3A%2F%2Ftwitter.com%2FAzureSDK%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%40azuresdk%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1097290%22%20slang%3D%22en-US%22%3E%3CP%3EThis%20month%2C%20we%20have%20promoted%20three%20of%20the%20client%20libraries%20to%20general%20availability%2C%20and%20expanded%20our%20service%20support%20to%20include%20a%20preview%20SDK%20for%20our%20Cognitive%20Service%3A%20the%20Azure%20Text%20Analytics%20service.%3C%2FP%3E%3C%2FLINGO-TEASER%3E
Microsoft

This month, we have promoted three of the client libraries to general availability, and expanded our service support to include a preview SDK for our Cognitive Service: the Azure Text Analytics service.

 

The new generally available libraries being released this month are:

These are ready to use in your production applications.  You can find details of all released libraries on our releases page.

 

New preview releases:

We believe these are ready for your use, but not yet ready for production.  Between now and the GA release, these libraries may undergo API changes.  We'd love your feedback!  If you use these libraries and like what you see, or you want to see changes, let us know in the GitHub issues for the appropriate language. 

 

Getting Started

Use the links below to get started with your language of choice. You will notice that all the preview libraries are tagged with "preview".

 

If you want to dive deep into the content, the release notes linked above and the change logs they point to give more details on what has changed.

Text Analytics

The Text Analytics API is part of the Azure Cognitive Services suite of machine learning services that provides advanced natural language processing over raw text. It can be used for sentiment analysis, language detection, key phrase extraction and entity recognition (such as PII).

 

The new SDK supports all the features of the new v3.0 REST API for Text Analytics. For example, you can detect the language that the text was written in, identify PII (personally identifiable information), extract key phrases, categorize concepts like places and people within the text, link to external sources (like Wikipedia or Bing) for disambiguation, and perform sentiment analysis.

 

To use the Text Analytics SDK, first create a client.  We'll use C# for this months snippets, although the SDK is also available in Java, Python, and JavaScript / TypeScript. To create a client:

 

 

var endpoint = new Uri(myEndpoint);
var client = new TextAnalyticsClient(endpoint, new DefaultAzureCredential());

 

 

The DefaultAzureCredential() object will use whatever credentials it can find.  If you are running on a local development workstation, it will use the user credentials from local development tools like Visual Studio.  If you are running the app in the Azure cloud, it will use the connected service principal.

 

Let's take a typical string and use the Text Analytics API to obfuscate PII within a hypothetical logging method:

 

 

var input = "SSN 555-55-5555, phone: 555-555-5555, some other info";

RecognizePiiEntitiesResult result = client.RecognizePiiEntities(input);
IReadOnlyCollection<NamedEntity> entities = result.NamedEntities;
var output = new StringBuilder(input);
foreach (var entity in entities) {
    var newText = new string('*', entity.Length);
    output.Replace(entity.Text, newText);
}
Console.WriteLine(output);

 

 

The output should be:

 

 

SSN ***********, phone: ************, some other info

 

 

The personally identifiable information has been replaced with something innocuous.  The SDK has both synchronous and asynchronous methods in all libraries, allowing you the flexiblity to build your app in the way that you prefer.

 

Let's take a look at another use case - sentiment analysis. Use sentiment analysis to find out what your customers think about the comments that they write in social media or other channels. The API returns a score between 0 and 1 for each document. This time, we will look at a Python example. As before, you need a client reference:

 

 

from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.getenv("AZURE_TEXT_ANALYTICS_ENDPOINT")
api_key = os.getenv("AZURE_TEXT_ANALYTICS_KEY")
client = TextAnalyticsClient(endpoint = self.endpoint, credential=self.api_key)

 

 

With a reusable client, you can perform any of the text analytics operations:

 

 

docs = [
    "This speaker was awesome.  The talk was very relevant to my work.",
    "How boring!  The speaker was monotone and put me to sleep!"
]

api_result = client.analyze_sentiment(docs)
results = [doc for doc in api_result if not doc.is_error]

for idx, s in enumerate(results):
  print("Sentiment = {} for doc {}".format(s.sentiment, docs[idx]))

 

 

This gives you an idea of how easy sentiment analysis is to implement, but there is much more power there. For example, you can do per-sentence sentiment analysis.

 

Be sure to check out all the samples for Text Analytics and let us know what you think! You can find samples for .NETJavaJavaScript / TypeScript, and Python.

Working with us and giving feedback

So far, the community has filed hundreds of issues against these new SDKs with feedback randing from documentation issues to API surface area change requests to pointing out failure cases. Please keep that coming. We work in the open on GitHub and you can submit issues here:

 

Finally, please keep up to date with all the news about the Azure developer experience programs and let us know how we are doing by following @azuresdk.

 

2 Comments
Occasional Visitor

Hi there, I applaud the effort, looks promising.
I work a ton with the Azure blob and files SDKs and coming from V11 here is a bit of feedback.

V11 SDKs had OpenRead() and OpenWrite() for the BlobClient and ShareFileClient equivalent classes, they are missing from V12, is there a plan to bring that back? What's the reasoning behind removing those methods?

BlobClient and ShareFileClient only has IProgress<int> as a param for Upload(), what about Download? Are you committed to IProgress<T> or is there an alternative? There are other ways of getting the progress, just wondering about the (lack of) consistency there.


As far as I can tell, the difference between DownloadAsync and DownloadToAsync is DownloadTo being parallel, is this true?
Why is there no UploadToAsync then? Also, ShareFileClient/ShareDirectoryClient is missing UploadTo and DownloadTo completely. Being able to download a directory in parallel could be useful for example.

ShareFileClient missing Exists(), I kinda wish traversing Files was more like the BlobClient instead of having to traverse from Share to Directory and then to File. V11 was much more consistent in this regard when integrating with both Files.Shares and Blobs, and it's called the Unified SDK, right? ;) I'm primary using Azure functions so using FS to access files in Files.Shares is not possible.

 

@adrian_hall @LarryOlson 

Microsoft

Thanks for the feedback.  I've passed this information on to the development team.   If you are able, could you also open up issues in the appropriate repository?  Based on capitalization, I suspect you are using .NET, in which case the repository is https://github.com/azure/azure-sdk-for-net.