如何使用 Sklearn 忽略短文档?

How do I ignore short documents with Sklearn?

我正在使用 Sklearn 的 CountVectorizer() 将我的文本文档转换为文章-单词共现矩阵。 它工作得很好,但是我希望它排除与包含少于 k 个单词的文档对应的行。

我试图通过简单的 for 循环来做到这一点,但是当我使用备用数组时它不起作用。这也不是最优雅的代码 - 一定有更好的方法!

下面的代码找到共现矩阵X,循环遍历每一行并检查是否有超过k 个单词。

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(doc)

for i in range(len(data)):
if sum(X[i,:])<k:
    count += 1

您可以使用 getnnz,如下所示:

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(doc)
k = 100
X_reduced = X[X.getnnz(axis=1)>=k]

希望对您有所帮助!