NLTK:矢量化后的特征减少

时间:2017-11-29 13:59:23

标签: python machine-learning scikit-learn nlp nltk

我从大约3000个文档中提取了非结构化文本数据,我正在尝试使用此数据对此文档进行分类。

然而,即使删除了停用词&标点符号化和数字化,计数向量化产生超过64000个特征。

许多这些功能包含不必要的令牌,如随机数字和不同语言的文本。

我使用的库是:

  • 标记化:Punkt(NLTK)
  • pos tagging:Penn Treebank(NLTK)
  • 词形还原:WordNet(NLTK)
  • 矢量化:CountVectorizer(sk-learn)

有人可以建议我如何减少训练分类器的功能数量吗?

1 个答案:

答案 0 :(得分:1)

这里有两个选择,可以互补:

  1. 使用正则表达式更强的规则更改您的标记化,以删除您不感兴趣的数字或其他标记。
  2. 使用要素选择来保留与分类相关的要素子集。以下是保存数据中50%功能的代码演示示例:
  3. from sklearn.datasets import load_iris

    from sklearn.feature_selection import SelectPercentile
    from sklearn.feature_selection import chi2
    import numpy
    iris = load_iris()
    X, y = iris.data, iris.target
    selector = SelectPercentile(score_func=chi2, percentile=50)
    X_reduced = selector.fit_transform(X, y)