Compartilhar via


Hash de recursos

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

Converter dados de texto para integrar os recursos codificados usando a biblioteca Vowpal Wabbit

Categoria: Análise de Texto

Observação

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

Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.

Visão geral do módulo

Este artigo descreve como usar o módulo Hashing de Recursos no Machine Learning Studio (clássico), para transformar um fluxo de texto em inglês em um conjunto de recursos representados como inteiros. Em seguida, você pode passar esse conjunto de recursos de hash para um algoritmo de aprendizado de máquina para treinar um modelo de análise de texto.

A funcionalidade de hash de recurso fornecida neste módulo baseia-se na estrutura Vowpal Wabbit. Para obter mais informações, consulte Train Vowpal Wabbit 7-4 Model or Train Vowpal Wabbit 7-10 Model.

Mais sobre hash de recursos

O hash de recursos funciona convertendo tokens exclusivos em inteiros. Ele opera nas cadeias de caracteres exatas que você fornece como entrada e não executa análise linguística nem pré-processamento.

Por exemplo, pegue um conjunto de frases simples como essas, seguidas por uma pontuação de sentimento. Suponha que você queira usar esse texto para criar um modelo.

TEXTO DO USUÁRIO SENTIMENTO
Eu adorei este livro 3
Eu odiei este livro 1
O livro é ótimo 3
Eu adoro livros 2

Internamente, o módulo Hashing de Recursos cria um dicionário de n-gramas. Por exemplo, a lista de bigramas para esse conjunto de dados seria algo assim:

TERM (bigrams) FREQUÊNCIA
Este livro 3
Adorei 1
Eu odiei 1
Eu adoro 1

Você pode controlar o tamanho dos n-gramas usando a propriedade N-grams. Se você escolher bigramas, unigramas também serão computados. Assim, o dicionário também incluiria termos únicos como estes:

Termo (unigramas) FREQUÊNCIA
agendar 3
I 3
livros 1
é 1

Depois que o dicionário for criado, o módulo Hashing de Recurso converterá os termos do dicionário em valores de hash e calculará se um recurso foi usado em cada caso. Para cada linha de dados de texto, o módulo gera um conjunto de colunas, com uma coluna para cada recurso com hash.

Por exemplo, após o hash, as colunas de recursos podem ter uma aparência semelhante a esta:

Classificação Recurso de hash 1 Recurso de hash 2 Recurso de hash 3
4 1 1 0
5 0 0 0
  • Se o valor na coluna for 0, a linha não contém o recurso hash.
  • Se o valor é 1, a linha continha o recurso.

A vantagem de usar hash de recurso é que você pode representar documentos de texto de comprimento variável como vetores de recursos numéricos de comprimento igual e obter redução de dimensionalidade. Por outro lado, se você tentasse usar a coluna de texto para treinamento como está, ela seria tratada como uma coluna de recurso categórica, com muitos, muitos valores distintos.

Ter as saídas como numéricas torna possível usar vários métodos de aprendizado de máquina diferentes com os dados, incluindo classificação, clustering ou recuperação de informações. Como as operações de pesquisa podem usar hashes inteiros em vez de comparações entre cadeias de caracteres, a obtenção dos pesos dos recursos também é muito mais rápida.

Como configurar o Hashing de Recursos

  1. Adicione o módulo hash de recursos ao experimento no Studio (clássico).

  2. Conecte o conjunto de dados que contém o texto que você deseja analisar.

    Dica

    Como o hash de recursos não executa operações lexical, como lematização ou truncamento, às vezes você pode obter melhores resultados fazendo o pré-processamento de texto antes de aplicar hash de recurso. Para obter sugestões, consulte as melhores práticas e as seções de notas técnicas .

  3. Para colunas de destino, selecione as colunas de texto que você deseja converter em recursos de hash.

    • As colunas devem ser o tipo de dados de cadeia de caracteres e devem ser marcadas como uma coluna de recurso .

    • Se você escolher várias colunas de texto a serem usadas como entradas, ela poderá ter um efeito enorme na dimensionalidade do recurso. Por exemplo, se um hash de 10 bits for usado para uma única coluna de texto, a saída conterá 1024 colunas. Se um hash de 10 bits for usado para duas colunas de texto, a saída conterá 2048 colunas.

    Observação

    Por padrão, o Studio (clássico) marca a maioria das colunas de texto como recursos, portanto, se você selecionar todas as colunas de texto, poderá obter muitas colunas, incluindo muitas que não são realmente texto livre. Use a opção Limpar recurso em Editar Metadados para impedir que outras colunas de texto sejam hash.

  4. Use o bitsize hash para especificar o número de bits a serem usados ao criar a tabela de hash.

    O tamanho de bits padrão é 10. Para muitos problemas, esse valor é mais do que adequado, mas se basta para seus dados depende do tamanho do vocabulário n-gramas no texto de treinamento. Com um vocabulário grande, mais espaço pode ser necessário para evitar colisões.

    Recomendamos que você tente usar um número diferente de bits para esse parâmetro e avalie o desempenho da solução de machine learning.

  5. Para N-gramas, digite um número que define o comprimento máximo dos n-gramas a serem adicionados ao dicionário de treinamento. Um n-grama é uma sequência de n palavras tratadas como uma unidade exclusiva.

    • N-gramas = 1: Unigramas ou palavras simples.

    • N-gramas = 2: Bigrams ou sequências de duas palavras, além de unigramas.

    • N-gramas = 3: trigramas ou sequências de três palavras, além de bigrams e unigramas.

  6. Execute o experimento.

Resultados

Depois que o processamento é concluído, o módulo gera um conjunto de dados transformado no qual a coluna de texto original foi convertida em várias colunas, cada uma representando um recurso no texto. Dependendo do tamanho do dicionário, o conjunto de dados resultante pode ser extremamente grande:

Nome da coluna 1 Tipo de coluna 2
TEXTO DO USUÁRIO Coluna de dados original
SENTIMENTO Coluna de dados original
TEXTO DO USUÁRIO – Recurso de hash 1 Coluna de recurso com hash
TEXTO DO USUÁRIO – Recurso de hash 2 Coluna de recurso com hash
TEXTO DO USUÁRIO – Recurso de hash n Coluna de recurso com hash
TEXTO DO USUÁRIO – Recurso de hash 1024 Coluna de recurso com hash

Depois de criar o conjunto de dados transformado, você pode usá-lo como a entrada para o módulo Treinar Modelo , juntamente com um bom modelo de classificação, como o Computador vetor de suporte de duas classes.

Práticas recomendadas

Algumas práticas recomendadas que você pode usar durante a modelagem de dados de texto são demonstradas no diagrama a seguir que representa um experimento

AML_FeatureHashingWorkflow

  • Talvez seja necessário adicionar um módulo Executar script R antes de usar Hash de recurso, para reprocessar o texto de entrada. Com o script R, você também tem a flexibilidade de usar vocabulários personalizados ou transformações personalizadas.

  • Você deve adicionar um módulo Selecionar Colunas no Conjunto de Dados após o módulo hash de recursos para remover as colunas de texto do conjunto de dados de saída. Você não precisa das colunas de texto após a geração dos recursos de hash.

    Como alternativa, você pode usar o módulo Editar Metadados para limpar o atributo de recurso da coluna de texto.

Considere também o uso dessas opções de pré-processamento de texto para simplificar os resultados e melhorar a precisão:

  • quebra de palavra
  • parar remoção de palavras
  • normalização de caso
  • remoção de pontuação e caracteres especiais
  • Decorrentes.

O conjunto ideal de métodos de pré-processamento a serem aplicados em qualquer solução individual depende de domínio, vocabulário e necessidade de negócios. Recomendamos que você experimente seus dados para ver quais métodos de processamento de texto personalizados são mais eficazes.

Exemplos

Para obter exemplos de como o hash de recursos é usado para análise de texto, consulte a Galeria de IA do Azure:

Observações técnicas

Esta seção contém detalhes de implementação, dicas e respostas para perguntas frequentes.

Dica

Além de usar hash de recurso, talvez você queira usar outros métodos para extrair recursos do texto. Por exemplo:

  • Use o módulo Pré-processar Texto para remover artefatos como erros ortográficos ou para simplificar o preparatório de texto para hash.
  • Use Extrair Frases-Chave para usar o processamento de linguagem natural para extrair frases.
  • Use o Reconhecimento de Entidade Nomeada para identificar entidades importantes.

Machine Learning Studio (clássico) fornece um modelo de Classificação de Texto que orienta você usando o módulo hash de recursos para extração de recursos.

Detalhes de implementação

O módulo Hashing de Recursos usa uma estrutura de aprendizado de máquina rápida chamada Vowpal Wabbit que apresenta hashes de palavras em índices na memória, usando uma função de hash código aberto popular chamada murmurhash3. Essa função de hash é um algoritmo de hash não criptográfico que mapeia entradas de texto em números inteiros e é popular porque funciona bem em uma distribuição aleatória de chaves. Ao contrário das funções de hash criptográficas, ela pode ser facilmente revertida por um adversário, de modo que seja inadequado para fins criptográficos.

A finalidade de hash é converter documentos de texto de comprimento variável em vetores de recurso numérico de igual comprimento, para dar suporte à redução de dimensionalidade e tornar a pesquisa de pesos de recurso mais rápida.

Cada recurso de hash representa um ou mais recursos de texto n-grama (unigramas ou palavras individuais, bi-gramas, três gramas etc.), dependendo do número de bits (representado como k) e do número de n-gramas especificados como parâmetros. Ele projeta nomes de recursos para a palavra sem sinal da arquitetura do computador usando o algoritmo murmurhash v3 (somente 32 bits) que, em seguida, é AND-ed com (2^k)-1. Ou seja, o valor de hash é projetado para baixo para os primeiros k bits de ordem inferior e os bits restantes são zerados. Se o número especificado de bits for 14, a tabela de hash poderá conter 2 entradas14-1 (ou 16.383).

Para muitos problemas, a tabela de hash padrão (bitsize = 10) é mais do que adequada; no entanto, dependendo do tamanho do vocabulário de n-gramas no texto de treinamento, mais espaço pode ser necessário para evitar colisões. Recomendamos que você tente usar um número diferente de bits para o parâmetro de bits de Hashing e avalie o desempenho da solução de machine learning.

Entradas esperadas

Nome Tipo Descrição
Dataset Tabela de Dados Conjunto de dados de entrada

Parâmetros do módulo

Nome Intervalo Type Padrão Descrição
Colunas de destino Qualquer ColumnSelection StringFeature Escolha as colunas às quais o hash será aplicado.
Hashing bitsize [1;31] Integer 10 Digite o número de bits a ser usado ao armazenar em hash as colunas selecionadas
N-grams [0;10] Integer 2 Especifique o número de N-gramas gerados durante o hash. Por padrão, unigrams e bigrams são extraídos

Saídas

Nome Tipo Descrição
Conjunto de dados transformados Tabela de Dados Conjunto de dados de saída com colunas com hash

Exceções

Exceção Descrição
Erro 0001 Ocorrerá uma exceção se uma ou mais das colunas especificadas do conjunto de dados não puder ser encontrada.
Erro 0003 Ocorrerá uma exceção se uma ou mais das entradas for nula ou estiver vazia.
Erro 0004 Ocorrerá uma exceção se o parâmetro for inferior ou igual ao valor específico.
Erro 0017 Ocorrerá uma exceção se uma ou mais das colunas especificadas tiver um tipo sem suporte por módulo atual.

Para obter uma lista de erros específicos aos módulos do Studio (clássico), consulte Machine Learning códigos de erro.

Para obter uma lista de exceções de API, consulte Machine Learning códigos de erro da API REST.

Confira também

Análise de Texto

Lista de Módulo A-Z