diff --git a/sdk/textanalytics/azure-ai-textanalytics/README.md b/sdk/textanalytics/azure-ai-textanalytics/README.md index db4cb4450271..83a0be100128 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/README.md +++ b/sdk/textanalytics/azure-ai-textanalytics/README.md @@ -503,7 +503,11 @@ Note: The Healthcare Entities Analysis service is currently available only in th ```python from azure.core.credentials import AzureKeyCredential from azure.ai.textanalytics import ( - TextAnalyticsClient, RecognizeEntitiesAction, RecognizePiiEntitiesAction, ExtractKeyPhrasesAction + TextAnalyticsClient, + RecognizeEntitiesAction, + RecognizePiiEntitiesAction, + ExtractKeyPhrasesAction, + RecognizeLinkedEntitiesAction ) credential = AzureKeyCredential("") @@ -520,6 +524,7 @@ poller = text_analytics_client.begin_analyze_batch_actions( RecognizeEntitiesAction(), RecognizePiiEntitiesAction(), ExtractKeyPhrasesAction(), + RecognizeLinkedEntitiesAction() ] ) @@ -559,6 +564,26 @@ for idx, doc in enumerate(docs): print("Document text: {}\n".format(documents[idx])) print("Key Phrases: {}\n".format(doc.key_phrases)) print("------------------------------------------") + +fourth_action_result = next(result) +print("Results of Linked Entities Recognition action:") +docs = [doc for doc in fourth_action_result.document_results if not doc.is_error] + +for idx, doc in enumerate(docs): + print("Document text: {}\n".format(documents[idx])) + for linked_entity in doc.entities: + print("Entity name: {}".format(linked_entity.name)) + print("...Data source: {}".format(linked_entity.data_source)) + print("...Data source language: {}".format(linked_entity.language)) + print("...Data source entity ID: {}".format(linked_entity.data_source_entity_id)) + print("...Data source URL: {}".format(linked_entity.url)) + print("...Document matches:") + for match in linked_entity.matches: + print("......Match text: {}".format(match.text)) + print(".........Confidence Score: {}".format(match.confidence_score)) + print(".........Offset: {}".format(match.offset)) + print(".........Length: {}".format(match.length)) + print("------------------------------------------") ``` The returned response is an object encapsulating multiple iterables, each representing results of individual analyses. diff --git a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_analyze_healthcare_entities.py b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_analyze_healthcare_entities.py index 1866c63f8fb4..2f56e1d33454 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/samples/sample_analyze_healthcare_entities.py +++ b/sdk/textanalytics/azure-ai-textanalytics/samples/sample_analyze_healthcare_entities.py @@ -116,8 +116,8 @@ def analyze_healthcare_entities(self): for relation in dosage_of_medication_relations: # The DosageOfMedication relation should only contain the dosage and medication roles - dosage_role = next(filter(lambda x: x.name == HealthcareEntityRelationRoleType.DOSAGE, relation.roles)) - medication_role = next(filter(lambda x: x.name == HealthcareEntityRelationRoleType.MEDICATION, relation.roles)) + dosage_role = next(iter(filter(lambda x: x.name == HealthcareEntityRelationRoleType.DOSAGE, relation.roles))) + medication_role = next(iter(filter(lambda x: x.name == HealthcareEntityRelationRoleType.MEDICATION, relation.roles))) try: dosage_value = int(re.findall(r"\d+", dosage_role.entity.text)[0]) # we find the numbers in the dosage @@ -126,12 +126,10 @@ def analyze_healthcare_entities(self): # Error handling for if there's no dosage in numbers. pass - [ + for medication, dosage in medication_to_dosage.items(): print("We have fulfilled '{}' total mg of '{}'".format( dosage, medication )) - for medication, dosage in medication_to_dosage.items() - ] if __name__ == "__main__":