HashingVectorizer
- classsklearn.feature_extraction.text.HashingVectorizer(*, input='content', encoding='utf-8', decode_error='strict', strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern='(?u)\\b\\w\\w+\\b', ngram_range=(1, 1), analyzer='word', n_features=1048576, binary=False, norm='l2', alternate_sign=True, dtype=<class 'numpy.float64'>)[исходный код]
-
Преобразует коллекцию текстовых документов в матрицу вхождений токенов.
Преобразует коллекцию текстовых документов в разреженную матрицу scipy.sparse, содержащую количества вхождений токенов (или сведения об их бинарном наличии); при norm=’l1’ значения могут быть нормализованы как частоты токенов, а при norm=’l2’ — спроецированы на единичную евклидову сферу.
Эта реализация векторизатора текста использует хеширование для сопоставления строковых имён токенов целочисленным индексам признаков.
У этого подхода есть несколько преимуществ:
- он очень экономно расходует память и хорошо масштабируется для больших наборов данных, поскольку словарь не нужно хранить в памяти.
- его быстро сериализовать и десериализовать, поскольку он хранит только параметры конструктора и не имеет другого состояния.
- его можно использовать в потоковом конвейере (с частичным обучением) или параллельном конвейере, поскольку во время обучения состояние не вычисляется.
Есть и несколько недостатков (по сравнению с использованием CountVectorizer со словарём в памяти):
- невозможно выполнить обратное преобразование (от индексов признаков к строковым именам признаков), что может затруднить определение наиболее важных для модели признаков.
- возможны коллизии: разные токены могут сопоставляться одному и тому же индексу признака. Однако на практике это редко становится проблемой, если n_features достаточно велико (например, 2 ** 18 для задач классификации текста).
- взвешивание IDF не выполняется, поскольку оно сделало бы преобразователь объектом с состоянием.
Используемая хеш-функция — версия Murmurhash3 со знаковыми 32-битными значениями.
Сравнение эффективности различных экстракторов признаков см. в разделе Сравнение FeatureHasher и DictVectorizer.
Пример кластеризации документов и сравнение с
TfidfVectorizerприведены в разделе Кластеризация текстовых документов методом k-means.Подробнее см. в руководстве пользователя.
- Параметры:
-
- input{‘filename’, ‘file’, ‘content’}, default=’content’
-
- Если
'filename', последовательность, переданная в качестве аргумента fit, должна представлять собой список имён файлов, которые необходимо прочитать для получения исходного содержимого, подлежащего анализу. - Если
'file', элементы последовательности должны иметь метод ‘read’ (файлоподобный объект), который вызывается для получения байтов в памяти. - Если
'content', ожидается, что входные данные будут последовательностью элементов типа string или byte.
- Если
- encodingstr, default=’utf-8’
-
Если для анализа переданы байты или файлы, эта кодировка используется для декодирования.
- decode_error{‘strict’, ‘ignore’, ‘replace’}, default=’strict’
-
Указание, что делать, если переданная для анализа последовательность байтов содержит символы, не принадлежащие указанной
encoding. По умолчанию используется ‘strict’, то есть будет вызвано исключение UnicodeDecodeError. Другие допустимые значения: ‘ignore’ и ‘replace’. - strip_accents{‘ascii’, ‘unicode’} or callable, default=None
-
Удаление диакритических знаков и выполнение другой нормализации символов на этапе предварительной обработки. ‘ascii’ — быстрый метод, который работает только с символами, имеющими прямое соответствие ASCII. ‘unicode’ — немного более медленный метод, работающий с любыми символами. None (значение по умолчанию) означает, что нормализация символов не выполняется.
И ‘ascii’, и ‘unicode’ используют нормализацию NFKD из
unicodedata.normalize. - lowercasebool, default=True
-
Преобразовывать все символы в нижний регистр перед токенизацией.
- preprocessorcallable, default=None
-
Заменяет этап предварительной обработки (преобразования строки), сохраняя этапы токенизации и генерации n-грамм. Применяется, только если
analyzerне является вызываемым объектом. - tokenizercallable, default=None
-
Заменяет этап токенизации строки, сохраняя этапы предварительной обработки и генерации n-грамм. Применяется, только если
analyzer == 'word'. - stop_words{‘english’}, list, default=None
-
Если задано ‘english’, используется встроенный список стоп-слов английского языка. У ‘english’ есть несколько известных недостатков, поэтому стоит рассмотреть альтернативный вариант (см. раздел Использование стоп-слов).
Если передан список, он считается списком стоп-слов, которые будут удалены из результирующих токенов. Применяется, только если
analyzer == 'word'. - token_patternstr or None, default=r”(?u)\b\w\w+\b”
-
Регулярное выражение, задающее, что считается «токеном»; используется только если
analyzer == 'word'. Регулярное выражение по умолчанию выбирает токены из двух или более буквенно-цифровых символов (пунктуация полностью игнорируется и всегда считается разделителем токенов).Если в token_pattern есть захватывающая группа, токеном становится содержимое этой группы, а не всё совпадение. Допускается не более одной захватывающей группы.
- ngram_rangetuple (min_n, max_n), default=(1, 1)
-
Нижняя и верхняя границы диапазона значений n для извлекаемых n-грамм. Будут использоваться все значения n, удовлетворяющие условию min_n <= n <= max_n. Например,
ngram_rangeсо значением(1, 1)означает, что будут использоваться только униграммы,(1, 2)— униграммы и биграммы, а(2, 2)— только биграммы. Применяется, только еслиanalyzerне является вызываемым объектом. - analyzer{‘word’, ‘char’, ‘char_wb’} or callable, default=’word’
-
Указывает, должны ли признаки состоять из словесных или символьных n-грамм. Вариант ‘char_wb’ создаёт символьные n-граммы только из текста внутри границ слов; n-граммы на границах слов дополняются пробелами.
Если передан вызываемый объект, он используется для извлечения последовательности признаков из исходных необработанных данных.
Изменено в версии 0.21: Начиная с версии 0.21, если
inputравен'filename'или'file', данные сначала считываются из файла, а затем передаются указанному вызываемому анализатору. - n_featuresint, default=(2 ** 20)
-
Количество признаков (столбцов) в выходных матрицах. Малое количество признаков может приводить к коллизиям хешей, а большое — к увеличению размерности коэффициентов линейных моделей.
- binarybool, default=False
-
Если True, все ненулевые значения счётчиков заменяются на 1. Это полезно для дискретных вероятностных моделей, которые моделируют бинарные события, а не целочисленные количества.
- norm{‘l1’, ‘l2’}, default=’l2’
-
Норма, используемая для нормализации векторов термов. None означает отсутствие нормализации.
- alternate_signbool, default=True
-
Если True, признакам присваиваются чередующиеся знаки, что позволяет приблизительно сохранять скалярное произведение в хешированном пространстве даже при малом n_features. Этот подход похож на разреженную случайную проекцию.
Добавлено в версии 0.19.
- dtypetype, default=np.float64
-
Тип матрицы, возвращаемой методами fit_transform() или transform().
См. также
CountVectorizer-
Преобразует коллекцию текстовых документов в матрицу количеств токенов.
TfidfVectorizer-
Преобразует коллекцию исходных документов в матрицу признаков TF-IDF.
Примечания
Этот оценщик является не имеющим состояния, поэтому его не нужно обучать. Тем не менее рекомендуется вызывать
fit_transformвместоtransform, поскольку проверка параметров выполняется только вfit.Примеры
>>> from sklearn.feature_extraction.text import HashingVectorizer >>> corpus = [ ... 'This is the first document.', ... 'This document is the second document.', ... 'And this is the third one.', ... 'Is this the first document?', ... ] >>> vectorizer = HashingVectorizer(n_features=2**4) >>> X = vectorizer.fit_transform(corpus) >>> print(X.shape) (4, 16)
- build_analyzer()[исходный код]
-
Возвращает вызываемый объект для обработки входных данных.
Этот объект выполняет предварительную обработку, токенизацию и генерацию n-грамм.
- Возвращает:
-
- analyzer: callable
-
Функция для выполнения предварительной обработки, токенизации и генерации n-грамм.
- build_preprocessor()[исходный код]
-
Возвращает функцию для предварительной обработки текста перед токенизацией.
- Возвращает:
-
- preprocessor: callable
-
Функция для предварительной обработки текста перед токенизацией.
- build_tokenizer()[исходный код]
-
Возвращает функцию, которая разбивает строку на последовательность токенов.
- Возвращает:
-
- tokenizer: callable
-
Функция для разбиения строки на последовательность токенов.
- decode(doc)[исходный код]
-
Декодирует входные данные в строку символов Unicode.
Стратегия декодирования зависит от параметров векторизатора.
- Параметры:
-
- docbytes or str
-
Строка для декодирования.
- Возвращает:
-
- doc: str
-
Строка символов Unicode.
- fit(X, y=None)[исходный код]
-
Выполняет только проверку параметров оценщика.
Этот метод позволяет: (i) проверить параметры оценщика и (ii) обеспечить совместимость с API преобразователей scikit-learn.
- Параметры:
-
- Xndarray of shape [n_samples, n_features]
-
Обучающие данные.
- yIgnored
-
Не используется; присутствует для соблюдения принятого соглашения о совместимости API.
- Возвращает:
-
- selfobject
-
Экземпляр HashingVectorizer.
- fit_transform(X, y=None)[исходный код]
-
Преобразует последовательность документов в матрицу «документ—терм».
- Параметры:
-
- Xiterable over raw text documents, length = n_samples
-
Выборки. Каждая выборка должна быть текстовым документом (байтовой строкой или строкой Unicode, именем файла либо файловым объектом — в зависимости от аргумента конструктора); документ будет токенизирован и хеширован.
- yany
-
Игнорируется. Этот параметр существует только для совместимости с sklearn.pipeline.Pipeline.
- Возвращает:
-
- Xsparse matrix of shape (n_samples, n_features)
-
Матрица «документ—терм».
- get_metadata_routing()[исходный код]
-
Получает маршрутизацию метаданных этого объекта.
Описание работы механизма маршрутизации см. в руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequest, содержащий сведения о маршрутизации.
- get_params(deep=True)[исходный код]
-
Получает параметры этого оценщика.
- Параметры:
-
- deepbool, default=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нём подобъектов, которые являются оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные их значениям.
- get_stop_words()[исходный код]
-
Создаёт или получает фактический список стоп-слов.
- Возвращает:
-
- stop_words: list or None
-
Список стоп-слов.
- partial_fit(X, y=None)[исходный код]
-
Выполняет только проверку параметров оценщика.
Этот метод позволяет: (i) проверить параметры оценщика и (ii) обеспечить совместимость с API преобразователей scikit-learn.
- Параметры:
-
- Xndarray of shape [n_samples, n_features]
-
Обучающие данные.
- yIgnored
-
Не используется; присутствует для соблюдения принятого соглашения о совместимости API.
- Возвращает:
-
- selfobject
-
Экземпляр HashingVectorizer.
- set_output(*, transform=None)[исходный код]
-
Задаёт контейнер для выходных данных.
Подробнее см. в руководстве пользователя, а пример использования API приведён в разделе Знакомство с API set_output.
- Параметры:
-
- transform{“default”, “pandas”, “polars”}, default=None
-
Настраивает формат вывода для
transformиfit_transform.-
"default": формат вывода преобразователя по умолчанию -
"pandas": вывод в формате DataFrame -
"polars": вывод в формате Polars -
None: конфигурация преобразования не изменяется
Добавлено в версии 1.4: Добавлен параметр
"polars". -
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
- set_params(**params)[исходный код]
-
Задаёт параметры этого оценщика.
Метод работает как с простыми оценщиками, так и с вложенными объектами (например,
Pipeline). Параметры последних имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценщика.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценщика.
- transform(X)[исходный код]
-
Преобразует последовательность документов в матрицу «документ—терм».
- Параметры:
-
- Xiterable over raw text documents, length = n_samples
-
Выборки. Каждая выборка должна быть текстовым документом (байтовой строкой или строкой Unicode, именем файла либо файловым объектом — в зависимости от аргумента конструктора); документ будет токенизирован и хеширован.
- Возвращает:
-
- Xsparse matrix of shape (n_samples, n_features)
-
Матрица «документ—терм».
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html