无需每次调用 .fit_transform() 即可访问文档术语矩阵
Access document-term matrix without calling .fit_transform() each time
如果我已经调用了 vectorizer.fit_transform(corpus)
,是稍后打印文档术语矩阵以再次调用 vectorizer.fit_transform(corpus)
的唯一方法吗?
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['the', 'quick','brown','fox']
vectorizer = CountVectorizer(stop_words='english')
vectorizer.fit_transform(corpus) # Returns the document-term matrix
我的理解是通过上面的操作,我现在已经将术语保存到 vectorizer
对象中。我假设这是因为我现在可以调用 vectorizer.vocabulary_
而无需再次传入 corpus
。
所以我想知道为什么没有像.document_term_matrix
这样的方法?
如果数据现在已经存储在 vectorizer
对象中,我必须再次传入 corpus
似乎很奇怪。但是根据文档,只有 .fit
、.transform
和 .fit_transform
return 矩阵。
其他信息:
我正在使用 Anaconda 和 Jupyter Notebook。
您可以简单地将拟合分配给一个变量 dtm
,并且,因为它是一种 Scipy sparse matrix, use the toarray
方法来打印它:
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['the', 'quick','brown','fox']
vectorizer = CountVectorizer(stop_words='english')
dtm = vectorizer.fit_transform(corpus)
# vectorizer object is still fit:
vectorizer.vocabulary_
# {'brown': 0, 'fox': 1, 'quick': 2}
dtm.toarray()
# array([[0, 0, 0],
# [0, 0, 1],
# [1, 0, 0],
# [0, 1, 0]], dtype=int64)
尽管我猜想对于任何现实的文档术语矩阵来说,这 确实 不切实际...您可以改用 nonzero
方法:
dtm.nonzero()
# (array([1, 2, 3], dtype=int32), array([2, 0, 1], dtype=int32))
如果我已经调用了 vectorizer.fit_transform(corpus)
,是稍后打印文档术语矩阵以再次调用 vectorizer.fit_transform(corpus)
的唯一方法吗?
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['the', 'quick','brown','fox']
vectorizer = CountVectorizer(stop_words='english')
vectorizer.fit_transform(corpus) # Returns the document-term matrix
我的理解是通过上面的操作,我现在已经将术语保存到 vectorizer
对象中。我假设这是因为我现在可以调用 vectorizer.vocabulary_
而无需再次传入 corpus
。
所以我想知道为什么没有像.document_term_matrix
这样的方法?
如果数据现在已经存储在 vectorizer
对象中,我必须再次传入 corpus
似乎很奇怪。但是根据文档,只有 .fit
、.transform
和 .fit_transform
return 矩阵。
其他信息:
我正在使用 Anaconda 和 Jupyter Notebook。
您可以简单地将拟合分配给一个变量 dtm
,并且,因为它是一种 Scipy sparse matrix, use the toarray
方法来打印它:
from sklearn.feature_extraction.text import CountVectorizer
corpus = ['the', 'quick','brown','fox']
vectorizer = CountVectorizer(stop_words='english')
dtm = vectorizer.fit_transform(corpus)
# vectorizer object is still fit:
vectorizer.vocabulary_
# {'brown': 0, 'fox': 1, 'quick': 2}
dtm.toarray()
# array([[0, 0, 0],
# [0, 0, 1],
# [1, 0, 0],
# [0, 1, 0]], dtype=int64)
尽管我猜想对于任何现实的文档术语矩阵来说,这 确实 不切实际...您可以改用 nonzero
方法:
dtm.nonzero()
# (array([1, 2, 3], dtype=int32), array([2, 0, 1], dtype=int32))