(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar uma classificadora de texto em Azure AI & Machine Learning

João Barros 17 de September de 2026 4 min de leitura

Este tutorial mostra como criar uma classificadora de texto usando Azure AI & Machine Learning para categorizar mensagens ou avaliações. Aprender a treinar, registar e expor um modelo como endpoint é útil para automatizar a triagem de conteúdos, o suporte ao cliente ou a análise de feedback.

Pré-requisitos

  • Conta Azure com permissões para criar recursos (Azure Machine Learning Workspace).
  • Azure CLI e extensão Azure ML instalada ou acesso ao Azure Machine Learning studio.
  • Python 3.8+ e pip; pacotes: azure-ai-ml, scikit-learn, pandas.
  • Conjunto de dados simples de texto com coluna "text" e coluna "label" (CSV).

Passo 1: Preparar o ambiente e o dataset

Porquê: é importante ter um ambiente replicável e um conjunto de dados limpo. Vamos criar um virtualenv, instalar dependências e preparar um CSV com exemplos rotulados.

python -m venv venv
source venv/bin/activate   # ou venv\Scripts\activate no Windows
pip install --upgrade pip
pip install azure-ai-ml scikit-learn pandas joblib

# Exemplo mínimo de dataset (criar text_labels.csv):
# text,label
# "Entrega atrasada",complaint
# "Excelente produto",praise

Passo 2: Treinar um modelo localmente (exemplo com scikit-learn)

Porquê: treinar localmente permite iterar rapidamente. Usamos um Pipeline com CountVectorizer e LogisticRegression e guardamos o modelo com joblib.

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
import joblib

df = pd.read_csv('text_labels.csv')
X_train, X_test, y_train, y_test = train_test_split(df['text'], df['label'], test_size=0.2, random_state=42)
model = make_pipeline(CountVectorizer(), LogisticRegression(max_iter=1000))
model.fit(X_train, y_train)
print('Acurácia:', model.score(X_test, y_test))
joblib.dump(model, 'text_classifier.joblib')

Passo 3: Registar o modelo no Azure Machine Learning

Porquê: registar modelos facilita a gestão de versões e a implantação. Vamos usar azure-ai-ml para registar o ficheiro do modelo salvo.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Model

# Defina estas variáveis de ambiente ou substitua diretamente
subscription_id = ''
resource_group = ''
workspace_name = ''

ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name)
model = Model(path='text_classifier.joblib', name='text-classifier', description='Classifier scikit-learn simple')
registered_model = ml_client.models.create_or_update(model)
print('Model registered:', registered_model.name, registered_model.version)

Passo 4: Criar uma imagem de contentor ou endpoint em tempo real

Porquê: expor o modelo como endpoint permite invocar previsões a partir de aplicações. Aqui descrevo de forma simples como criar um endpoint em tempo real com um script de scoring mínimo.

# scoring_script.py (mínimo)
import json
import joblib

model = None

def init():
    global model
    model = joblib.load('text_classifier.joblib')

def run(raw_data):
    data = json.loads(raw_data)
    texts = data.get('texts', [])
    preds = model.predict(texts)
    return json.dumps({'predictions': preds.tolist()})

Depois, no Azure ML, cria-se um Deployment (real-time) apontando para o modelo registado e para o script de scoring. No studio ou via CLI/azure-ai-ml, configure a imagem/contentor com dependências (scikit-learn) e suba o ficheiro do modelo e o scoring.

Passo 5: Testar o endpoint com uma requisição

Porquê: validar o endpoint garante que o pipeline fim a fim funciona. Usamos curl ou requests em Python para enviar textos e obter classes.

# Exemplo em Python usando requests (obter URL e chave do endpoint no Azure ML)
import requests
import json

endpoint_url = 'https:///score'
api_key = ''
headers = {'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}'}
payload = json.dumps({'texts': ['Entrega atrasada e sem resposta', 'Adorei a qualidade']})
resp = requests.post(endpoint_url, headers=headers, data=payload)
print(resp.json())

Verificar o resultado

Confirme que o modelo responde ao endpoint e que as previsões fazem sentido: a resposta JSON deve conter as labels esperadas. Verifique métricas locais (accuracy, matriz de confusão) e os logs do deployment para erros comuns como falta de dependências ou caminhos incorretos.

Conclusão

Agora tem um fluxo básico: treinar localmente, registar o modelo no Azure Machine Learning e expor como endpoint em tempo real. Próximos passos: melhorar o conjunto de dados, usar validação cruzada, experimentar modelos pré-treinados de NLP ou converter o pipeline para um Job no Azure ML para treino automatizado. Dica: comece por rotular bem os exemplos mais frequentes para obter ganhos rápidos no desempenho.