如何将预处理器传递给TfidfVectorizer? - sklearn - python

时间:2014-05-24 22:28:44

标签: python preprocessor scikit-learn

如何将预处理器传递给TfidfVectorizer? 我创建了一个函数,它接受一个字符串并返回一个预处理的字符串 然后我将处理器参数设置为该函数"预处理器=预处理",但它不起作用。 我搜索了很多次,但我没有找到任何例子,好像没有人使用它。

我有另一个问题。 它(预处理器参数)是否覆盖了删除停用词和使用stop_words和小写参数可以完成的低级情况?

1 个答案:

答案 0 :(得分:21)

您只需定义一个函数,该函数将字符串作为输入并返回要预处理的内容。因此,例如,对大写字符串的简单函数将如下所示:

def preProcess(s):
    return s.upper()

完成功能后,只需将其传递到TfidfVectorizer对象即可。例如:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
     'This is the first document.',
     'This is the second second document.',
     'And the third one.',
     'Is this the first document?'
     ]

X = TfidfVectorizer(preprocessor=preProcess)
X.fit(corpus)
X.get_feature_names()

结果:

[u'AND', u'DOCUMENT', u'FIRST', u'IS', u'ONE', u'SECOND', u'THE', u'THIRD', u'THIS']

这会间接回答您的后续问题,因为尽管将小写设置为true,但使用大写的预处理函数会覆盖它。文档中也提到了这一点:

  

预处理器:callable或None(默认值)覆盖预处理   (字符串转换)阶段,同时保留令牌化和   n-gram生成步骤。