如何使用 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]
希望对您有所帮助!
我正在使用 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]
希望对您有所帮助!