当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cuml.feature_extraction.text.HashingVectorizer用法及代码示例


用法:

class cuml.feature_extraction.text.HashingVectorizer(input=None, encoding=None, decode_error=None, strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern=None, ngram_range=(1, 1), analyzer='word', n_features=1048576, binary=False, norm='l2', alternate_sign=True, dtype=<class 'numpy.float32'>, delimiter=' ')

将文本文档集合转换为标记出现的矩阵

它将文本文档的集合转换为包含令牌出现计数(或二进制出现信息)的 cupyx.scipy.sparse 矩阵,如果 norm='l1' 则可能归一化为令牌频率,如果 norm='l2' 则投影到欧几里德单位球面上.

此文本矢量化器实现使用散列技巧来查找标记字符串名称以进行整数索引映射。

这种策略有几个优点:

  • 它的内存非常低,可扩展到大型数据集,因为不需要在内存中存储词汇字典,这对于通常受内存限制的 GPU 而言更为重要

  • pickle 和un-pickle 很快,因为它除了构造函数参数之外没有任何状态

  • 它可以用于流式传输(部分拟合)或并行管道,因为在拟合期间没有计算状态。

还有一些缺点(与使用带有内存词汇表的 CountVectorizer 相比):

  • 无法计算逆变换(从特征索引到字符串特征名称),这在尝试反省哪些特征对模型最重要时可能会成为问题。

  • 可能存在冲突:不同的标记可以映射到相同的特征索引。但是在实践中,如果 n_features 足够大(例如文本分类问题为 2 ** 18),这很少会成为问题。

  • 没有 IDF 加权,因为这会使转换器有状态。

使用的散列函数是有符号的 32 位版本的 Murmurhash3。

参数

lowercase布尔,默认=真

在标记化之前将所有字符转换为小写。

preprocessor可调用或无(默认)

覆盖预处理(字符串转换)阶段,同时保留标记化和n-grams 生成步骤。

stop_words字符串 {‘english’},列表,默认 = 无

如果‘english’,则使用内置的英语停用词列表。 ‘english’ 有几个已知问题,您应该考虑替代方案。如果是列表,则假定该列表包含停用词,所有这些都将从生成的标记中删除。仅适用于 analyzer == 'word'

ngram_range元组 (min_n, max_n), 默认=(1, 1)

n-values范围的上下边界,用于提取不同的单词n-grams或char n-grams。将使用所有满足 min_n (1, 1) 的 ngram_range 仅表示一元组,(1, 2) 表示一元组和二元组,而(2, 2) 表示仅二元组。

analyzer字符串,{‘word’, ‘char’,‘char_wb’}

特征应该由单词n-gram还是字符n-grams构成。选项 ‘char_wb’ 仅从单词边界内的文本创建字符 n-grams; n-grams 在单词的边用空格填充。

n_features整数,默认=(2 ** 20)

输出矩阵中的特征(列)数。少量特征可能会导致哈希冲突,但大量特征会导致线性学习器中的系数维度较大。

binary布尔值,默认 = 假。

如果为 True,则所有非零计数都设置为 1。这对于模拟二进制事件而不是整数计数的离散概率模型很有用。

norm{‘l1’, ‘l2’},默认='l2'

用于标准化术语向量的范数。 None 表示没有标准化。

alternate_sign布尔,默认=真

当为 True 时,将交替符号添加到特征中,以近似保存散列空间中的内积,即使对于小的 n_features 也是如此。这种方法类似于稀疏随机投影。

dtype类型,可选

fit_transform() 或 transform() 返回的矩阵类型。

delimiterstr,默认为空格

如果stop_words 不是无,则用作替换停用词的字符串。通常,单词之间的分隔符是一个不错的选择。

例子

from cuml.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)

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cuml.feature_extraction.text.HashingVectorizer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。