Guida introduttiva: Uso di Analisi del testo per la libreria client di integrità e l'API REST
Questo articolo contiene Analisi del testo per guide introduttive sull'integrità che consentono di usare le librerie client supportate, C#, Java, NodeJS e Python e l'uso dell'API REST.
Suggerimento
È possibile usare Language Studio per provare le funzionalità del servizio di linguaggio senza dover scrivere codice.
Documentazione | di riferimento Pacchetto di esempi aggiuntivi | (NuGet) | Codice sorgente della libreria
Usare questa guida introduttiva per creare un Analisi del testo per l'applicazione di integrità con la libreria client per .NET. Nell'esempio seguente si creerà un'applicazione C# in grado di identificare entità, relazioni e asserzioni mediche visualizzate nel testo.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- L'IDE di Visual Studio
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa lingua nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- Sarà necessaria la chiave e l'endpoint dalla risorsa creata per connettere l'applicazione all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'argomento di avvio rapido.
- È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio (fornendo 5000 record di testo - 1000 caratteri ciascuno) e aggiornarsi in un secondo momento al piano tariffario per laStandard S
produzione. È anche possibile iniziare con ilStandard S
piano tariffario, ricevendo la stessa quota iniziale gratuitamente (5000 record di testo) prima di ricevere i costi. Per altre informazioni sui prezzi, vedere Prezzi di Language Service.
Configurazione
Creare variabili di ambiente
L'applicazione deve essere autenticata per inviare richieste API. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. In questo esempio si scriveranno le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Suggerimento
Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione come Azure Key Vault, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.
Per impostare la variabile di ambiente per la chiave della risorsa lingua, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.
- Per impostare la
LANGUAGE_KEY
variabile di ambiente, sostituireyour-key
con una delle chiavi per la risorsa. - Per impostare la
LANGUAGE_ENDPOINT
variabile di ambiente, sostituireyour-endpoint
con l'endpoint per la risorsa.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota
Se è sufficiente accedere alle variabili di ambiente nella console in esecuzione corrente, è possibile impostare la variabile di setx
ambiente con set
anziché .
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi in esecuzione che dovranno leggere le variabili di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Creare una nuova applicazione .NET Core
Usando l'IDE di Visual Studio, creare una nuova app console .NET Core. Verrà creato un progetto "Hello World" con un singolo file di origine C#, program.cs.
Installare la libreria client facendo clic con il pulsante destro del mouse sulla soluzione in Esplora soluzioni e scegliendo Gestisci pacchetti NuGet. Nella finestra di dialogo Gestione pacchetti visualizzata selezionare Sfoglia e cercare Azure.AI.TextAnalytics
. Selezionare la versione 5.2.0
, quindi Installa. È anche possibile usare la console di gestione pacchetti.
Esempio di codice
Copiare il codice seguente nel file program.cs . A questo punto, eseguire il codice.
Importante
Vai al portale di Azure. Se la risorsa Lingua creata nella sezione Prerequisiti è stata distribuita correttamente, fare clic sul pulsante Vai alla risorsa in Passaggi successivi. È possibile trovare la chiave e l'endpoint passando alla pagina Chiavi ed endpoint della risorsa in Gestione risorse.
Importante
Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.
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
Documentazione di riferimento | Pacchetto di esempi aggiuntivi | (Maven) | Codice sorgente della libreria
Usare questa guida introduttiva per creare un Analisi del testo per l'applicazione di integrità con la libreria client per Java. Nell'esempio seguente si creerà un'applicazione Java in grado di identificare entità, relazioni e asserzioni mediche visualizzate nel testo.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Java Development Kit (JDK) versione 8 o successiva
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa lingua nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- Sarà necessaria la chiave e l'endpoint dalla risorsa creata per connettere l'applicazione all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'argomento di avvio rapido.
- È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio (fornendo 5000 record di testo - 1000 caratteri ciascuno) e aggiornarsi in un secondo momento al piano tariffario per laStandard S
produzione. È anche possibile iniziare con ilStandard S
piano tariffario, ricevendo la stessa quota iniziale gratuitamente (5000 record di testo) prima di ricevere i costi. Per altre informazioni sui prezzi, vedere Prezzi di Language Service.
Configurazione
Creare variabili di ambiente
L'applicazione deve essere autenticata per inviare richieste API. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. In questo esempio si scriveranno le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Suggerimento
Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione come Azure Key Vault, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.
Per impostare la variabile di ambiente per la chiave della risorsa lingua, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.
- Per impostare la
LANGUAGE_KEY
variabile di ambiente, sostituireyour-key
con una delle chiavi per la risorsa. - Per impostare la
LANGUAGE_ENDPOINT
variabile di ambiente, sostituireyour-endpoint
con l'endpoint per la risorsa.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota
Se è sufficiente accedere alle variabili di ambiente nella console in esecuzione corrente, è possibile impostare la variabile di setx
ambiente con set
anziché .
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi in esecuzione che dovranno leggere le variabili di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Aggiungere la libreria client
Creare un progetto Maven nell'ambiente IDE o di sviluppo preferito. Aggiungere quindi la dipendenza seguente al file pom.xml del progetto. È possibile trovare la sintassi di implementazione per altri strumenti di compilazione online.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-textanalytics</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
Esempio di codice
Creare un file Java denominato EntityLinking.java
. Aprire il file e copiare il codice seguente. A questo punto, eseguire il codice.
Importante
Vai al portale di Azure. Se la risorsa Lingua creata nella sezione Prerequisiti è stata distribuita correttamente, fare clic sul pulsante Vai alla risorsa in Passaggi successivi. È possibile trovare la chiave e l'endpoint passando alla pagina Chiavi ed endpoint della risorsa in Gestione risorse.
Importante
Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.
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.
Documentazione di riferimento | Pacchetto di esempi aggiuntivi | (npm) | Codice sorgente della libreria
Usare questa guida introduttiva per creare un Analisi del testo per l'applicazione di integrità con la libreria client per Node.js. Nell'esempio seguente si creerà un'applicazione JavaScript in grado di identificare entità mediche, relazioni e asserzioni visualizzate nel testo.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Node.js v14 LTS o versioni successive
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa lingua nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- Sarà necessaria la chiave e l'endpoint dalla risorsa creata per connettere l'applicazione all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'argomento di avvio rapido.
- È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio (fornendo 5000 record di testo - 1000 caratteri ciascuno) e aggiornarsi in un secondo momento al piano tariffario per laStandard S
produzione. È anche possibile iniziare con ilStandard S
piano tariffario, ricevendo la stessa quota iniziale gratuitamente (5000 record di testo) prima di ricevere i costi. Per altre informazioni sui prezzi, vedere Prezzi di Language Service.
Configurazione
Creare variabili di ambiente
L'applicazione deve essere autenticata per inviare richieste API. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. In questo esempio si scriveranno le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Suggerimento
Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione come Azure Key Vault, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.
Per impostare la variabile di ambiente per la chiave della risorsa lingua, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.
- Per impostare la
LANGUAGE_KEY
variabile di ambiente, sostituireyour-key
con una delle chiavi per la risorsa. - Per impostare la
LANGUAGE_ENDPOINT
variabile di ambiente, sostituireyour-endpoint
con l'endpoint per la risorsa.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota
Se è sufficiente accedere alle variabili di ambiente nella console in esecuzione corrente, è possibile impostare la variabile di setx
ambiente con set
anziché .
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi in esecuzione che dovranno leggere le variabili di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Creare una nuova applicazione Node.js
In una finestra della console, ad esempio cmd, PowerShell o Bash, creare e passare a una nuova directory per l'app.
mkdir myapp
cd myapp
Eseguire il comando npm init
per creare un'applicazione Node con un file package.json
.
npm init
Installare la libreria client
Installare il pacchetto npm:
npm install @azure/ai-language-text
Esempio di codice
Aprire il file e copiare il codice seguente. A questo punto, eseguire il codice.
Importante
Vai al portale di Azure. Se la risorsa Lingua creata nella sezione Prerequisiti è stata distribuita correttamente, fare clic sul pulsante Vai alla risorsa in Passaggi successivi. È possibile trovare la chiave e l'endpoint passando alla pagina Chiavi ed endpoint della risorsa in Gestione risorse.
Importante
Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.
"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
Documentazione di riferimento | Codice sorgente del pacchetto di esempi aggiuntivi | (PyPi)Library |
Usare questa guida introduttiva per creare un Analisi del testo per l'applicazione di integrità con la libreria client per Python. Nell'esempio seguente si creerà un'applicazione Python in grado di identificare entità, relazioni e asserzioni mediche visualizzate nel testo.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Python 3.8 o versione successiva
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa lingua nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- Sarà necessaria la chiave e l'endpoint dalla risorsa creata per connettere l'applicazione all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'argomento di avvio rapido.
- È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio (fornendo 5000 record di testo - 1000 caratteri ciascuno) e aggiornarsi in un secondo momento al piano tariffario per laStandard S
produzione. È anche possibile iniziare con ilStandard S
piano tariffario, ricevendo la stessa quota iniziale gratuitamente (5000 record di testo) prima di ricevere i costi. Per altre informazioni sui prezzi, vedere Prezzi di Language Service.
Configurazione
Creare variabili di ambiente
L'applicazione deve essere autenticata per inviare richieste API. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. In questo esempio si scriveranno le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Suggerimento
Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione come Azure Key Vault, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.
Per impostare la variabile di ambiente per la chiave della risorsa lingua, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.
- Per impostare la
LANGUAGE_KEY
variabile di ambiente, sostituireyour-key
con una delle chiavi per la risorsa. - Per impostare la
LANGUAGE_ENDPOINT
variabile di ambiente, sostituireyour-endpoint
con l'endpoint per la risorsa.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota
Se è sufficiente accedere alle variabili di ambiente nella console in esecuzione corrente, è possibile impostare la variabile di setx
ambiente con set
anziché .
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi in esecuzione che dovranno leggere le variabili di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
Installare la libreria client
Dopo l'installazione di Python, è possibile installare la libreria client con:
pip install azure-ai-textanalytics==5.2.0
Esempio di codice
Creare un nuovo file Python e copiare il codice seguente. A questo punto, eseguire il codice.
Importante
Vai al portale di Azure. Se la risorsa Lingua creata nella sezione Prerequisiti è stata distribuita correttamente, fare clic sul pulsante Vai alla risorsa in Passaggi successivi. È possibile trovare la chiave e l'endpoint passando alla pagina Chiavi ed endpoint della risorsa in Gestione risorse.
Importante
Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.
# 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'
Usare questa guida introduttiva per inviare richieste di rilevamento della lingua usando l'API REST. Nell'esempio seguente si userà cURL per identificare entità mediche, relazioni e asserzioni visualizzate nel testo.
Prerequisiti
- Versione corrente di cURL
- Sottoscrizione di Azure: creare un account gratuitamente
- Dopo aver creato la sottoscrizione di Azure, creare una risorsa lingua nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- Sarà necessaria la chiave e l'endpoint dalla risorsa creata per connettere l'applicazione all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'argomento di avvio rapido.
- È possibile usare il piano tariffario gratuito (
Free F0
) per provare il servizio (fornendo 5000 record di testo - 1000 caratteri ciascuno) e aggiornarsi in un secondo momento al piano tariffario per laStandard S
produzione. È anche possibile iniziare con ilStandard S
piano tariffario, ricevendo la stessa quota iniziale gratuitamente (5000 record di testo) prima di ricevere i costi. Per altre informazioni sui prezzi, vedere Prezzi di Language Service.
Nota
- Negli esempi BASH seguenti viene usato il carattere di continuazione riga
\
. Se la console o il terminale usa un carattere di continuazione riga diverso, usare questo carattere. - È possibile trovare esempi specifici del linguaggio in GitHub.
- Passare al portale di Azure e trovare la chiave e l'endpoint per la risorsa Lingua creata nei prerequisiti. Si trovano nella pagina Chiave ed endpoint della risorsa, in Gestione risorse. Sostituire quindi le stringhe nel codice seguente con la chiave e l'endpoint. Per chiamare l'API, sono necessarie le informazioni seguenti:
Configurazione
Creare variabili di ambiente
L'applicazione deve essere autenticata per inviare richieste API. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. In questo esempio si scriveranno le credenziali nelle variabili di ambiente nel computer locale che esegue l'applicazione.
Suggerimento
Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione come Azure Key Vault, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.
Per impostare la variabile di ambiente per la chiave della risorsa lingua, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.
- Per impostare la
LANGUAGE_KEY
variabile di ambiente, sostituireyour-key
con una delle chiavi per la risorsa. - Per impostare la
LANGUAGE_ENDPOINT
variabile di ambiente, sostituireyour-endpoint
con l'endpoint per la risorsa.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Nota
Se è sufficiente accedere alle variabili di ambiente nella console in esecuzione corrente, è possibile impostare la variabile di setx
ambiente con set
anziché .
Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi in esecuzione che dovranno leggere le variabili di ambiente, inclusa la finestra della console. Se ad esempio si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.
parameter | Descrizione |
---|---|
-X POST <endpoint> |
Specifica l'endpoint per l'accesso all'API. |
-H Content-Type: application/json |
Il tipo di contenuto per l'invio di dati JSON. |
-H "Ocp-Apim-Subscription-Key:<key> |
Specifica la chiave per l'accesso all'API. |
-d <documents> |
Il codice JSON contenente i documenti da inviare. |
I comandi cURL seguenti vengono eseguiti da una shell BASH. Modificare questi comandi con il nome e la chiave della risorsa e con i valori del file JSON.
Text Analytics for Health
- Copiare il comando in un editor di testo.
- Apportare le modifiche seguenti nel comando, se necessario:
- Sostituire il valore
<your-language-resource-key>
con la propria chiave. - Sostituire la prima parte dell'URL
<your-language-resource-endpoint>
della richiesta con l'URL dell'endpoint.
- Sostituire il valore
- Aprire una finestra del prompt dei comandi.
- Incollare il comando dall'editor di testo nella finestra del prompt dei comandi e quindi eseguire il 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"}}]}'
Ottenere l'oggetto operation-location
dall'intestazione della risposta. Il valore sarà simile all'URL seguente:
https://your-resource.cognitiveservices.azure.com/language/analyze-text/jobs/{JOB-ID}?api-version=2022-05-15-preview
Per ottenere i risultati della richiesta, usare il comando cURL seguente. Assicurarsi di sostituire {JOB-ID}
con il valore ID numerico ricevuto dall'intestazione della risposta precedente operation-location
:
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"
Risposta 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"
}
}
]
}
}
Pulire le risorse
Se si vuole pulire e rimuovere una sottoscrizione dei servizi di intelligenza artificiale di Azure, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate.