Referência do componente Hash de Recursos

Este artigo descreve o componente incluído no designer do Azure Machine Learning.

Use o componente Hash de Recursos para transformar um fluxo de texto em inglês em um conjunto de recursos inteiros. Você pode passar esse conjunto de recursos com hash para um algoritmo de machine learning para treinar um modelo de análise de texto.

A funcionalidade de hash de recursos fornecida nesse componente é baseada na estrutura nimbusml. Para saber mais, confira a classe NgramHash.

O que é 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 componente Hash de Recursos cria um dicionário de n-gramas. Por exemplo, a lista de bigramas para esse conjunto de dados seria algo assim:

Termo (bigramas) 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. O dicionário também incluiria termos únicos, como estes:

Termo (unigramas) Frequência
agendar 3
I 3
livros 1
é 1

Após o dicionário ser criado, o componente Hash de Recursos converte os termos do dicionário em valores de hash. Depois, ele computa se um recurso foi usado em cada caso. Para cada linha de dados de texto, o componente 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 é 0, a linha não continha o recurso com hash.
  • Se o valor é 1, a linha continha o recurso.

O hash de recursos permite que você represente documentos de texto de comprimento variável como vetores de recursos numéricos de comprimento igual para reduzir a dimensionalidade. Se você tentasse usar a coluna de texto para treinamento como ela se encontra, ela seria tratada como uma coluna de recursos categóricos com muitos valores distintos.

As saídas numéricas também possibilitam o uso de métodos comuns de machine learning, incluindo classificação, clustering e 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.

Configurar o componente Hash de Recursos

  1. Adicione o componente Hash de Recursos ao seu pipeline no designer.

  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 léxicas, como lematização ou truncamento, às vezes você pode obter resultados melhores por meio do pré-processamento do texto antes de aplicar o hash de recursos.

  3. Defina as Colunas de destino como as colunas de texto que deseja converter em recursos com hash. Tenha em mente que:

    • As colunas devem ter o tipo de dados String.

    • Escolher várias colunas de texto pode ter um impacto significativo sobre a dimensionalidade do recurso. Por exemplo, o número de colunas para um hash de 10 bits vai de 1.024 para uma coluna a 2.048 para duas colunas.

  4. Use o Tamanho de bits de 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 é adequado. Talvez você precise de mais espaço para evitar colisões dependendo do tamanho do vocabulário de n-gramas no texto de treinamento.

  5. Para N-gramas, insira um número que defina 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.

    Por exemplo, se você inserir 3, unigramas, bigramas e trigramas serão criados.

  6. Enviar o pipeline.

Resultados

Após o processamento ser concluído, o componente gera um conjunto de dados transformado no qual a coluna de texto original foi convertida em várias colunas. Cada coluna representa um recurso no texto. Dependendo do quão significativo for o dicionário, o conjunto de dados resultante poderá ser 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 entrada para o componente Treinar Modelo.

Práticas recomendadas

As seguintes melhores práticas podem ajudar você a aproveitar ao máximo o componente Hash de Recursos:

  • Adicione um componente Pré-processar Texto antes de usar o Hash de Recursos para pré-processar o texto de entrada.

  • Adicione um componente Selecionar Colunas após o componente Hash de Recursos para remover as colunas de texto do conjunto de dados de saída. As colunas de texto não são necessárias após a geração dos recursos de hash.

  • Considere usar essas opções de pré-processamento de texto para simplificar os resultados e aumentar a precisão:

    • Quebra de palavras
    • Remoção de palavras irrelevantes
    • Normalização de maiúsculas e minúsculas
    • Remoção de pontuação e caracteres especiais
    • Lematização

O conjunto ideal de métodos de pré-processamento a serem aplicados a qualquer solução depende do domínio, do vocabulário e da necessidade de negócios. Use o pipeline com seus dados para ver quais métodos de processamento de texto são mais eficazes.

Próximas etapas

Confira o conjunto de componentes disponíveis para o Azure Machine Learning