Início Rápido: como usar a Análise de Texto para a biblioteca de clientes e a API REST
Este artigo contém Análise de Texto para inícios rápidos de integridade que ajudam a usar as bibliotecas de cliente com suporte, C#, Java, NodeJS e Python, bem como com o uso da API REST.
Dica
Use o Language Studio para experimentar os recursos do serviço de linguagem sem a necessidade de gravar o código.
Documentação de referência | Amostras adicionais | Pacote (NuGet) | Código-fonte da biblioteca
Use este início rápido para criar uma Análise de Texto para o aplicativo de integridade com a biblioteca de clientes para .NET. No exemplo a seguir, você criará um aplicativo C# que pode identificar entidades médicas, relações e declarações que aparecem no texto.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- O IDE do Visual Studio
- Após obter sua assinatura do Azure, crie um recurso de Linguagem no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.
- Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
- Você pode usar o tipo de preço gratuito (
Free F0
) para experimentar o serviço (fornecendo 5.000 registros de texto – 1.000 caracteres cada) e atualizar posteriormente para o tipo de preçoStandard S
para produção. Você também pode começar com o tipo de preçoStandard S
, recebendo a mesma cota inicial gratuitamente (5.000 registros de texto) antes de ser cobrado. Para obter mais informações sobre preços, visite Preço do Serviço de Linguagem.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY
, substituayour-key
por uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT
, substituayour-endpoint
pelo ponto de extremidade do recurso.
Importante
Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set
em vez de setx
.
Após adicionar as variáveis de ambiente, é aconselhável reiniciar todos os programas em execução que precisarem ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
Criar um aplicativo .NET Core
Usando o IDE do Visual Studio, crie um aplicativo de console do .NET Core. Isso criará um projeto "Olá, Mundo" com um arquivo de origem C#: program.cs.
Instale a biblioteca de cliente clicando com o botão direito do mouse na solução no Gerenciador de Soluções e selecionando Gerenciar Pacotes do NuGet. No gerenciador de pacotes que é aberto, selecione Procurar e pesquise por Azure.AI.TextAnalytics
. Selecione a versão 5.2.0
e, em seguida, Instalar. Você também pode usar o Console do Gerenciador de Pacotes.
Exemplo de código
Copie o código a seguir para o arquivo program.cs. Depois, execute o código.
Importante
Vá para o portal do Azure. Se o recurso de Linguagem que você criou na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Ir para o recurso em Próximas Etapas. Para encontrar a chave e o ponto de extremidade, acesse a página Chaves e Ponto de Extremidade do recurso em Gerenciamento de Recursos.
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.
using Azure;
using System;
using Azure.AI.TextAnalytics;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Example
{
class Program
{
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
private static readonly AzureKeyCredential credentials = new (Environment.GetEnvironmentVariable("LANGUAGE_KEY"));
private static readonly Uri endpoint = new (Environment.GetEnvironmentVariable("LANGUAGE_ENDPOINT"));
// Example method for extracting information from healthcare-related text
static async Task healthExample(TextAnalyticsClient client)
{
string document = "Prescribed 100mg ibuprofen, taken twice daily.";
List<string> batchInput = new List<string>()
{
document
};
AnalyzeHealthcareEntitiesOperation healthOperation = await client.StartAnalyzeHealthcareEntitiesAsync(batchInput);
await healthOperation.WaitForCompletionAsync();
await foreach (AnalyzeHealthcareEntitiesResultCollection documentsInPage in healthOperation.Value)
{
Console.WriteLine($"Results of Azure Text Analytics for health async model, version: \"{documentsInPage.ModelVersion}\"");
Console.WriteLine("");
foreach (AnalyzeHealthcareEntitiesResult entitiesInDoc in documentsInPage)
{
if (!entitiesInDoc.HasError)
{
foreach (var entity in entitiesInDoc.Entities)
{
// view recognized healthcare entities
Console.WriteLine($" Entity: {entity.Text}");
Console.WriteLine($" Category: {entity.Category}");
Console.WriteLine($" Offset: {entity.Offset}");
Console.WriteLine($" Length: {entity.Length}");
Console.WriteLine($" NormalizedText: {entity.NormalizedText}");
}
Console.WriteLine($" Found {entitiesInDoc.EntityRelations.Count} relations in the current document:");
Console.WriteLine("");
// view recognized healthcare relations
foreach (HealthcareEntityRelation relations in entitiesInDoc.EntityRelations)
{
Console.WriteLine($" Relation: {relations.RelationType}");
Console.WriteLine($" For this relation there are {relations.Roles.Count} roles");
// view relation roles
foreach (HealthcareEntityRelationRole role in relations.Roles)
{
Console.WriteLine($" Role Name: {role.Name}");
Console.WriteLine($" Associated Entity Text: {role.Entity.Text}");
Console.WriteLine($" Associated Entity Category: {role.Entity.Category}");
Console.WriteLine("");
}
Console.WriteLine("");
}
}
else
{
Console.WriteLine(" Error!");
Console.WriteLine($" Document error code: {entitiesInDoc.Error.ErrorCode}.");
Console.WriteLine($" Message: {entitiesInDoc.Error.Message}");
}
Console.WriteLine("");
}
}
}
static async Task Main(string[] args)
{
var client = new TextAnalyticsClient(endpoint, credentials);
await healthExample(client);
}
}
}
Saída
Results of Azure Text Analytics for health async model, version: "2022-03-01"
Entity: 100mg
Category: Dosage
Offset: 11
Length: 5
NormalizedText:
Entity: ibuprofen
Category: MedicationName
Offset: 17
Length: 9
NormalizedText: ibuprofen
Entity: twice daily
Category: Frequency
Offset: 34
Length: 11
NormalizedText:
Found 2 relations in the current document:
Relation: DosageOfMedication
For this relation there are 2 roles
Role Name: Dosage
Associated Entity Text: 100mg
Associated Entity Category: Dosage
Role Name: Medication
Associated Entity Text: ibuprofen
Associated Entity Category: MedicationName
Relation: FrequencyOfMedication
For this relation there are 2 roles
Role Name: Medication
Associated Entity Text: ibuprofen
Associated Entity Category: MedicationName
Role Name: Frequency
Associated Entity Text: twice daily
Associated Entity Category: Frequency
Dica
A estruturação do recurso FHIR (Fast Healthcare Interoperability Resources) está disponível para visualização usando a API REST de Linguagem. No momento, não há suporte para as bibliotecas de cliente. Saiba mais sobre como usar a estruturação FHIR na chamada à API.
Documentação de referência | Amostras adicionais | Pacote (Maven) | Código-fonte da biblioteca
Use este início rápido para criar uma Análise de Texto para o aplicativo de integridade com a biblioteca de clientes para Java. No exemplo a seguir, você criará um aplicativo Java que pode identificar entidades médicas, relações e declarações que aparecem no texto.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- JDK (Java Development Kit) com a versão 8 ou superior
- Após obter sua assinatura do Azure, crie um recurso de Linguagem no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.
- Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
- Você pode usar o tipo de preço gratuito (
Free F0
) para experimentar o serviço (fornecendo 5.000 registros de texto – 1.000 caracteres cada) e atualizar posteriormente para o tipo de preçoStandard S
para produção. Você também pode começar com o tipo de preçoStandard S
, recebendo a mesma cota inicial gratuitamente (5.000 registros de texto) antes de ser cobrado. Para obter mais informações sobre preços, visite Preço do Serviço de Linguagem.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY
, substituayour-key
por uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT
, substituayour-endpoint
pelo ponto de extremidade do recurso.
Importante
Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set
em vez de setx
.
Após adicionar as variáveis de ambiente, é aconselhável reiniciar todos os programas em execução que precisarem ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
Adicionar a biblioteca de clientes
Crie um projeto Maven no IDE ou no ambiente de desenvolvimento de sua preferência. Em seguida, adicione a dependência a seguir ao arquivo pom.xml do projeto. Você pode encontrar a sintaxe de implementação para outras ferramentas de build online.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-textanalytics</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
Exemplo de código
Crie um arquivo Java chamado EntityLinking.java
. Abra o arquivo e copie o código abaixo. Depois, execute o código.
Importante
Vá para o portal do Azure. Se o recurso de Linguagem que você criou na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Ir para o recurso em Próximas Etapas. Para encontrar a chave e o ponto de extremidade, acesse a página Chaves e Ponto de Extremidade do recurso em Gerenciamento de Recursos.
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.
import com.azure.core.credential.AzureKeyCredential;
import com.azure.ai.textanalytics.models.*;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.TextAnalyticsClient;
import java.util.List;
import java.util.Arrays;
import com.azure.core.util.Context;
import com.azure.core.util.polling.SyncPoller;
import com.azure.ai.textanalytics.util.*;
public class Example {
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
private static String KEY = System.getenv("LANGUAGE_KEY");
private static String ENDPOINT = System.getenv("LANGUAGE_ENDPOINT");
public static void main(String[] args) {
TextAnalyticsClient client = authenticateClient(languageKey, languageEndpoint);
healthExample(client);
}
// Method to authenticate the client object with your key and endpoint
static TextAnalyticsClient authenticateClient(String key, String endpoint) {
return new TextAnalyticsClientBuilder()
.credential(new AzureKeyCredential(key))
.endpoint(endpoint)
.buildClient();
}
// Example method for extracting information from healthcare-related text
static void healthExample(TextAnalyticsClient client){
List<TextDocumentInput> documents = Arrays.asList(
new TextDocumentInput("0",
"Prescribed 100mg ibuprofen, taken twice daily."));
AnalyzeHealthcareEntitiesOptions options = new AnalyzeHealthcareEntitiesOptions().setIncludeStatistics(true);
SyncPoller<AnalyzeHealthcareEntitiesOperationDetail, AnalyzeHealthcareEntitiesPagedIterable>
syncPoller = client.beginAnalyzeHealthcareEntities(documents, options, Context.NONE);
System.out.printf("Poller status: %s.%n", syncPoller.poll().getStatus());
syncPoller.waitForCompletion();
// Task operation statistics
AnalyzeHealthcareEntitiesOperationDetail operationResult = syncPoller.poll().getValue();
System.out.printf("Operation created time: %s, expiration time: %s.%n",
operationResult.getCreatedAt(), operationResult.getExpiresAt());
System.out.printf("Poller status: %s.%n", syncPoller.poll().getStatus());
for (AnalyzeHealthcareEntitiesResultCollection resultCollection : syncPoller.getFinalResult()) {
// Model version
System.out.printf(
"Results of Azure Text Analytics for health entities\" Model, version: %s%n",
resultCollection.getModelVersion());
for (AnalyzeHealthcareEntitiesResult healthcareEntitiesResult : resultCollection) {
System.out.println("Document ID = " + healthcareEntitiesResult.getId());
System.out.println("Document entities: ");
// Recognized healthcare entities
for (HealthcareEntity entity : healthcareEntitiesResult.getEntities()) {
System.out.printf(
"\tText: %s, normalized name: %s, category: %s, subcategory: %s, confidence score: %f.%n",
entity.getText(), entity.getNormalizedText(), entity.getCategory(),
entity.getSubcategory(), entity.getConfidenceScore());
}
// Recognized healthcare entity relation groups
for (HealthcareEntityRelation entityRelation : healthcareEntitiesResult.getEntityRelations()) {
System.out.printf("Relation type: %s.%n", entityRelation.getRelationType());
for (HealthcareEntityRelationRole role : entityRelation.getRoles()) {
HealthcareEntity entity = role.getEntity();
System.out.printf("\tEntity text: %s, category: %s, role: %s.%n",
entity.getText(), entity.getCategory(), role.getName());
}
}
}
}
}
}
Saída
Poller status: IN_PROGRESS.
Operation created time: 2022-09-15T19:06:11Z, expiration time: 2022-09-16T19:06:11Z.
Poller status: SUCCESSFULLY_COMPLETED.
Results of Azure Text Analytics for health entities" Model, version: 2022-03-01
Document ID = 0
Document entities:
Text: 100mg, normalized name: null, category: Dosage, subcategory: null, confidence score: 0.980000.
Text: ibuprofen, normalized name: ibuprofen, category: MedicationName, subcategory: null, confidence score: 1.000000.
Text: twice daily, normalized name: null, category: Frequency, subcategory: null, confidence score: 1.000000.
Relation type: DosageOfMedication.
Entity text: 100mg, category: Dosage, role: Dosage.
Entity text: ibuprofen, category: MedicationName, role: Medication.
Relation type: FrequencyOfMedication.
Entity text: ibuprofen, category: MedicationName, role: Medication.
Entity text: twice daily, category: Frequency, role: Frequency.
Dica
A estruturação do recurso FHIR (Fast Healthcare Interoperability Resources) está disponível para visualização usando a API REST de Linguagem. No momento, não há suporte para as bibliotecas de cliente. Saiba mais sobre como usar a estruturação FHIR na chamada à API.
Documentação de referência | Amostras adicionais | Pacote (npm) | Código-fonte da biblioteca
Use este início rápido para criar uma Análise de Texto para o aplicativo de integridade com a biblioteca de clientes para Node.js. No exemplo a seguir, você criará um aplicativo JavaScrip que pode identificar entidades médicas, relações e declarações que aparecem no texto.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Node.js v14 LTS ou posterior
- Após obter sua assinatura do Azure, crie um recurso de Linguagem no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.
- Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
- Você pode usar o tipo de preço gratuito (
Free F0
) para experimentar o serviço (fornecendo 5.000 registros de texto – 1.000 caracteres cada) e atualizar posteriormente para o tipo de preçoStandard S
para produção. Você também pode começar com o tipo de preçoStandard S
, recebendo a mesma cota inicial gratuitamente (5.000 registros de texto) antes de ser cobrado. Para obter mais informações sobre preços, visite Preço do Serviço de Linguagem.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY
, substituayour-key
por uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT
, substituayour-endpoint
pelo ponto de extremidade do recurso.
Importante
Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set
em vez de setx
.
Após adicionar as variáveis de ambiente, é aconselhável reiniciar todos os programas em execução que precisarem ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
Criar um novo aplicativo do Node.js
Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele.
mkdir myapp
cd myapp
Execute o comando npm init
para criar um aplicativo do Node com um arquivo package.json
.
npm init
Instalar a biblioteca de clientes
Instale o pacote npm:
npm install @azure/ai-language-text
Exemplo de código
Abra o arquivo e copie o código abaixo. Depois, execute o código.
Importante
Vá para o portal do Azure. Se o recurso de Linguagem que você criou na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Ir para o recurso em Próximas Etapas. Para encontrar a chave e o ponto de extremidade, acesse a página Chaves e Ponto de Extremidade do recurso em Gerenciamento de Recursos.
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.
"use strict";
const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
const key = process.env.LANGUAGE_KEY;
const endpoint = process.env.LANGUAGE_ENDPOINT;
const documents = ["Patient does not suffer from high blood pressure."];
async function main() {
console.log("== Text analytics for health sample ==");
const client = new TextAnalysisClient(endpoint, new AzureKeyCredential(key));
const actions = [
{
kind: "Healthcare",
},
];
const poller = await client.beginAnalyzeBatch(actions, documents, "en");
poller.onProgress(() => {
console.log(
`Last time the operation was updated was on: ${poller.getOperationState().modifiedOn}`
);
});
console.log(`The operation was created on ${poller.getOperationState().createdOn}`);
console.log(`The operation results will expire on ${poller.getOperationState().expiresOn}`);
const results = await poller.pollUntilDone();
for await (const actionResult of results) {
if (actionResult.kind !== "Healthcare") {
throw new Error(`Expected a healthcare results but got: ${actionResult.kind}`);
}
if (actionResult.error) {
const { code, message } = actionResult.error;
throw new Error(`Unexpected error (${code}): ${message}`);
}
for (const result of actionResult.results) {
console.log(`- Document ${result.id}`);
if (result.error) {
const { code, message } = result.error;
throw new Error(`Unexpected error (${code}): ${message}`);
}
console.log("\tRecognized Entities:");
for (const entity of result.entities) {
console.log(`\t- Entity "${entity.text}" of type ${entity.category}`);
if (entity.dataSources.length > 0) {
console.log("\t and it can be referenced in the following data sources:");
for (const ds of entity.dataSources) {
console.log(`\t\t- ${ds.name} with Entity ID: ${ds.entityId}`);
}
}
}
if (result.entityRelations.length > 0) {
console.log(`\tRecognized relations between entities:`);
for (const relation of result.entityRelations) {
console.log(
`\t\t- Relation of type ${relation.relationType} found between the following entities:`
);
for (const role of relation.roles) {
console.log(`\t\t\t- "${role.entity.text}" with the role ${role.name}`);
}
}
}
}
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Saída
== Text analytics for health sample ==
The operation was created on Mon Feb 13 2023 13:12:10 GMT-0800 (Pacific Standard Time)
The operation results will expire on Tue Feb 14 2023 13:12:10 GMT-0800 (Pacific Standard Time)
Last time the operation was updated was on: Mon Feb 13 2023 13:12:10 GMT-0800 (Pacific Standard Time)
- Document 0
Recognized Entities:
- Entity "high blood pressure" of type SymptomOrSign
and it can be referenced in the following data sources:
- UMLS with Entity ID: C0020538
- AOD with Entity ID: 0000023317
- BI with Entity ID: BI00001
- CCPSS with Entity ID: 1017493
- CCS with Entity ID: 7.1
- CHV with Entity ID: 0000015800
- COSTAR with Entity ID: 397
- CSP with Entity ID: 0571-5243
- CST with Entity ID: HYPERTENS
- DXP with Entity ID: U002034
- HPO with Entity ID: HP:0000822
- ICD10 with Entity ID: I10-I15.9
- ICD10AM with Entity ID: I10-I15.9
- ICD10CM with Entity ID: I10
- ICD9CM with Entity ID: 997.91
- ICPC2ICD10ENG with Entity ID: MTHU035456
- ICPC2P with Entity ID: K85004
- LCH with Entity ID: U002317
- LCH_NW with Entity ID: sh85063723
- LNC with Entity ID: LA14293-7
- MDR with Entity ID: 10020772
- MEDCIN with Entity ID: 33288
- MEDLINEPLUS with Entity ID: 34
- MSH with Entity ID: D006973
- MTH with Entity ID: 005
- MTHICD9 with Entity ID: 997.91
- NANDA-I with Entity ID: 00905
- NCI with Entity ID: C3117
- NCI_CPTAC with Entity ID: C3117
- NCI_CTCAE with Entity ID: E13785
- NCI_CTRP with Entity ID: C3117
- NCI_FDA with Entity ID: 1908
- NCI_GDC with Entity ID: C3117
- NCI_NCI-GLOSS with Entity ID: CDR0000458091
- NCI_NICHD with Entity ID: C3117
- NCI_caDSR with Entity ID: C3117
- NOC with Entity ID: 060808
- OMIM with Entity ID: MTHU002068
- PCDS with Entity ID: PRB_11000.06
- PDQ with Entity ID: CDR0000686951
- PSY with Entity ID: 23830
- RCD with Entity ID: XE0Ub
- SNM with Entity ID: F-70700
- SNMI with Entity ID: D3-02000
- SNOMEDCT_US with Entity ID: 38341003
- WHO with Entity ID: 0210
Dica
A estruturação do recurso FHIR (Fast Healthcare Interoperability Resources) está disponível para visualização usando a API REST de Linguagem. No momento, não há suporte para as bibliotecas de cliente. Saiba mais sobre como usar a estruturação FHIR na chamada à API.
Documentação de referência | Amostras adicionais | Pacote (PyPi) | Código-fonte da biblioteca
Use este início rápido para criar uma Análise de Texto para o aplicativo de integridade com a biblioteca de clientes para Python. No exemplo a seguir, você criará um aplicativo Python que pode identificar entidades médicas, relações e declarações que aparecem no texto.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Python 3.8 ou posterior
- Após obter sua assinatura do Azure, crie um recurso de Linguagem no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.
- Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
- Você pode usar o tipo de preço gratuito (
Free F0
) para experimentar o serviço (fornecendo 5.000 registros de texto – 1.000 caracteres cada) e atualizar posteriormente para o tipo de preçoStandard S
para produção. Você também pode começar com o tipo de preçoStandard S
, recebendo a mesma cota inicial gratuitamente (5.000 registros de texto) antes de ser cobrado. Para obter mais informações sobre preços, visite Preço do Serviço de Linguagem.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY
, substituayour-key
por uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT
, substituayour-endpoint
pelo ponto de extremidade do recurso.
Importante
Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set
em vez de setx
.
Após adicionar as variáveis de ambiente, é aconselhável reiniciar todos os programas em execução que precisarem ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
Instalar a biblioteca de clientes
Depois de instalar o Python, você pode instalar a biblioteca de clientes com:
pip install azure-ai-textanalytics==5.2.0
Exemplo de código
Crie um novo arquivo Python e copie o código abaixo. Depois, execute o código.
Importante
Vá para o portal do Azure. Se o recurso de Linguagem que você criou na seção Pré-requisitos tiver sido implantado com êxito, clique no botão Ir para o recurso em Próximas Etapas. Para encontrar a chave e o ponto de extremidade, acesse a página Chaves e Ponto de Extremidade do recurso em Gerenciamento de Recursos.
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Confira o artigo sobre segurança dos serviços de IA do Azure para obter mais informações.
# This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
key = os.environ.get('LANGUAGE_KEY')
endpoint = os.environ.get('LANGUAGE_ENDPOINT')
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
# Authenticate the client using your key and endpoint
def authenticate_client():
ta_credential = AzureKeyCredential(key)
text_analytics_client = TextAnalyticsClient(
endpoint=endpoint,
credential=ta_credential)
return text_analytics_client
client = authenticate_client()
# Example function for extracting information from healthcare-related text
def health_example(client):
documents = [
"""
Patient needs to take 50 mg of ibuprofen.
"""
]
poller = client.begin_analyze_healthcare_entities(documents)
result = poller.result()
docs = [doc for doc in result if not doc.is_error]
for idx, doc in enumerate(docs):
for entity in doc.entities:
print("Entity: {}".format(entity.text))
print("...Normalized Text: {}".format(entity.normalized_text))
print("...Category: {}".format(entity.category))
print("...Subcategory: {}".format(entity.subcategory))
print("...Offset: {}".format(entity.offset))
print("...Confidence score: {}".format(entity.confidence_score))
for relation in doc.entity_relations:
print("Relation of type: {} has the following roles".format(relation.relation_type))
for role in relation.roles:
print("...Role '{}' with entity '{}'".format(role.name, role.entity.text))
print("------------------------------------------")
health_example(client)
Saída
Entity: 50 mg
...Normalized Text: None
...Category: Dosage
...Subcategory: None
...Offset: 31
...Confidence score: 1.0
Entity: ibuprofen
...Normalized Text: ibuprofen
...Category: MedicationName
...Subcategory: None
...Offset: 40
...Confidence score: 1.0
Relation of type: DosageOfMedication has the following roles
...Role 'Dosage' with entity '50 mg'
...Role 'Medication' with entity 'ibuprofen'
Dica
A estruturação do recurso FHIR (Fast Healthcare Interoperability Resources) está disponível para visualização usando a API REST de Linguagem. No momento, não há suporte para as bibliotecas de cliente. Saiba mais sobre como usar a estruturação FHIR na chamada à API.
Use este início rápido para enviar solicitações de detecção de linguagem usando a API REST. No exemplo a seguir, você usará o cURL para identificar entidades médicas, relações e declarações que aparecem no texto.
Pré-requisitos
- A versão atual do cURL
- Uma assinatura do Azure – crie uma gratuitamente
- Após obter sua assinatura do Azure, crie um recurso de Linguagem no portal do Azure para obter a chave e o ponto de extremidade. Após a implantação, selecione Ir para recurso.
- Você precisará da chave e do ponto de extremidade do recurso criado para conectar seu aplicativo à API. Cole a chave e o ponto de extremidade no código abaixo mais adiante no guia de início rápido.
- Você pode usar o tipo de preço gratuito (
Free F0
) para experimentar o serviço (fornecendo 5.000 registros de texto – 1.000 caracteres cada) e atualizar posteriormente para o tipo de preçoStandard S
para produção. Você também pode começar com o tipo de preçoStandard S
, recebendo a mesma cota inicial gratuitamente (5.000 registros de texto) antes de ser cobrado. Para obter mais informações sobre preços, visite Preço do Serviço de Linguagem.
Observação
- Os exemplos de BASH a seguir usam o caractere de continuação de linha
\
. Se o console ou o terminal usar um caractere de continuação de linha diferente, use aquele caractere. - Você pode encontrar exemplos específicos de cada linguagem de programação no GitHub.
- Acesse o portal do Azure e localize a chave e o ponto de extremidade do recurso de Linguagem criados nos pré-requisitos. Eles estarão localizados na página de chave e ponto de extremidade do recurso, em gerenciamento de recursos. Em seguida, substitua as cadeias de caracteres no código abaixo pela chave e o ponto de extremidade. Para chamar a API, você precisará das seguintes informações:
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY
, substituayour-key
por uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT
, substituayour-endpoint
pelo ponto de extremidade do recurso.
Importante
Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Azure Key Vault. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set
em vez de setx
.
Após adicionar as variáveis de ambiente, é aconselhável reiniciar todos os programas em execução que precisarem ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
parâmetro | Descrição |
---|---|
-X POST <endpoint> |
Especifica o ponto de extremidade para acessar a API. |
-H Content-Type: application/json |
Tipo de conteúdo para enviar dados JSON. |
-H "Ocp-Apim-Subscription-Key:<key> |
Especifica a chave para acessar a API. |
-d <documents> |
JSON contendo os documentos que você deseja enviar. |
Os comandos cURL a seguir são executados por meio de um shell BASH. Edite esses comandos com o nome do recurso, a chave do recurso e os valores de JSON desejados.
Análise de Texto para integridade
- Copie o comando para um editor de texto.
- Faça as alterações a seguir no comando quando necessário:
- Substitua o valor
<your-language-resource-key>
pela chave. - Substitua a primeira parte da URL de solicitação
<your-language-resource-endpoint>
pela sua URL do ponto de extremidade.
- Substitua o valor
- Abra una janela de prompt de comando.
- Cole o comando do editor de texto na janela do prompt de comando e, em seguida, execute-o.
curl -i -X POST $LANGUAGE_ENDPOINT/language/analyze-text/jobs?api-version=2022-05-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" \
-d '{"analysisInput":{"documents": [{"text": "The doctor prescried 200mg Ibuprofen.","language": "en","id": "1"}]},"tasks":[{"taskId": "analyze 1","kind": "Healthcare","parameters": {"fhirVersion": "4.0.1"}}]}'
Obtenha operation-location
do cabeçalho de resposta. O valor será parecido com a seguinte URL:
https://your-resource.cognitiveservices.azure.com/language/analyze-text/jobs/{JOB-ID}?api-version=2022-05-15-preview
Para obter os resultados da solicitação, use o comando cURL a seguir. Substitua {JOB-ID}
pelo valor de ID numérica recebido do cabeçalho de resposta operation-location
anterior:
curl -X GET $LANGUAGE_ENDPOINT/language/analyze-text/jobs/{JOB-ID}?api-version=2022-05-15-preview \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY"
Resposta JSON
{
"jobId": "{JOB-ID}",
"lastUpdatedDateTime": "2022-06-27T22:04:39Z",
"createdDateTime": "2022-06-27T22:04:38Z",
"expirationDateTime": "2022-06-28T22:04:38Z",
"status": "succeeded",
"errors": [],
"tasks": {
"completed": 1,
"failed": 0,
"inProgress": 0,
"total": 1,
"items": [
{
"kind": "HealthcareLROResults",
"lastUpdateDateTime": "2022-06-27T22:04:39.7086762Z",
"status": "succeeded",
"results": {
"documents": [
{
"id": "1",
"entities": [
{
"offset": 4,
"length": 6,
"text": "doctor",
"category": "HealthcareProfession",
"confidenceScore": 0.76
},
{
"offset": 21,
"length": 5,
"text": "200mg",
"category": "Dosage",
"confidenceScore": 0.99
},
{
"offset": 27,
"length": 9,
"text": "Ibuprofen",
"category": "MedicationName",
"confidenceScore": 1.0,
"name": "ibuprofen",
"links": [
{
"dataSource": "UMLS",
"id": "C0020740"
},
{
"dataSource": "AOD",
"id": "0000019879"
},
{
"dataSource": "ATC",
"id": "M01AE01"
},
{
"dataSource": "CCPSS",
"id": "0046165"
},
{
"dataSource": "CHV",
"id": "0000006519"
},
{
"dataSource": "CSP",
"id": "2270-2077"
},
{
"dataSource": "DRUGBANK",
"id": "DB01050"
},
{
"dataSource": "GS",
"id": "1611"
},
{
"dataSource": "LCH_NW",
"id": "sh97005926"
},
{
"dataSource": "LNC",
"id": "LP16165-0"
},
{
"dataSource": "MEDCIN",
"id": "40458"
},
{
"dataSource": "MMSL",
"id": "d00015"
},
{
"dataSource": "MSH",
"id": "D007052"
},
{
"dataSource": "MTHSPL",
"id": "WK2XYI10QM"
},
{
"dataSource": "NCI",
"id": "C561"
},
{
"dataSource": "NCI_CTRP",
"id": "C561"
},
{
"dataSource": "NCI_DCP",
"id": "00803"
},
{
"dataSource": "NCI_DTP",
"id": "NSC0256857"
},
{
"dataSource": "NCI_FDA",
"id": "WK2XYI10QM"
},
{
"dataSource": "NCI_NCI-GLOSS",
"id": "CDR0000613511"
},
{
"dataSource": "NDDF",
"id": "002377"
},
{
"dataSource": "PDQ",
"id": "CDR0000040475"
},
{
"dataSource": "RCD",
"id": "x02MO"
},
{
"dataSource": "RXNORM",
"id": "5640"
},
{
"dataSource": "SNM",
"id": "E-7772"
},
{
"dataSource": "SNMI",
"id": "C-603C0"
},
{
"dataSource": "SNOMEDCT_US",
"id": "387207008"
},
{
"dataSource": "USP",
"id": "m39860"
},
{
"dataSource": "USPMG",
"id": "MTHU000060"
},
{
"dataSource": "VANDF",
"id": "4017840"
}
]
}
],
"relations": [
{
"relationType": "DosageOfMedication",
"entities": [
{
"ref": "#/results/documents/0/entities/1",
"role": "Dosage"
},
{
"ref": "#/results/documents/0/entities/2",
"role": "Medication"
}
]
}
],
"warnings": [],
"fhirBundle": {
"resourceType": "Bundle",
"id": "95d61191-402a-48c6-9657-a1e4efbda877",
"meta": {
"profile": [
"http://hl7.org/fhir/4.0.1/StructureDefinition/Bundle"
]
},
"identifier": {
"system": "urn:ietf:rfc:3986",
"value": "urn:uuid:95d61191-402a-48c6-9657-a1e4efbda877"
},
"type": "document",
"entry": [
{
"fullUrl": "Composition/34b666d3-45e7-474d-a398-d3b0329541ad",
"resource": {
"resourceType": "Composition",
"id": "34b666d3-45e7-474d-a398-d3b0329541ad",
"status": "final",
"type": {
"coding": [
{
"system": "http://loinc.org",
"code": "11526-1",
"display": "Pathology study"
}
],
"text": "Pathology study"
},
"subject": {
"reference": "Patient/68dd21ce-58ae-4e59-9445-8331f99899ed",
"type": "Patient"
},
"encounter": {
"reference": "Encounter/90c75fea-4526-4e94-82f8-8df3bc983a14",
"type": "Encounter",
"display": "unknown"
},
"date": "2022-06-27",
"author": [
{
"reference": "Practitioner/a8ef1526-d4ce-41df-96df-e9d03428c840",
"type": "Practitioner",
"display": "Unknown"
}
],
"title": "Pathology study",
"section": [
{
"title": "General",
"code": {
"coding": [
{
"system": "",
"display": "Unrecognized Section"
}
],
"text": "General"
},
"text": {
"div": "<div>\r\n\t\t\t\t\t\t\t<h1>General</h1>\r\n\t\t\t\t\t\t\t<p>The doctor prescried 200mg Ibuprofen.</p>\r\n\t\t\t\t\t</div>"
},
"entry": [
{
"reference": "List/c8ca6757-1d7c-4c49-94e9-ef5263cb943c",
"type": "List",
"display": "General"
}
]
}
]
}
},
{
"fullUrl": "Practitioner/a8ef1526-d4ce-41df-96df-e9d03428c840",
"resource": {
"resourceType": "Practitioner",
"id": "a8ef1526-d4ce-41df-96df-e9d03428c840",
"extension": [
{
"extension": [
{
"url": "offset",
"valueInteger": -1
},
{
"url": "length",
"valueInteger": 7
}
],
"url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
}
],
"name": [
{
"text": "Unknown",
"family": "Unknown"
}
]
}
},
{
"fullUrl": "Patient/68dd21ce-58ae-4e59-9445-8331f99899ed",
"resource": {
"resourceType": "Patient",
"id": "68dd21ce-58ae-4e59-9445-8331f99899ed",
"gender": "unknown"
}
},
{
"fullUrl": "Encounter/90c75fea-4526-4e94-82f8-8df3bc983a14",
"resource": {
"resourceType": "Encounter",
"id": "90c75fea-4526-4e94-82f8-8df3bc983a14",
"meta": {
"profile": [
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter"
]
},
"status": "finished",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"display": "unknown"
},
"subject": {
"reference": "Patient/68dd21ce-58ae-4e59-9445-8331f99899ed",
"type": "Patient"
}
}
},
{
"fullUrl": "MedicationStatement/17aeee32-1189-47fc-9223-8abe174f1292",
"resource": {
"resourceType": "MedicationStatement",
"id": "17aeee32-1189-47fc-9223-8abe174f1292",
"extension": [
{
"extension": [
{
"url": "offset",
"valueInteger": 27
},
{
"url": "length",
"valueInteger": 9
}
],
"url": "http://hl7.org/fhir/StructureDefinition/derivation-reference"
}
],
"status": "active",
"medicationCodeableConcept": {
"coding": [
{
"system": "http://www.nlm.nih.gov/research/umls",
"code": "C0020740",
"display": "ibuprofen"
},
{
"system": "http://www.nlm.nih.gov/research/umls/aod",
"code": "0000019879"
},
{
"system": "http://www.whocc.no/atc",
"code": "M01AE01"
},
{
"system": "http://www.nlm.nih.gov/research/umls/ccpss",
"code": "0046165"
},
{
"system": "http://www.nlm.nih.gov/research/umls/chv",
"code": "0000006519"
},
{
"system": "http://www.nlm.nih.gov/research/umls/csp",
"code": "2270-2077"
},
{
"system": "http://www.nlm.nih.gov/research/umls/drugbank",
"code": "DB01050"
},
{
"system": "http://www.nlm.nih.gov/research/umls/gs",
"code": "1611"
},
{
"system": "http://www.nlm.nih.gov/research/umls/lch_nw",
"code": "sh97005926"
},
{
"system": "http://loinc.org",
"code": "LP16165-0"
},
{
"system": "http://www.nlm.nih.gov/research/umls/medcin",
"code": "40458"
},
{
"system": "http://www.nlm.nih.gov/research/umls/mmsl",
"code": "d00015"
},
{
"system": "http://www.nlm.nih.gov/research/umls/msh",
"code": "D007052"
},
{
"system": "http://www.nlm.nih.gov/research/umls/mthspl",
"code": "WK2XYI10QM"
},
{
"system": "http://ncimeta.nci.nih.gov",
"code": "C561"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_ctrp",
"code": "C561"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_dcp",
"code": "00803"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_dtp",
"code": "NSC0256857"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_fda",
"code": "WK2XYI10QM"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nci_nci-gloss",
"code": "CDR0000613511"
},
{
"system": "http://www.nlm.nih.gov/research/umls/nddf",
"code": "002377"
},
{
"system": "http://www.nlm.nih.gov/research/umls/pdq",
"code": "CDR0000040475"
},
{
"system": "http://www.nlm.nih.gov/research/umls/rcd",
"code": "x02MO"
},
{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "5640"
},
{
"system": "http://snomed.info/sct",
"code": "E-7772"
},
{
"system": "http://snomed.info/sct/900000000000207008",
"code": "C-603C0"
},
{
"system": "http://snomed.info/sct/731000124108",
"code": "387207008"
},
{
"system": "http://www.nlm.nih.gov/research/umls/usp",
"code": "m39860"
},
{
"system": "http://www.nlm.nih.gov/research/umls/uspmg",
"code": "MTHU000060"
},
{
"system": "http://hl7.org/fhir/ndfrt",
"code": "4017840"
}
],
"text": "Ibuprofen"
},
"subject": {
"reference": "Patient/68dd21ce-58ae-4e59-9445-8331f99899ed",
"type": "Patient"
},
"context": {
"reference": "Encounter/90c75fea-4526-4e94-82f8-8df3bc983a14",
"type": "Encounter",
"display": "unknown"
},
"dosage": [
{
"text": "200mg",
"doseAndRate": [
{
"doseQuantity": {
"value": 200
}
}
]
}
]
}
},
{
"fullUrl": "List/c8ca6757-1d7c-4c49-94e9-ef5263cb943c",
"resource": {
"resourceType": "List",
"id": "c8ca6757-1d7c-4c49-94e9-ef5263cb943c",
"status": "current",
"mode": "snapshot",
"title": "General",
"subject": {
"reference": "Patient/68dd21ce-58ae-4e59-9445-8331f99899ed",
"type": "Patient"
},
"encounter": {
"reference": "Encounter/90c75fea-4526-4e94-82f8-8df3bc983a14",
"type": "Encounter",
"display": "unknown"
},
"entry": [
{
"item": {
"reference": "MedicationStatement/17aeee32-1189-47fc-9223-8abe174f1292",
"type": "MedicationStatement",
"display": "Ibuprofen"
}
}
]
}
}
]
}
}
],
"errors": [],
"modelVersion": "2022-03-01"
}
}
]
}
}
Dica
A estruturação do recurso FHIR (Fast Healthcare Interoperability Resources) está disponível para visualização usando a API REST de Linguagem. No momento, não há suporte para as bibliotecas de cliente. Saiba mais sobre como usar a estruturação FHIR na chamada à API.
Limpar os recursos
Se quiser limpar e remover uma assinatura dos Serviços de IA do Azure, você poderá excluir o recurso ou grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.