gpt4 book ai didi

python - Scikit-learn:不要将某些单词用作单个单词特征,而是用于搭配

转载 作者:行者123 更新时间:2023-12-01 05:06:36 25 4
gpt4 key购买 nike

我正在使用 Python 和 scikit-learn 进行文本分类。

现在,我使用 TfidfVectorizer 作为矢量化器(用于将原始文本转换为特征向量),并使用 MultinomialNB 作为分类器。我使用参数 ngram_range = (1,2) (参见 http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html ),例如我使用一个单词和二元组。

在测试集和 CV 集中对我的算法进行分类和测试后,我想提高准确性。我看到了信息最丰富的功能(由于问题 How to get most informative features for scikit-learn classifiers? )。我发现,在信息量最大的特征集中,我有单词(ngram = 1),它们对分类没有影响,但在二元组(单词搭配)中它们会产生很大的影响。

所以,我不能使用 stop_words,因为 Tfidfvectorizer 不会在搭配中考虑这些单词,并且出于同样的原因我不能使用预处理器。问题:如何排除 tfidfvectorizer 中的某些单词,但将这些单词保存在不同的搭配中?

最佳答案

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

  1. 使用 ngram_range=(1,2) 构造两个 TfidfVectorizer 两次。在拟合第一个向量化器后提取特征名称,过滤掉不需要的一元特征,并将此特征列表作为第二个向量化器的词汇表参数。使用第二个向量化器进行转换。

  2. 提供 TfidfVectorizeranalyzer 参数作为函数,该函数从每个原始文档中执行自定义特征提取,例如避免吐出一些无用的一元组作为特征(但这意味着你需要自己完成生成单词组合的工作)。

  3. 照常安装 TfidfVectorizer,其中可能包含一些不需要的一元组。使用 get_feature_names() 获取与所需功能对应的列索引。当您使用向量化器执行 transform() 时,请根据感兴趣的索引执行额外步骤,对生成的稀疏矩阵的列进行切片。

关于python - Scikit-learn:不要将某些单词用作单个单词特征,而是用于搭配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com