Python 中的通用矩阵计算,TF-IDF
General Matrix computation in Python, TF-IDF
在生成 TF-IDF 模块时,我刚刚遇到了这个矩阵向量计算。
A % b = C
[[1,2], [3,4]] % [1/2, 1/3] = [[1/2, 2/3], [3/2, 4/3]]
此处 A
是 Document x Words
的矩阵,其中 A_ij
是文档 j
中单词 i
的词频计数。而b
向量是为每个词预先计算的IDF值,例如如果在7个不同的文档中使用词j
,则b_j
是1/7。
人们怎么称呼这种逐列乘法?
是否有任何现有的库支持此操作? (Python)
- 因为大尺寸和稀疏性,我一直在
scipy
中使用csr_matrix
来保存矩阵。
- 我试图将它们更改为 np.array 并执行
A*b
操作,但是它并没有在几分钟内完成。
使用NumPy。
是逐元素乘法:
import numpy as np
A = np.array([[1, 2], [3, 4]])
b = np.array([1/2, 1/3])
print(A * b)
输出:
[[ 0.5 0.66666667]
[ 1.5 1.33333333]]
如果csr_matrix:
from scipy.sparse import csr_matrix
x1 = csr_matrix([[1, 2], [3, 4]])
x2 = csr_matrix([1/2, 1/3])
print(x1.multiply(x2).todense())
输出:
[[ 0.5 0.66666667]
[ 1.5 1.33333333]]
在生成 TF-IDF 模块时,我刚刚遇到了这个矩阵向量计算。
A % b = C
[[1,2], [3,4]] % [1/2, 1/3] = [[1/2, 2/3], [3/2, 4/3]]
此处 A
是 Document x Words
的矩阵,其中 A_ij
是文档 j
中单词 i
的词频计数。而b
向量是为每个词预先计算的IDF值,例如如果在7个不同的文档中使用词j
,则b_j
是1/7。
人们怎么称呼这种逐列乘法? 是否有任何现有的库支持此操作? (Python)
- 因为大尺寸和稀疏性,我一直在
scipy
中使用csr_matrix
来保存矩阵。 - 我试图将它们更改为 np.array 并执行
A*b
操作,但是它并没有在几分钟内完成。
使用NumPy。
是逐元素乘法:
import numpy as np
A = np.array([[1, 2], [3, 4]])
b = np.array([1/2, 1/3])
print(A * b)
输出:
[[ 0.5 0.66666667]
[ 1.5 1.33333333]]
如果csr_matrix:
from scipy.sparse import csr_matrix
x1 = csr_matrix([[1, 2], [3, 4]])
x2 = csr_matrix([1/2, 1/3])
print(x1.multiply(x2).todense())
输出:
[[ 0.5 0.66666667]
[ 1.5 1.33333333]]