Reconhecimento de Entidade Nomeada

Reconhece entidades nomeadas em uma coluna de texto

Categoria: análise de texto

Observação

Aplica-se a: Machine Learning Studio (clássico)

Esse conteúdo pertence apenas ao estúdio (clássico). Módulos de arrastar e soltar semelhantes foram adicionados ao designer de Azure Machine Learning. Saiba mais neste artigo comparando as duas versões.

Visão geral do módulo

Este artigo descreve como usar o módulo de reconhecimento de entidade nomeada no Azure Machine Learning Studio (clássico) para identificar os nomes das coisas, como pessoas, empresas ou locais em uma coluna de texto.

Reconhecimento de entidade nomeada é uma área importante de pesquisa no aprendizado de máquina e em processamento de linguagem natural (PLN), pois ela pode ser usada para responder várias perguntas do mundo real, como:

  • Um tweet contém o nome de uma pessoa? O tweet também fornece seu local atual?

  • Quais empresas foram mencionadas em um artigo de notícias?

  • Foram especificados produtos mencionados em reclamações ou análises?

Para obter uma lista de entidades nomeadas, você pode fornecer um conjunto de dados como uma entrada que contém uma coluna de texto. O módulo de reconhecimento de entidade nomeada identificará três tipos de entidades: pessoas (por), locais (loc) e organizações (org).

O módulo também rotula as sequências de onde essas palavras foram encontradas, para que você possa usar os termos em análise posterior.

Por exemplo, a tabela a seguir mostra uma frase simples de entrada e os termos e valores gerados pelo módulo:

Texto de entrada Saída do módulo
“Boston é um ótimo lugar para morar”. 0, Boston, 0,6, LOC

A saída pode ser interpretada da seguinte maneira:

  • O primeiro “0” significa que essa cadeia de caracteres é o primeiro artigo de entrada para o módulo.

    Como um único artigo pode ter várias entidades, inclusive o número de linha do artigo na saída, é importante para mapeamento de recursos em artigos.

  • Boston é a entidade reconhecida.

  • O 0 que segue Boston significa que a entidade Boston começa na primeira letra da cadeia de caracteres de entrada. Os índices são baseados em zero.

  • 6 significa que o comprimento da entidade Boston é 6.

  • LOC significa que a entidade Boston é um local ou local. Outros tipos de entidade nomeado com suporte são Person ( PER ) e Organization ( ORG ).

Como configurar o reconhecimento de entidade nomeada

  1. Adicione o módulo de reconhecimento de entidade nomeada ao seu experimento no estúdio (clássico). Você pode encontrar o módulo na categoria análise de texto .

  2. Na entrada chamada história, conecte um conjunto de dados que contém o texto a ser analisado.

    A "história" deve conter o texto do qual extrair entidades nomeadas.

    A coluna usada como história deve conter várias linhas, em que cada linha consiste em uma cadeia de caracteres. a cadeia de caracteres pode ser curta, como uma frase, ou longa, como um artigo de notícias.

    Você pode conectar qualquer conjunto de qualquer DataSet que contenha uma coluna de texto. No entanto, se o conjunto de dados de entrada contiver várias colunas, use selecionar colunas no DataSet para escolher apenas a coluna que contém o texto que você deseja analisar

    Observação

    A segunda entrada, recursos personalizados (zip), não tem suporte no momento.

    No futuro, você pode adicionar arquivos de recursos personalizados aqui, para identificar tipos de entidade diferentes.

  3. Execute o experimento.

Resultados

O módulo gera um conjunto de resultados que contém uma linha para cada entidade reconhecida, junto com os deslocamentos.

Como cada linha de texto de entrada pode conter várias entidades nomeadas, um número de ID de artigo é gerado automaticamente e incluído na saída, para identificar a linha de entrada que continha a entidade nomeada. A ID do artigo é baseada na ordem natural das linhas no conjunto de dados de entrada.

Você pode converter esse conjunto de resultados de saída em CSV para baixá-lo ou salvá-lo como um conjunto de um para reutilização.

Usar o reconhecimento de entidade nomeada em um serviço Web

Se você publicar um serviço Web do Azure Machine Learning Studio (clássico) e quiser consumir o serviço Web usando C#, Python ou outra linguagem, como R, deverá primeiro implementar o código de serviço fornecido na página de ajuda do serviço Web.

Se o serviço Web fornecer várias linhas de saída, a URL do serviço Web que você adiciona ao C#, Python ou código R deverá ter o sufixo scoremultirow em vez de score.

Por exemplo, suponha que você use a seguinte URL para seu serviço Web: https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/score

Para habilitar a saída de várias linhas, altere a URL para https://ussouthcentral.services.azureml.net/workspaces/<workspace id>/services/<service id>/scoremultirow

Para publicar esse serviço Web, você deve adicionar um módulo Executar script R adicional após o módulo reconhecimento de entidade nomeada , para transformar a saída de várias linhas em um único delimitado por ponto e vírgula (;). O motivo para a consolidação de várias linhas de saída em uma única linha é retornar várias entidades por linha de entrada.

Por exemplo, vamos supor que você tem uma sentença de entrada com duas entidades nomeadas. Em vez de retornar duas linhas para cada linha de entrada, você pode retornar linhas simples com várias entidades, separadas por ponto e vírgula, como mostrado aqui:

Texto de entrada Saída do serviço Web
A Microsoft tem dois escritórios em Boston. 0,Microsoft,0,9,ORG,;,0,Boston,38,6,LOC,;

O seguinte exemplo de código demonstra como fazer isso:

# Map 1-based optional input ports to variables  
d <- maml.mapInputPort(1) # class: data.frame  
y=length(d) ##size of cols  
x=dim(d)[1] ##size of rows  
longd=matrix("NA",nrow=1,ncol=x*(y+1))  
for (i in 1:x)  
  {   
     for (j in 1:y)  
     {  
       longd[1,j+(i-1)*(y+1)]=toString(d[i,j])   
     }  
     longd[1,j+(i-1)*(y+1)+1]=c(";")  
  }   

final_output=as.data.frame(longd)  
# Select data.frame to be sent to the output Dataset port  
maml.mapOutputPort("final_output");  

Exemplos

Este blog fornece uma explicação estendida de como o reconhecimento de entidade nomeada funciona, seu plano de fundo e aplicativos possíveis:

Além disso, consulte os seguintes experimentos de exemplo na Galeria de ia do Azure para ver demonstrações de como usar métodos de classificação de texto comumente usados no aprendizado de máquina:

Observações técnicas

Suporte ao idioma

Atualmente, o módulo Reconhecimento de Entidade Nomeada suporta apenas texto em inglês. Ele pode detectar nomes de organizações, nomes e locais em frases em inglês. Se você usar o módulo em outros idiomas, talvez não receba um erro, mas os resultados não são tão bons quanto para texto em inglês.

No futuro, o suporte para idiomas adicionais podem ser habilitados, integrando os componentes multilíngues fornecidos no Kit de ferramentas de linguagem natural no escritório.

Entradas esperadas

Nome Tipo Descrição
História Tabela de Dados Um conjunto de dados de entrada (DataTable) que contém a coluna de texto que você deseja analisar.
CustomResources Zip (Opcional) Um arquivo em formato ZIP que contém recursos personalizados adicionais.

Essa opção não está disponível atualmente e é fornecida somente para compatibilidade com versões posteriores.

Saídas

Nome Tipo Descrição
Entidades Tabela de Dados Uma lista de entidades e deslocamentos de caracteres

Consulte também

Análise de Texto
Hash de recurso
Classificação do modelo Vowpal Wabbit 7-4
Treinar o modelo Vowpal Wabbit 7-4