Ton*_*cia 5 nlp vectorization python-3.x scikit-learn text-classification
我正在使用 sklearn.feature_extraction.text 中的 HashingVectorizer 函数,但我不明白它是如何工作的。
我的代码
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**3)
X = vectorizer.fit_transform(corpus)
print(X)
Run Code Online (Sandbox Code Playgroud)
我的结果
(0, 0) -0.8944271909999159
(0, 5) 0.4472135954999579
(0, 6) 0.0
(1, 0) -0.8164965809277261
(1, 3) 0.4082482904638631
(1, 5) 0.4082482904638631
(1, 6) 0.0
(2, 4) -0.7071067811865475
(2, 5) 0.7071067811865475
(2, 6) 0.0
(3, 0) -0.8944271909999159
(3, 5) 0.4472135954999579
(3, 6) 0.0
Run Code Online (Sandbox Code Playgroud)
我读了很多关于哈希技巧的论文,比如这篇文章https://medium.com/value-stream-design/introducing-one-of-the-best-hacks-in-machine-learning-the-hashing-技巧-bf6a9c8af18f
我理解这篇文章,但没有看到与上面获得的结果的关系。
你能用简单的例子解释一下HashingVectorizer是如何工作的吗
小智 0
结果是矩阵的稀疏表示(大小 4x8)。
print(X.toarray())
Run Code Online (Sandbox Code Playgroud)
输出:
[[-0.89442719 0. 0. 0. 0. 0.4472136
0. 0. ]
[-0.81649658 0. 0. 0.40824829 0. 0.40824829
0. 0. ]
[ 0. 0. 0. 0. -0.70710678 0.70710678
0. 0. ]
[-0.89442719 0. 0. 0. 0. 0.4472136
0. 0. ]]
Run Code Online (Sandbox Code Playgroud)
为了获取令牌的向量,我们计算其哈希值并获取矩阵中的列索引。该列是标记的向量。
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |