Start Debugging

Como detectar o idioma do texto usando o serviço Azure AI Language

Aprenda a detectar o idioma de um texto usando o serviço Azure AI Language, incluindo provisionamento, payloads da API e exemplos com o SDK em C# usando TextAnalyticsClient.

O serviço Azure AI Language oferece aos desenvolvedores uma API para técnicas comuns de análise de texto, como detectar o idioma do texto, fazer análise de sentimento, extração de frases-chave e reconhecimento e vinculação de entidades nomeadas.

Provisionamento

O primeiro passo para analisar texto com o Azure AI Language é provisionar um recurso Language service no Azure. Para fins de teste, você pode usar o nível gratuito F0, que tem um limite de 5000 transações por mês.

Além dos limites do nível, você também precisa considerar os limites de requisição:

Depois que o recurso for criado, navegue até Keys and Endpoint para obter a URL do endpoint e a chave de autorização (qualquer uma das duas funciona). Vamos precisar delas mais adiante, quando começarmos a fazer chamadas à API.

API de detecção de idioma

A API de detecção de idioma recebe um ou mais documentos de texto e, para cada um deles, retorna o idioma detectado junto com uma pontuação de confiança. Isso é útil ao lidar com textos arbitrários, quando você não sabe qual é o idioma do conteúdo e isso pode ter um papel importante em análises ou ações subsequentes. Por exemplo, em um cenário de chatbot, você pode usar essa informação para atender o usuário no idioma dele.

Cada documento de entrada é composto pelo seu conteúdo text e por um id único (único no contexto desta requisição). Você também pode informar um countryHint para cada documento de entrada para melhorar o desempenho da predição.

Vamos olhar um exemplo de payload JSON:

{
  "kind": "LanguageDetection",
  "parameters": {
    "modelVersion": "latest"
  },
  "analysisInput": {
    "documents": [
      {
        "id": "1",
        "text": "Good morning",
        "countryHint": "US"
      },
      {
        "id": "2",
        "text": "Hello, je m'appelle Marius!"
      }
    ]
  }
}

Para cada documento de entrada, receberemos de volta o idioma detectado (name e iso6391Name) junto com uma pontuação de confiança e uma lista de avisos (se houver).

{
  "kind": "LanguageDetectionResults",
  "results": {
    "documents": [
      {
        "detectedLanguage": {
          "confidenceScore": 1,
          "iso6391Name": "en",
          "name": "English"
        },
        "id": "1",
        "warnings": []
      },
      {
        "detectedLanguage": {
          "confidenceScore": 0.98,
          "iso6391Name": "fr",
          "name": "French"
        },
        "id": "2",
        "warnings": []
      }
    ],
    "errors": [],
    "modelVersion": "2022-10-01"
  }
}

Caso o serviço não consiga entender o texto de entrada, o idioma será (Unknown), com um confidenceScore de 0.

Testando

Para testar a API de detecção de idioma, crie uma nova aplicação de console e instale o pacote NuGet Azure.AI.TextAnalytics. Depois que o pacote estiver instalado, começamos criando uma instância de TextAnalyticsClient.

using Azure.AI.TextAnalytics;
using Azure;

var aiClient = new TextAnalyticsClient(
    new Uri("https://my-service.cognitiveservices.azure.com/"),
    new AzureKeyCredential("98c1961504db412c9fd36d15984c9d9e"));

Lembre-se de substituir o endpoint e a chave de autorização pelos dados obtidos na página Keys and Endpoint do seu próprio recurso. Feito isso, você está pronto para chamar o serviço.

O TextAnalyticsClient fornece dois métodos para detectar o idioma:

Vamos pegá-los um a um. Primeiro, detectando o idioma de um único trecho de texto:

var response = await aiClient.DetectLanguageAsync("Hello, world!");
var detectedLanguage = response.Value;

DetectLanguageAsync retorna um Task<Response<DetectedLanguage>>, então, para chegar ao DetectedLanguage em si, precisamos acessar .Value no resultado da tarefa. A resposta será assim:

{
  "Name": "English",
  "Iso6391Name": "en",
  "ConfidenceScore": 1,
  "Warnings": []
}

Agora um cenário mais complexo, em que, como no exemplo de payload JSON acima, enviamos múltiplos documentos com identificadores únicos associados e, para um deles, também fornecemos um CountryHint. O código fica assim:

var inputDocuments = new DetectLanguageInput[]
{
    new("1", "Good morning") { CountryHint = "US" },
    new("2", "Hello, je m'appelle Marius!"),
};

var detectedLanguages = (await aiClient.DetectLanguageBatchAsync(inputDocuments)).Value;

detectedLanguages é do tipo DetectLanguageResultCollection, que na verdade é uma ReadOnlyCollection com algumas informações adicionais por cima (estatísticas sobre o lote de documentos e como ele foi processado pelo serviço, além da versão do modelo do serviço Language usada para a operação).

[
  {
    "PrimaryLanguage": {
      "Name": "English",
      "Iso6391Name": "en",
      "ConfidenceScore": 1,
      "Warnings": []
    },
    "Id": "1"
  },
  {
    "PrimaryLanguage": {
      "Name": "French",
      "Iso6391Name": "fr",
      "ConfidenceScore": 0.98,
      "Warnings": []
    },
    "Id": "2"
  }
]

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar