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).
- Consulte informações sobre projetos de machine learning em movimento de ML Studio (clássico) para Azure Machine Learning.
- Saiba mais sobre Azure Machine Learning.
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
Adicione o módulo de Hashing recurso à sua experiência em Studio (clássico).
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 .
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.
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.
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.
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
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:
Categorização de notícias: Utiliza hashing de recurso para classificar artigos numa lista de categorias predefinida.
Empresas similares: Utiliza o texto dos artigos da Wikipédia para categorizar empresas.
Classificação de texto: Esta amostra de cinco partes utiliza texto de mensagens do Twitter para realizar análises de sentimento.
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.