【问题标题】:General Matrix computation in Python, TF-IDFPython中的通用矩阵计算,TF-IDF
【发布时间】:2016-02-03 02:15:23
【问题描述】:

在生成 TF-IDF 模块时,我遇到了这个矩阵向量计算。

A % b = C

[[1,2], [3,4]] % [1/2, 1/3] = [[1/2, 2/3], [3/2, 4/3]]

这里ADocument x Words 的矩阵,其中A_ij 是文档j 中单词i 的词频计数。而b向量是为每个单词预先计算的IDF值,例如b_j是1/7,如果单词j在7个不同的文档中使用。

人们如何称呼这种逐列乘法? 是否有任何现有的库支持此操作? (Python)

  • 由于大尺寸和稀疏性,我一直在scipy 中使用csr_matrix 来保存矩阵。
  • 我尝试将它们更改为 np.array 并执行 A*b 操作,但是几分钟后它没有完成。

【问题讨论】:

    标签: python matrix tf-idf


    【解决方案1】:

    使用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]]
    

    【讨论】:

    • 如果我一直在为 A 和 b 使用 scipy 矩阵怎么办?
    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 2017-07-01
    • 2015-04-17
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多