我已经从大约3000份文档中提取了非结构化的文本数据,并试图使用这些数据对文档进行分类。
然而,即使在去除了停用词和标点符号,并对数据进行了词形还原后,计数向量化仍然产生了超过64000个特征。
这些特征中有很多包含不必要的标记,如随机数字和不同语言的文本。
我使用过的库包括:
- 分词:Punkt(NLTK)
- 词性标注:Penn Treebank(NLTK)
- 词形还原:WordNet(NLTK)
- 向量化:CountVectorizer(sk-learn)
谁能建议我如何减少用于训练分类器的特征数量?
回答:
你有两个选择,可以互补使用:
- 使用更强的规则和正则表达式来更改你的分词方法,以去除你不感兴趣的数字或其他标记。
- 使用特征选择来保留对分类有用的特征子集。以下是一个演示代码示例,用于保留数据中50%的特征:
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectPercentilefrom sklearn.feature_selection import chi2import numpyiris = load_iris()X, y = iris.data, iris.targetselector = SelectPercentile(score_func=chi2, percentile=50)X_reduced = selector.fit_transform(X, y)