如何将预处理器传递给TfidfVectorizer?我创建了一个函数,它接受一个字符串并返回一个预处理字符串然后我将处理器参数设置为该函数"preprocessor=preprocess",但它不起作用。我已经搜索了很多次,但是我没有找到任何例子,好像没有人使用它。
我还有一个问题。它(预处理器参数)是否覆盖使用stop_words和小写参数可以完成的删除停止词和小写大小写?
您只需定义一个函数,该函数接受字符串作为输入并返回要预处理的内容。例如,对大写字符串的一个简单函数是这样的:
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,但预处理函数会覆盖它。这在文档中也有提到:
preprocessor: callable或None(默认)覆盖预处理(字符串转换)阶段,同时保留标记化和n-g生成步骤