从 HashingVectorizer 中检索词汇

Posted

技术标签:

【中文标题】从 HashingVectorizer 中检索词汇【英文标题】:Retrieving vocabulary from HashingVectorizer 【发布时间】:2019-01-23 08:31:59 【问题描述】:

我使用tfidfVectorizer 使用 tfidf 值作为权重来将我的词向量转换为句子向量。由于遇到内存错误,我决定改用HashingVectorizer。有没有办法像 tfidf_vectorizer.vocabulary_[word] 一样在这个设置中获取给定单词的向量?

【问题讨论】:

【参考方案1】:

HashingVectorizer 是一个无状态的转换器。如documentation of fit()

fit(X, y=None)
    Does nothing: this transformer is stateless.

fit() 方法只是为了与 scikit-learn 中的其他实用程序兼容。 HashingVectorizer 实际上什么都不记得了。所以没有词汇。它只是从提供的文档中获取标记,然后对其进行哈希处理以获取构造函数中n_features 定义的列:

n_features : integer, default=(2 ** 20)

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

【讨论】:

感谢您的回答。您有什么建议可以在不遇到内存错误的情况下获取 TfIdf 并仍然获取词汇表? @grshankar 为此,我需要更多详细信息。您如何将词向量转换为句子向量?你什么时候遇到内存错误?您正在使用的代码等 我通过使用 tfidf 值对词向量(来自 Glove)进行加权来创建句子向量。当我尝试获取 tfidf 值时,内存错误发生在tfidf_vect.fit_transform(data) 步骤

以上是关于从 HashingVectorizer 中检索词汇的主要内容,如果未能解决你的问题,请参考以下文章

哪些搜索引擎完全支持布尔检索?

Hashingvectorizer 和多项式朴素贝叶斯不能一起工作

不了解 sklearn 的 HashingVectorizer

scikit-learn - HashingVectorizer 上的 Tfidf

带有 HashingVectorizer 和 TfidfTransformer 的 SGDClassifier

HashingVectorizer 后输入形状错误 Sklearn 错误