我正在尝试从文本数据集中手动提取要素并将其提供给sklearn管道,如下所示 -

clf_SVM = Pipeline([
  ('features', FeatureUnion([
      ('tf_idf', TfidfVectorizer(ngram_range=(1,3), use_idf=True, analyzer='word', lowercase=True, encoding='utf-8', stop_words='english', tokenizer=prepro.tok, min_df=3))
    ('manual_features', prepro.extractmanualfeatures())
  ])),
  ('chi2', SelectKBest(chi2, k=1200)),
  ('classifier', LinearSVC())
])

我正在使用FeatureUnion,它将从tf_idf中提取特征f1,并从manual_features中提取f2并将它们组合在一起,即两个提取在同一数据集上并行运行 .

现在我想首先运行manual_features,然后在生成的语料库运行tf_idf . 由于manual_features是一个令牌提取器,我可以在tf_idf的tokenizer参数中提供它,它可以正常工作 .

这里的问题是我在manual_features提取器中设置了一些规则,比如从文本中提取“can any_word {0,3} POS-verb”模式的出现 . 如果这个提取器在tf_idf中作为tokenizer的一部分工作,那么它会考虑“你能做到”和“你可以工作”作为不同的功能,而我希望它们都被认为是相同的功能类型,即“可以POS-verb” ” . 怎么做到这一点?