0

如何获取由创建的词汇表中每个术语的术语频率(TF)sklearn.feature_extraction.text.CountVectorizer并将它们放入列表或字典中?

看来词汇表中所有key对应的值都是小于我在初始化CountVectorizer时手动设置的max_features的int数,而不是TF——应该是浮点数。有人可以帮我吗?

CV=CountVectorizer(ngram_range(ngram_min_file_opcode,ngram_max_file_opcode), 
                   decode_error="ignore", max_features=max_features_file_re,
                   token_pattern=r'\b\w+\b', min_df=1, max_df=1.0) 
x = CV.fit_transform(x).toarray()         
4

1 回答 1

4

如果您期望浮点值,您可能正在寻找TFIDF。在这种情况下,使用sklearn.feature_extraction.text.TfidfVectorizersklearn.feature_extraction.text.CountVectorizer后跟sklearn.feature_extraction.text.TfidfTransformer

如果您实际上只想要 TF,您仍然可以使用TfidfVectorizerCountVectorizer后跟TfidfTransformer,只需确保将/的use_idf参数设置为和(标准化)参数设置为or 。这使 TF 计数标准化。TfidfVectorizerTransformerFalsenorm'l1''l2'

从 SKLearn 文档:

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> corpus = [
...     'This is the first document.',
...     'This document is the second document.',
...     'And this is the third one.',
...     'Is this the first document?',
... ]
>>> vectorizer = CountVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> print(vectorizer.get_feature_names())
['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']
>>> print(X.toarray())  
[[0 1 1 1 0 0 1 0 1]
 [0 2 0 1 0 1 1 0 1]
 [1 0 0 1 1 0 1 1 1]
 [0 1 1 1 0 0 1 0 1]]

该行[0 1 1 1 0 0 1 0 1]对应于第一个文档。第一个元素对应and于文档中出现的次数,第二个document,第三个first等。

于 2018-11-06T09:28:57.417 回答