Википедия предоставляет следующий пример при описании хеширования функций ; но отображение не соответствует определенному словарю
Например, to
должен быть преобразован в 3
соответствии со словарем, но он закодирован как 1
вместо.
Есть ли ошибка в описании? Как работает функция хеширования?
Тексты:
John likes to watch movies. Mary likes too. John also likes to watch football games.
можно конвертировать, используя словарь
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10}
к матрице
[[1 2 1 1 1 0 0 0 1 1] [1 1 1 1 0 1 1 1 0 0]]
feature-construction
мистифицировать
источник
источник
Как указал Штеффен, пример матрицы кодирует количество раз, когда слово появляется в тексте. Положение кодирования в матрице задается словом (позиция столбца в матрице) и текстом (положение строки в матрице).
Теперь трюк хеширования работает так же, хотя вам не нужно изначально определять словарь, содержащий позицию столбца для каждого слова.
Фактически это функция хеширования, которая даст вам диапазон возможных позиций столбцов (функция хеширования даст вам минимальное и максимальное возможное значение) и точную позицию слова, которое вы хотите закодировать в матрицу. Например, давайте представим, что слово «лайки» хэшируется нашей функцией хеширования в число 5674, тогда столбец 5674 будет содержать кодировки, относящиеся к слову «лайки».
Таким образом, вам не нужно создавать словарь, прежде чем анализировать текст. Если вы будете использовать разреженную матрицу в качестве текстовой матрицы, вам даже не нужно будет точно определять, какой будет размер матрицы. Просто сканируя текст на лету, вы будете преобразовывать слова в позиции столбцов с помощью функции хеширования, и ваша текстовая матрица будет заполняться данными (частотами, т. Е.) В соответствии с тем, какой документ вы анализируете постепенно (положение строки).
источник