A Wikipedia fornece o seguinte exemplo ao descrever o hash de recursos ; mas o mapeamento não parece consistente com o dicionário definido
Por exemplo, to
deve ser convertido para de 3
acordo com o dicionário, mas é codificado como 1
alternativa.
Existe um erro na descrição? Como funciona o hash de recursos?
Os textos:
John likes to watch movies. Mary likes too. John also likes to watch football games.
pode ser convertido usando o dicionário
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}
para a matriz
[[1 2 1 1 1 0 0 0 1 1] [1 1 1 1 0 1 1 1 0 0]]
Como Steffen apontou, a matriz de exemplo codifica o número de vezes que uma palavra aparece em um texto. A posição da codificação na matriz é dada pela palavra (posição da coluna na matriz) e pelo texto (posição da linha na matriz).
Agora, o truque de hash funciona da mesma maneira, embora você não precise definir inicialmente o dicionário que contém a posição da coluna para cada palavra.
De fato, é a função de hash que fornecerá o intervalo de posições possíveis da coluna (a função de hash fornecerá um valor mínimo e máximo possível) e a posição exata da palavra que você deseja codificar na matriz. Então, por exemplo, vamos imaginar que a palavra "curtidas" seja dividida por nossa função de hash no número 5674, e a coluna 5674 conterá as codificações relativas à palavra "curtidas".
Dessa forma, você não precisará criar um dicionário antes de analisar o texto. Se você usar uma matriz esparsa como sua matriz de texto, nem precisará definir exatamente qual será o tamanho da matriz. Apenas digitalizando o texto, em tempo real, você converterá palavras em posições de coluna pela função hash e sua matriz de texto será preenchida com dados (frequências, ie) de acordo com o documento que você está analisando progressivamente (posição da linha).
fonte