Inicio rápido: Uso de Text Analytics para el mantenimiento de la biblioteca cliente y la API de REST
Este artículo contiene Text Analytics de inicios rápidos de mantenimiento que ayudan a usar las bibliotecas cliente admitidas, C#, Java, NodeJS y Python, así como con el uso de la API REST.
Sugerencia
Puede usar Estudio de IA para intentar realizar un resumen sin necesidad de escribir código.
Documentación de referencia | Más ejemplos | Paquete (NuGet) | Código fuente de biblioteca
Use este inicio rápido para crear una instancia de Text Analytics para la aplicación de mantenimiento con la biblioteca cliente de .NET. En el ejemplo siguiente, creará una aplicación de C# que puede identificar entidades, relaciones y aserciones médicas que aparecen en el texto.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- IDE de Visual Studio
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios de IA.
- Necesita la clave y el punto de conexión del recurso que cree para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, va a pegar la clave y el punto de conexión en el código.
- Puede usar el plan de tarifa gratuito (
Free F0
) para probar el servicio (que proporciona 5000 registros de texto, de 1000 caracteres cada uno) y actualizar más adelante al plan de tarifaStandard S
para producción. También puede empezar con el plan de tarifaStandard S
, con el que recibirá la misma cuota inicial gratuita (5000 registros de texto) antes de que se le cobre. Para más información sobre los precios, consulte Precios de servicio de lenguaje.
Instalación
Creación de variables de entorno
La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.
Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.
- Para establecer la variable de entorno
LANGUAGE_KEY
, reemplaceyour-key
por una de las claves del recurso. - Para establecer la variable de entorno
LANGUAGE_ENDPOINT
, reemplaceyour-endpoint
por el punto de conexión del recurso.
Importante
Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información acerca de la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota:
Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set
en vez de con setx
.
Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Creación de una aplicación de .NET Core
Utilice el IDE de Visual Studio para crear una aplicación de consola de .NET Core. Esta acción crea un proyecto "Hola mundo" con un solo archivo de origen de C#: program.cs.
Instale la biblioteca cliente, para lo que debe hacer clic con el botón derecho en la solución en el Explorador de soluciones y seleccionar Administrar paquetes NuGet. En el administrador de paquetes que se abre, seleccione Examinar y busque Azure.AI.TextAnalytics
. Seleccione la versión 5.2.0
e Instalar. También puede usar la Consola del Administrador de paquetes.
Ejemplo de código
Copie el código siguiente en el archivo program.cs. Luego, ejecute el código.
Importante
Vaya a Azure Portal. Si el recurso de lenguaje que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Para encontrar la clave y el punto de conexión, vaya a la página Claves y punto de conexión del recurso, en Administración de recursos.
Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo sobre seguridad de los servicios de Azure AI para más información.
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);
}
}
}
Output
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
Sugerencia
La estructuración de Recursos Rápidos de Interoperabilidad en Salud (FHIR) está disponible usando la API REST Language. Actualmente no se admiten las bibliotecas cliente. Obtenga más información sobre cómo usar la estructura de FHIR en la llamada API.
Documentación de referencia | Más ejemplos | Paquete (Maven) | Código fuente de biblioteca
Use este inicio rápido para crear una instancia de Text Analytics para la aplicación de mantenimiento con la biblioteca cliente de Java. En el ejemplo siguiente, creará una aplicación de Java que pueda identificar entidades, relaciones y aserciones médicas que aparecen en el texto.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Kit de desarrollo de Java (JDK), versión 8 o posterior
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios de IA.
- Necesita la clave y el punto de conexión del recurso que cree para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, va a pegar la clave y el punto de conexión en el código.
- Puede usar el plan de tarifa gratuito (
Free F0
) para probar el servicio (que proporciona 5000 registros de texto, de 1000 caracteres cada uno) y actualizar más adelante al plan de tarifaStandard S
para producción. También puede empezar con el plan de tarifaStandard S
, con el que recibirá la misma cuota inicial gratuita (5000 registros de texto) antes de que se le cobre. Para más información sobre los precios, consulte Precios de servicio de lenguaje.
Instalación
Creación de variables de entorno
La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.
Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.
- Para establecer la variable de entorno
LANGUAGE_KEY
, reemplaceyour-key
por una de las claves del recurso. - Para establecer la variable de entorno
LANGUAGE_ENDPOINT
, reemplaceyour-endpoint
por el punto de conexión del recurso.
Importante
Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información acerca de la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota:
Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set
en vez de con setx
.
Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Incorporación de la biblioteca cliente
Cree un proyecto de Maven en el entorno de desarrollo o IDE que prefiera. Luego, agregue la siguiente dependencia al archivo pom.xml del proyecto. La sintaxis de implementación de otras herramientas de compilación se puede encontrar en línea.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-textanalytics</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
Ejemplo de código
Cree un archivo de Java llamado EntityLinking.java
. Abra el archivo y copie el código siguiente. Luego, ejecute el código.
Importante
Vaya a Azure Portal. Si el recurso de lenguaje que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Para encontrar la clave y el punto de conexión, vaya a la página Claves y punto de conexión del recurso, en Administración de recursos.
Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo sobre seguridad de los servicios de Azure AI para más información.
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());
}
}
}
}
}
}
Output
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.
Sugerencia
La estructuración de Recursos Rápidos de Interoperabilidad en Salud (FHIR) está disponible usando la API REST Language. Actualmente no se admiten las bibliotecas cliente. Obtenga más información sobre cómo usar la estructura de FHIR en la llamada API.
Documentación de referencia | Más ejemplos | Paquete (npm) | Código fuente de biblioteca
Use este inicio rápido para crear una instancia de Text Analytics para la aplicación de mantenimiento con la biblioteca cliente de Node.js. En el ejemplo siguiente, creará una aplicación de JavaScript que puede identificar entidades, relaciones y aserciones médicas que aparecen en el texto.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Node.js v14 LTS o posterior
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios de IA.
- Necesita la clave y el punto de conexión del recurso que cree para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, va a pegar la clave y el punto de conexión en el código.
- Puede usar el plan de tarifa gratuito (
Free F0
) para probar el servicio (que proporciona 5000 registros de texto, de 1000 caracteres cada uno) y actualizar más adelante al plan de tarifaStandard S
para producción. También puede empezar con el plan de tarifaStandard S
, con el que recibirá la misma cuota inicial gratuita (5000 registros de texto) antes de que se le cobre. Para más información sobre los precios, consulte Precios de servicio de lenguaje.
Instalación
Creación de variables de entorno
La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.
Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.
- Para establecer la variable de entorno
LANGUAGE_KEY
, reemplaceyour-key
por una de las claves del recurso. - Para establecer la variable de entorno
LANGUAGE_ENDPOINT
, reemplaceyour-endpoint
por el punto de conexión del recurso.
Importante
Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información acerca de la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota:
Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set
en vez de con setx
.
Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Creación de una aplicación Node.js
En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él.
mkdir myapp
cd myapp
Ejecute el comando npm init
para crear una aplicación de nodo con un archivo package.json
.
npm init
Instalación de la biblioteca cliente
Instale el paquete npm:
npm install @azure/ai-language-text
Ejemplo de código
Abra el archivo y copie el código siguiente. Luego, ejecute el código.
Importante
Vaya a Azure Portal. Si el recurso de lenguaje que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Para encontrar la clave y el punto de conexión, vaya a la página Claves y punto de conexión del recurso, en Administración de recursos.
Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo sobre seguridad de los servicios de Azure AI para más información.
"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);
});
Output
== 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
Sugerencia
La estructuración de Recursos Rápidos de Interoperabilidad en Salud (FHIR) está disponible usando la API REST Language. Actualmente no se admiten las bibliotecas cliente. Obtenga más información sobre cómo usar la estructura de FHIR en la llamada API.
Documentación de referencia | Más ejemplos | Paquete (PyPi) | Código fuente de biblioteca
Use este inicio rápido para crear una instancia de Text Analytics para la aplicación de mantenimiento con la biblioteca cliente de Python. En el ejemplo siguiente, creará una aplicación de Python que puede identificar entidades, relaciones y aserciones médicas que aparecen en el texto.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Python 3.8 o versiones posteriores
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios de IA.
- Necesita la clave y el punto de conexión del recurso que cree para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, va a pegar la clave y el punto de conexión en el código.
- Puede usar el plan de tarifa gratuito (
Free F0
) para probar el servicio (que proporciona 5000 registros de texto, de 1000 caracteres cada uno) y actualizar más adelante al plan de tarifaStandard S
para producción. También puede empezar con el plan de tarifaStandard S
, con el que recibirá la misma cuota inicial gratuita (5000 registros de texto) antes de que se le cobre. Para más información sobre los precios, consulte Precios de servicio de lenguaje.
Instalación
Creación de variables de entorno
La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.
Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.
- Para establecer la variable de entorno
LANGUAGE_KEY
, reemplaceyour-key
por una de las claves del recurso. - Para establecer la variable de entorno
LANGUAGE_ENDPOINT
, reemplaceyour-endpoint
por el punto de conexión del recurso.
Importante
Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información acerca de la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota:
Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set
en vez de con setx
.
Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
Instalación de la biblioteca cliente
Después de instalar Python, puede instalar la biblioteca cliente con:
pip install azure-ai-textanalytics==5.2.0
Ejemplo de código
Cree un nuevo archivo de Python y copie el código siguiente. Luego, ejecute el código.
Importante
Vaya a Azure Portal. Si el recurso de lenguaje que ha creado en la sección Requisitos previos se ha implementado correctamente, haga clic en el botón Ir al recurso en Pasos siguientes. Para encontrar la clave y el punto de conexión, vaya a la página Claves y punto de conexión del recurso, en Administración de recursos.
Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo sobre seguridad de los servicios de Azure AI para más información.
# 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)
Output
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'
Sugerencia
La estructuración de Recursos Rápidos de Interoperabilidad en Salud (FHIR) está disponible usando la API REST Language. Actualmente no se admiten las bibliotecas cliente. Obtenga más información sobre cómo usar la estructura de FHIR en la llamada API.
Use este inicio rápido para enviar solicitudes de detección de idioma mediante la API REST. En el ejemplo siguiente, se usará cURL para identificar entidades, relaciones y aserciones médicas que aparecen en el texto.
Requisitos previos
- La versión actual de cURL
- Una suscripción a Azure: cree una cuenta gratuita.
- Una vez que tenga la suscripción de Azure, cree un recurso de servicios de IA.
- Necesita la clave y el punto de conexión del recurso que cree para conectar la aplicación a la API. En una sección posterior de este mismo inicio rápido, va a pegar la clave y el punto de conexión en el código.
- Puede usar el plan de tarifa gratuito (
Free F0
) para probar el servicio (que proporciona 5000 registros de texto, de 1000 caracteres cada uno) y actualizar más adelante al plan de tarifaStandard S
para producción. También puede empezar con el plan de tarifaStandard S
, con el que recibirá la misma cuota inicial gratuita (5000 registros de texto) antes de que se le cobre. Para más información sobre los precios, consulte Precios de servicio de lenguaje.
Nota
- En los siguientes ejemplos de BASH se usa el carácter de continuación de línea
\
. Si la consola o el terminal usan un carácter de continuación de línea diferente, use ese carácter. - Puede encontrar ejemplos específicos del lenguaje en GitHub.
- Vaya a Azure Portal y busque la clave y el punto de conexión del recurso del idioma que creó en los requisitos previos. Los encontrará en la página de clave y punto de conexión del recurso, en Administración de recursos. A continuación, reemplace las cadenas del código siguiente por su clave y punto de conexión. Para llamar a la API, necesita la siguiente información:
Instalación
Creación de variables de entorno
La aplicación debe autenticarse para enviar solicitudes de API. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas. En este ejemplo, escribirá las credenciales en variables de entorno del equipo local que ejecuta la aplicación.
Para establecer la variable de entorno para la clave del recurso de lenguaje, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y su entorno de desarrollo.
- Para establecer la variable de entorno
LANGUAGE_KEY
, reemplaceyour-key
por una de las claves del recurso. - Para establecer la variable de entorno
LANGUAGE_ENDPOINT
, reemplaceyour-endpoint
por el punto de conexión del recurso.
Importante
Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.
Para más información acerca de la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota:
Si solo necesita acceder a las variables de entorno en la consola que se está ejecutando en este momento, puede establecer la variable de entorno con set
en vez de con setx
.
Después de agregar las variables de entorno, puede que tenga que reiniciar todos los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de consola. Por ejemplo, si usa Visual Studio como editor, reinícielo antes de ejecutar el ejemplo.
parámetro | Descripción |
---|---|
-X POST <endpoint> |
Especifica el punto de conexión para acceder a la API. |
-H Content-Type: application/json |
Tipo de contenido para enviar datos JSON. |
-H "Ocp-Apim-Subscription-Key:<key> |
Especifica la clave para acceder a la API. |
-d <documents> |
JSON que contiene los documentos que desea enviar. |
Los siguientes comandos de cURL se ejecutan desde un shell de BASH. Edite estos comandos con sus propios valores de nombre de recurso, clave de recurso y JSON.
Text Analytics for Health
- Copie el comando en un editor de texto.
- Realice los siguientes cambios en el comando donde sea necesario:
- Reemplace el valor
<your-language-resource-key>
por su clave. - Reemplace la primera parte de la dirección URL de la solicitud (
<your-language-resource-endpoint>
) por la dirección URL de su punto de conexión.
- Reemplace el valor
- Abra una ventana de símbolo del sistema.
- Pegue el comando del editor de texto en la ventana del símbolo del sistema y después ejecute el comando.
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"}}]}'
Obtenga el valor de operation-location
del encabezado de respuesta. El valor será similar a la dirección URL siguiente:
https://your-resource.cognitiveservices.azure.com/language/analyze-text/jobs/{JOB-ID}?api-version=2022-05-15-preview
Para obtener los resultados de la solicitud, use el siguiente comando cURL. Asegúrese de reemplazar {JOB-ID}
por el valor de identificador numérico que recibió del encabezado de respuesta 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"
Respuesta 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"
}
}
]
}
}
Sugerencia
La estructuración de Recursos Rápidos de Interoperabilidad en Salud (FHIR) está disponible usando la API REST Language. Actualmente no se admiten las bibliotecas cliente. Obtenga más información sobre cómo usar la estructura de FHIR en la llamada API.
Limpieza de recursos
Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él.