Salta el contingut

1. Guia Pràctica: Azure AI Language (Capa Gratuïta)

1.1. Introducció

Azure AI Language ofereix capacitats de processament del llenguatge natural (NLP) per analitzar text: sentiment, entitats, frases clau, idioma detectat, i molt més. Tot sense entrenar cap model.

1.1.1. Límits de la capa gratuïta (F0)

  • 5.000 transaccions/mes gratuïtes
  • Fins a 5.120 caràcters per sol·licitud
  • Sense cost de desplegament

1.2. Prerequisits

  • Compte d'Azure actiu
  • Python 3.8 o superior
  • Connexió a internet

1.3. Pas 1: Crear el recurs al portal d'Azure

  1. Ves a portal.azure.com
  2. Cerca "Language service"
  3. Fes clic a "Crear"
  4. Omple els camps:
  5. Grup de recursos: rg-ia-practica (el mateix d'abans)
  6. Regió: West Europe
  7. Nom: un nom únic (p.ex. language-practica-2024)
  8. Nivell de preus: F0 (Gratuït)
  9. Fes clic a "Revisar i crear""Crear"

Copia l'Endpoint i la Clau des de "Claus i punt de connexió".


1.4. Pas 2: Instal·lar les dependències

Bash
pip install azure-ai-textanalytics

1.5. Pas 3: Anàlisi de sentiment

Crea un fitxer language_sentiment.py:

Python
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

ENDPOINT = "https://<el-teu-endpoint>.cognitiveservices.azure.com/"
KEY = "<la-teva-clau>"

client = TextAnalyticsClient(
    endpoint=ENDPOINT,
    credential=AzureKeyCredential(KEY)
)

documents = [
    "M'encanta aquest producte, és fantàstic!",
    "El servei al client va ser horrible i molt lent.",
    "El menjar estava bé, ni molt bo ni molt dolent.",
]

response = client.analyze_sentiment(documents=documents, language="ca")

for i, doc in enumerate(response):
    print(f"\nText: {documents[i]}")
    print(f"Sentiment general: {doc.sentiment}")
    print(f"  Positiu:  {doc.confidence_scores.positive:.2f}")
    print(f"  Neutral:  {doc.confidence_scores.neutral:.2f}")
    print(f"  Negatiu:  {doc.confidence_scores.negative:.2f}")

1.6. Pas 4: Extracció de frases clau i entitats

Crea un fitxer language_entities.py:

Python
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential

ENDPOINT = "https://<el-teu-endpoint>.cognitiveservices.azure.com/"
KEY = "<la-teva-clau>"

client = TextAnalyticsClient(
    endpoint=ENDPOINT,
    credential=AzureKeyCredential(KEY)
)

documents = [
    "La Microsoft va fundar-se el 1975 a Albuquerque, Nou Mèxic, per Bill Gates i Paul Allen.",
    "Barcelona és la capital de Catalunya i té una població de més d'1,6 milions d'habitants."
]

# Frases clau
print("=== FRASES CLAU ===")
kp_response = client.extract_key_phrases(documents=documents, language="ca")
for i, doc in enumerate(kp_response):
    print(f"\nDocument {i+1}: {documents[i][:50]}...")
    print(f"  Frases clau: {', '.join(doc.key_phrases)}")

# Entitats nombrades (NER)
print("\n=== ENTITATS RECONEGUDES ===")
ner_response = client.recognize_entities(documents=documents, language="ca")
for i, doc in enumerate(ner_response):
    print(f"\nDocument {i+1}:")
    for entity in doc.entities:
        print(f"  - '{entity.text}' → {entity.category} (confiança: {entity.confidence_score:.2f})")

# Detecció d'idioma
print("\n=== DETECCIÓ D'IDIOMA ===")
mixed_docs = ["Hello, how are you?", "Bonjour tout le monde", "Hola, ¿cómo estás?", "Bon dia, com esteu?"]
lang_response = client.detect_language(documents=mixed_docs)
for i, doc in enumerate(lang_response):
    print(f"  '{mixed_docs[i]}' → {doc.primary_language.name} ({doc.primary_language.iso6391_name})")

1.7. Pas 5: Respostes a preguntes (Question Answering)

Aquest servei permet crear una base de coneixement i fer-li preguntes en llenguatge natural.

Python
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.core.credentials import AzureKeyCredential

# Nota: requereix crear un projecte de Question Answering al Language Studio
ENDPOINT = "https://<el-teu-endpoint>.cognitiveservices.azure.com/"
KEY = "<la-teva-clau>"

client = QuestionAnsweringClient(endpoint=ENDPOINT, credential=AzureKeyCredential(KEY))

# Resposta sobre text directe (sense base de coneixement)
output = client.get_answers_from_text(
    question="Qui va fundar Microsoft?",
    text_documents=[
        "Microsoft va ser fundada el 1975 per Bill Gates i Paul Allen a Albuquerque."
    ],
    language="ca"
)

for answer in output.answers:
    print(f"Resposta: {answer.answer}")
    print(f"Confiança: {answer.confidence:.2f}")

1.8. Exercicis proposats

  1. Nivell bàsic: Analitza el sentiment de 10 ressenyes de productes (pots inventar-les o extreure-les d'internet).
  2. Nivell mitjà: Crea un script que llegeixi un fitxer de text i extregui totes les entitats (persones, llocs, organitzacions) i les guardi en un CSV.
  3. Nivell avançat: Construeix un classificador de tickets de suport que, donat un text, determini si és una queixa, una pregunta o un agraïment.

1.9. Errors habituals

Error Causa Solució
AuthenticationFailure Clau incorrecta Verifica la clau al portal
InvalidLanguageCode Codi d'idioma no vàlid Usa "ca", "es", "en"
DocumentTooLong Text supera 5.120 caràcters Divideix el text en fragments
QuotaExceeded Superat el límit mensual Espera al mes següent

1.10. Recursos addicionals