获取选定的功能名称TFIDF Vectorizer

时间:2017-03-01 06:51:42

标签: python scikit-learn nlp

我使用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。我该如何做到这一点?

2 个答案:

答案 0 :(得分:12)

您可以使用tfidf_vectorizer.get_feature_names()。这将打印原始文档中选择的功能名称(选定的术语)。

您还可以使用tfidf_vectorizer.vocabulary_属性来获取将要素名称映射到其索引的dict,但不会对其进行排序。来自get_feature_names()的数组将按索引排序。

答案 1 :(得分:4)

使用tfidf_vectorizer.vocabulary_,这给出了从特征(术语回到索引)的映射