Partilhar via


Hashing de Funcionalidade

Importante

O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.

A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).

A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.

Converte dados de texto para recursos inteiros codificados usando a biblioteca Vowpal Wabbit

Categoria: Análise de Texto

Nota

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

Módulos semelhantes de arrasto e queda estão disponíveis em Azure Machine Learning designer.

Visão geral do módulo

Este artigo descreve como usar o módulo de Hashing de Recurso em Machine Learning Studio (clássico), para transformar um fluxo de texto inglês num conjunto de funcionalidades representadas como inteiros. Em seguida, pode passar este conjunto de funcionalidades com hash para um algoritmo de machine learning para preparar um modelo de análise de texto.

A funcionalidade de hashing de funcionalidade fornecida neste módulo baseia-se na estrutura Vowpal Wabbit. Para mais informações, consulte o modelo 7-4 do Trem Vowpal Wabbit ou o Modelo Wabbit 7-10 do Comboio Vowpal.

Mais sobre hashing de recurso

O hashing de funcionalidades funciona ao converter tokens exclusivos em números inteiros. Funciona nas cordas exatas que fornece como entrada e não realiza qualquer análise linguística ou pré-processamento.

Por exemplo, tome um conjunto de frases simples como estas, seguidas de uma pontuação de sentimento. Assuma que quer usar este texto para construir um modelo.

USERTEXT SENTIMENTO
Adorei este livro. 3
Odiava este livro. 1
Este livro foi ótimo. 3
Adoro livros. 2

Internamente, o módulo hashing de recurso cria um dicionário de n-gramas. Por exemplo, a lista de bigrams para este conjunto de dados seria algo assim:

TERMO (bigrams) FREQUÊNCIA
Este livro 3
Adorava. 1
Odiava 1
Adoro 1

Pode controlar o tamanho dos n-gramas utilizando a propriedade N-grams . Se escolher bigrams, os unigramas também são calculados. Assim, o dicionário também incluiria termos únicos como estes:

Termo (unigramas) FREQUÊNCIA
livro 3
I 3
livros 1
foi 1

Após a criação do dicionário, o módulo Hashing de Funcionalidades converte os termos do dicionário em valores hash e analisa se uma funcionalidade foi utilizada em cada caso. Para cada linha de dados de texto, o módulo produz um conjunto de colunas, uma coluna para cada funcionalidade com hash.

Por exemplo, após a aplicação de hash, as colunas de funcionalidades podem ter este aspeto:

Classificação Funcionalidade de hashing 1 Funcionalidade de hashing 2 Funcionalidade de hashing 3
4 1 1 0
5 0 0 0
  • Se o valor na coluna for 0, a linha não contém a função hashed.
  • Se o valor for 1, a linha continha a característica.

A vantagem de usar o hashing de recurso é que você pode representar documentos de texto de comprimento variável como vetores de característica numérica de igual comprimento, e alcançar a redução da dimensionalidade. Em contraste, se tentasse usar a coluna de texto para o treino como está, seria tratada como uma coluna de recurso categórica, com muitos, muitos valores distintos.

Ter as saídas como numérico também permite utilizar muitos métodos diferentes de aprendizagem automática com os dados, incluindo classificação, agrupamento ou recuperação de informação. Como as operações de procura podem utilizar hashes de números inteiros em vez de comparações de cadeias de carateres, a obtenção das ponderações das funcionalidades é, também, muito mais rápida.

Como configurar hashing de recurso

  1. Adicione o módulo de Hashing recurso à sua experiência em Studio (clássico).

  2. Ligação o conjunto de dados que contém o texto que pretende analisar.

    Dica

    Como o hashing de recurso não realiza operações lexicais, tais como caule ou truncação, às vezes pode obter melhores resultados fazendo pré-processamento de texto antes de aplicar hashing de funcionalidade. Para sugestões, consulte as secções de Boas Práticas e Notas Técnicas .

  3. Para as colunas Target, selecione as colunas de texto que pretende converter para funcionalidades hashed.

    • As colunas devem ser do tipo de dados de cadeia e devem ser marcadas como colunas Características .

    • Se escolher várias colunas de texto para usar como entradas, pode ter um enorme efeito na dimensionalidade do recurso. Por exemplo, se for utilizado um hash de 10 bits numa coluna de texto, a saída contém 1024 colunas. Se for utilizado um hash de 10 bits em duas colunas de texto, a saída contém 2048 colunas.

    Nota

    Por padrão, o Studio (clássico) marca a maioria das colunas de texto como funcionalidades, por isso, se selecionar todas as colunas de texto, poderá obter demasiadas colunas, incluindo muitas que não são realmente texto gratuito. Utilize a opção de funcionalidade Clear em Editar Metadados para evitar que outras colunas de texto sejam hashed.

  4. Utilize o parâmetro Hashing bitsize para especificar o número de bits a utilizar quando criar a tabela hash.

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

    Recomendamos que tente utilizar um número diferente de bits para este 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 do n-gramas para adicionar ao dicionário de treino. Um n-gram é uma sequência de palavras n , tratada como uma unidade única.

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

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

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

  6. Execute a experimentação.

Resultados

Após o processamento estar concluído, o módulo produz um conjunto de dados transformado no qual a coluna de texto original foi convertida em várias colunas, cada uma representando uma característica no texto. Dependendo do tamanho do dicionário, o conjunto de dados resultante pode ser extremamente grande:

Nome da coluna 1 Coluna tipo 2
USERTEXT Coluna de dados original
SENTIMENTO Coluna de dados original
USERTEXT – Funcionalidade de hashing 1 Coluna de funcionalidades com hash
USERTEXT – Funcionalidade de hashing 2 Coluna de funcionalidades com hash
USERTEXT – Funcionalidade de hashing n Coluna de funcionalidades com hash
USERTEXT – Funcionalidade de hashing 1024 Coluna de funcionalidades com hash

Depois de ter criado o conjunto de dados transformado, pode usá-lo como entrada para o módulo Modelo de Comboio, juntamente com uma boa classificação modelo, como a Máquina de Vetor de Suporte de Duas Classes.

Melhores práticas

Algumas boas práticas que pode utilizar durante a modelação de dados de texto são demonstradas no seguinte diagrama que representa uma experiência

AML_FeatureHashingWorkflow

  • Pode ser necessário adicionar um módulo executo R Script antes de utilizar o Hashing de Recurso, para pré-processar o texto de entrada. Com o script R, você também tem a flexibilidade para usar vocabulários personalizados ou transformações personalizadas.

  • Deve adicionar um módulo Select Columns in Dataset após o módulo hashing de funcionalidade para remover as colunas de texto do conjunto de dados de saída. Não precisa das colunas de texto depois de terem sido geradas as características do hashing.

    Em alternativa, pode utilizar o módulo de metadados editar para limpar o atributo de funcionalidade da coluna de texto.

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

  • palavra quebrando
  • parar a remoção de palavras
  • normalização de caso
  • remoção de pontuação e caracteres especiais
  • cauling.

O conjunto ideal de métodos de pré-processamento para aplicar em qualquer solução individual depende do domínio, vocabulário e necessidade de negócio. Recomendamos que experimente os seus dados para ver quais os métodos de processamento de texto personalizados mais eficazes.

Exemplos

Por exemplo, como o hashing de recurso é usado para análise de texto, consulte a Galeria Azure AI:

Notas técnicas

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

Dica

Além de utilizar o hashing de funcionalidade, é melhor utilizar outros métodos para extrair funcionalidades do texto. Por exemplo:

  • Utilize o módulo de texto pré-processamento para remover artefactos como erros ortográficos ou para simplificar a preparação do texto ao hashing.
  • Utilize frases-chave de extração para utilizar o processamento natural da linguagem para extrair frases.
  • Utilizar o Reconhecimento de Entidade Nomeada para identificar entidades importantes.

Machine Learning Studio (clássico) fornece um modelo de classificação de texto que o guia através da utilização do módulo de hashing de recurso para a extração de recursos.

Detalhes de implementação

O módulo Hashing de Funcionalidades utiliza um framework de machine learning rápido denominado Vowpal Wabbit que aplica um hash às palavras da funcionalidade em índices na memória através de uma função de hash open source popular chamada murmurhash3. Esta função de hash é um algoritmo de hashing não criptográfico que mapeia entradas de texto para inteiros, e é popular porque funciona bem numa distribuição aleatória de teclas. Ao contrário das funções de hash criptográficas, pode ser facilmente revertida por um adversário, de forma a não ser adequada para fins criptográficos.

O objetivo do hashing é converter documentos de texto de comprimento variável em vetores de características numéricas de comprimento igual, para apoiar a redução da dimensionalidade e tornar a procura de pesos de características mais rápidos.

Cada característica de hashing representa uma ou mais características de texto n-grama (unigramas ou palavras individuais, bi-gramas, tri-gramas, etc.), dependendo do número de bits (representados como k) e do número de n-gramas especificados como parâmetros. Ele projeta nomes para a palavra não assinada da máquina arquitetura usando o algoritmo murmurhash v3 (apenas 32 bits) que então é E-ed com (2^k)-1. Assim sendo, o valor hash é projetado para os primeiros bits k de ordem inferior e os bits restantes ficam a zero. Se o número especificado de bits for 14, a tabela hash pode ter 214-1 (ou 16 383) entradas.

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

Entradas esperadas

Nome Tipo Description
Conjunto de dados Tabela de Dados Conjunto de dados de entrada

Parâmetros do módulo

Nome Intervalo Tipo Predefinição Description
Colunas-alvo Qualquer Seleção de Colunas CordaFeature Escolha as colunas às quais será aplicado o hashing.
Bitsize de hashing [1;31] Número inteiro 10 Digite o número de bits a utilizar ao hashing as colunas selecionadas
N-gramas [0;10] Número inteiro 2 Especifique o número de N-gramas gerado durante o hashing. Por padrão, tanto os unigramas como os bigrams são extraídos

Saídas

Nome Tipo Description
Conjunto de dados transformado Tabela de Dados Conjunto de dados de saída com colunas hashed

Exceções

Exceção Description
Erro 0001 A exceção ocorre se uma ou mais colunas especificadas de conjunto de dados não puderem ser encontradas.
Erro 0003 A exceção ocorre se uma ou mais entradas forem nulas ou vazias.
Erro 0004 A exceção ocorre se o parâmetro for inferior ou igual ao valor específico.
Erro 0017 A exceção ocorre se uma ou mais colunas especificadas tiverem o tipo não suportado pelo módulo atual.

Para obter uma lista de erros específicos dos módulos Studio (clássicos), consulte Machine Learning Códigos de Erro.

Para obter uma lista de exceções da API, consulte Machine Learning CÓDIGOs de Erro da API REST.

Ver também

Análise de Texto

Lista de Módulos A-Z