Reconhecer entidades

Concluído

O reconhecimento de entidade nomeada é uma funcionalidade oferecida pela Linguagem de IA do Azure. Ele identifica e categoriza entidades em texto não estruturado. Ele dá suporte a várias categorias de entidade, incluindo pessoas, locais, eventos, produtos, organizações etc.

Há várias maneiras de chamar a API de reconhecimento de entidade nomeada. Aqui, você usa a extensão azure_ai para reconhecer entidades do texto em consultas SQL.

Pré-requisitos

Você precisa de um servidor flexível do Banco de Dados do Azure para PostgreSQL, com a extensão azure_ai habilitada e configurada. Você também precisa autorizá-lo com os Serviços Cognitivos do Azure definindo a chave e o ponto de extremidade de um recurso de linguagem.

Cenários

O reconhecimento de entidade é útil em vários domínios, como:

  • Pesquisa e indexação: Crie automaticamente grafos de conhecimento e diretórios de marcas com entidades identificadas.
  • Automação de processos: Reconhece automaticamente produtos e locais em texto não estruturado e os encaminha para solicitações de suporte ao cliente.
  • Análise de mercado: Mede as entidades e os clusters de entidades mais frequentes de mídias sociais, avaliações de clientes, tíquetes de suporte etc., para determinar tópicos relevantes e prever tendências.

Usando o reconhecimento de entidade nomeada no SQL com os Serviços Cognitivos do Azure

A extensão azure_ai do servidor flexível do Banco de Dados do Azure para PostgreSQL fornece UDFs (funções definidas pelo usuário) para acessar funcionalidades de IA diretamente no SQL. A API de reconhecimento de entidade nomeada é acessada com a função azure_cognitive.recognize_entities fornecida por azure_ai:

azure_cognitive.recognize_entities(
 text text,
 language text,
 timeout_ms integer DEFAULT 3600000,
 throw_on_error boolean DEFAULT true,
 disable_service_logs boolean DEFAULT false
)

Os parâmetros necessários são text, a entrada, e language, o idioma no qual o text é escrito. Por exemplo, en-us é inglês dos EUA e fr é francês. Consulte o suporte a idiomas para obter a lista completa de idiomas disponíveis.

Por padrão, o reconhecimento de entidade será interrompido se ele não terminar em 3.600.000 ms = 1 hora. Você pode personalizar esse atraso alterando timeout_ms.

Se ocorrer um erro, o comportamento padrão será gerar uma exceção, resultando em uma reversão de transação. Você pode desabilitar esse comportamento definindo throw_on_error como false.

Consulte a documentação de extensão dos Serviços Cognitivos do Azure para obter a documentação completa do parâmetro.

Por exemplo, invocar esta consulta:

SELECT azure_cognitive.recognize_entities('For more information, see Cognitive Services Compliance and Privacy notes.', 'en-us');

Fornece este resultado:

{"(\"Cognitive Services\",Skill,\"\",0.94)"}

Indicando que o nome da entidade é "Serviços Cognitivos", ele é identificado como uma habilidade com uma pontuação de confiança de 0,94.

Você pode usar colunas de tabela para o texto de entrada:

SELECT description, azure_cognitive.recognize_entities(description, 'en-us')
FROM listings LIMIT 1;

Que retorna:

 {"(house,Location,\"\",0.77)","(2013.,DateTime,DateRange,1)","(\"rooftop deck\",Location,\"\",0.88)","(\"lounge area\",Location,Structural,0.97)","(tub,Product,\"\",0.52)","
(5,Quantity,Number,0.8)","(bedrooms,Location,\"\",0.92)","(\"gourmet kitchen\",Location,\"\",0.87)","(2-3,Quantity,NumberRange,0.87)","(downtown,Location,Structural,0.8)","(\
"Queen Anne neighborhood\",Location,\"\",0.74)","(house,Location,\"\",0.96)","(barnwood,Product,\"\",0.61)","(steel,Product,\"\",0.73)","(concrete,Product,\"\",0.7)","(living
,Location,Structural,0.53)","(\"gourmet kitchen\",Location,\"\",0.7)","(kitchen,Location,\"\",0.77)","(reading,Skill,\"\",0.54)","(half,Quantity,Number,0.8)","(\"tv room\",Lo
cation,\"\",0.89)","(kitchen,Location,\"\",0.64)","(Fireplace,Product,\"\",0.91)","(sofa,Product,\"\",0.98)","(\"sitting area\",Location,\"\",0.93)","(\"Basement room\",Locat
ion,\"\",0.98)","(kids,PersonType,\"\",0.73)","(room,Location,Structural,0.78)","(patio,Location,Structural,0.75)","(basketball,Product,\"\",0.57)","(bedroom,Location,\"\",0.
8)","(basement,Location,\"\",0.94)","(\"concrete heated floors\",Product,\"\",0.95)","(\"queen sleeper sofa\",Product,\"\",0.86)","(tv,Location,\"\",0.54)","(basement,Locatio
n,\"\",0.92)","(room,Location,Structural,0.9)","(\"a second\",DateTime,Duration,0.85)","(family,PersonType,\"\",0.71)","(kids,PersonType,\"\",0.65)","(\"2nd floor\",Location,
Structural,0.56)","(4,Quantity,Number,0.8)","(bedrooms,Location,\"\",0.66)","(one,Quantity,Number,0.8)","(one,Quantity,Number,0.8)","(bedroom,Location,\"\",0.54)","(\"twin bu
nk beds\",Product,\"\",0.67)"}

Resumo

O reconhecimento de entidade nomeada identifica e categoriza entidades no texto de entrada. O modelo de linguagem dos Serviços Cognitivos do Azure faz o processamento de linguagem natural pesado. A extensão azure_ai do Banco de Dados do Azure para PostgreSQL fornece a API azure_cognitive.recognize_entities para acessar o reconhecimento de entidade nomeada diretamente em consultas SQL.