我使用python并希望获得大型数据库的TFIDF表示,我使用以下代码将文档转换为TFIDF格式。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
<!-- (...) -->
</plugins>
</build>
这里我传递一个参数from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(
min_df=1, # min count for relevant vocabulary
max_features=4000, # maximum number of features
strip_accents='unicode', # replace all accented unicode char
# by their corresponding ASCII char
analyzer='word', # features made of words
token_pattern=r'\w{1,}', # tokenize only words of 4+ chars
ngram_range=(1, 1), # features made of a single tokens
use_idf=True, # enable inverse-document-frequency reweighting
smooth_idf=True, # prevents zero division for unseen words
sublinear_tf=False)
tfidf_df = tfidf_vectorizer.fit_transform(df['text'])
。矢量化器将选择最佳特征并返回scipy稀疏矩阵。问题是我不知道哪些功能被选中,我如何将这些功能名称映射回我得到的scipy矩阵?基本上对于max_features
个文档中n
个选定要素,我想要一个m
矩阵,其中所选要素作为列名而不是整数ID。我该如何做到这一点?
答案 0 :(得分:12)
您可以使用tfidf_vectorizer.get_feature_names()
。这将打印原始文档中选择的功能名称(选定的术语)。
您还可以使用tfidf_vectorizer.vocabulary_
属性来获取将要素名称映射到其索引的dict,但不会对其进行排序。来自get_feature_names()
的数组将按索引排序。
答案 1 :(得分:4)
使用tfidf_vectorizer.vocabulary_
,这给出了从特征(术语回到索引)的映射