【问题标题】:Imposing a cap on word count in scikit learn在 scikit learn 中设置字数上限
【发布时间】:2018-09-23 11:49:03
【问题描述】:

我正在分析歌词,其中重复并不一定意味着更高的重要性,所以我想限制每个文档的字数。例如,如果一个词在一首歌中出现n 次,其中n > threshold,那么我会将n替换为threshold

我检查了CountVectorizer docs,有min_dfmax_df 的选项,但这些只能忽略出现在一些文档中的单词,而不是出现的单词在一个单个文档中的n

我正在考虑更改稀疏矩阵的元素(例如,查找所有元素 > 阈值,然后替换),但我也找不到解决方法。提前致谢!

【问题讨论】:

    标签: python scikit-learn nlp sparse-matrix text-mining


    【解决方案1】:

    我不知道 scikit learn 中的任何预建功能,但您绝对可以直接编辑您的 doc-term 矩阵,例如 numpy.where

    x = numpy.where(x < threshold, x, threshold)
    

    x 是您的文档术语矩阵,threshold 是您的阈值。

    编辑: 我没有意识到 numpy.where 不适用于 scipy 稀疏矩阵。您可以使用scipy.sparse 中的find function,它将返回稀疏矩阵中的所有非0 索引,以便直接访问和修改这些值:

    from scipy.sparse import find
    
    results = find(x > threshold)
    for i in range(len(results[0])):
        x[results[0][i], results[1][i]] = threshold
    

    它明显不那么优雅,但它可以工作。

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 2016-09-10
      • 2014-07-10
      • 2013-04-10
      相关资源
      最近更新 更多