Python Scikit学习:don';不要用一些词作为一个词的特征,而要用在搭配中

Python Scikit学习:don';不要用一些词作为一个词的特征,而要用在搭配中,python,scikit-learn,text-classification,Python,Scikit Learn,Text Classification,我正在使用Python和scikit学习进行文本分类 现在,我使用TfidfVectorizer作为向量器(用于将原始文本转换为特征向量),使用多项式NB作为分类器。 我使用参数ngram_range=(1,2)(参见),例如,我使用一个单词和bigrams 在测试集和CV集中对我的算法进行分类和测试之后,我想提高精度。 我看到了信息量最大的功能(由于问题)。我发现,在这组信息量最大的特征中,我有一些词(ngram=1),它们对分类没有影响,但在bigram(词语搭配)中,它们会产生很大的影响

我正在使用Python和scikit学习进行文本分类

现在,我使用TfidfVectorizer作为向量器(用于将原始文本转换为特征向量),使用多项式NB作为分类器。 我使用参数ngram_range=(1,2)(参见),例如,我使用一个单词和bigrams

在测试集和CV集中对我的算法进行分类和测试之后,我想提高精度。 我看到了信息量最大的功能(由于问题)。我发现,在这组信息量最大的特征中,我有一些词(ngram=1),它们对分类没有影响,但在bigram(词语搭配)中,它们会产生很大的影响

<> P>所以,我不能使用StaskWord,因为TFIDFVECZER不会在搭配中考虑这个词,我也不能用同样的理由使用预处理器。
问题:如何排除tfidfvectorizer中的某些单词,但将这些单词保存在不同的搭配中?

我认为有几种可能的方法:

  • 使用
    ngram_range=(1,2)
    构造两个
    TfidfVectorizer
    两次。在安装第一个矢量器后提取特征名称,过滤掉不需要的unigram特征,并将此特征列表作为第二个矢量器的
    词汇表
    参数提供。使用第二个矢量器进行变换

  • 提供
    TfidfVectorizer
    analyzer
    参数作为一个函数,该函数从每个原始文档中执行自定义的特征提取,例如,避免将一些无用的单字符吐出作为特征(但这意味着您需要自己生成单词组合)

  • 像往常一样安装一个
    TfidfVectorizer
    ,它可能包含一些不需要的Unigram。使用
    get\u feature\u names()
    获取与所需特征对应的列索引。使用矢量器执行
    transform()
    时,请执行额外的步骤,根据感兴趣的索引对生成的稀疏矩阵的列进行切片