2015-07-10 97 views
0

我想一个接一个地使用几种信息检索技术。对于每一个我想要的文本进行预处理完全相同的方式。我的预处理文本是以单词列表的形式提供的。不幸的是scikit-learn TfidfVectorizer似乎只接受字符串列表。目前,我做这样的(这当然是非常低效的):TFIDF与以前预处理的数据

from sklearn.feature_extraction.text import TfidfVectorizer 

train_data = [["the","sun","is","bright"],["blue","is","the","sky"]] 

tfidf = TfidfVectorizer(tokenizer=lambda i:i.split(",")) 
converted_train = map(lambda i:",".join(i), train_data) 
result_train = tfidf.fit_transform(converted_train) 

是否有使用scikit-学习TfidfVectorizer直接在这种预处理的数据进行信息检索的方法吗?

如果没有,是否可以让TfidfVectorizer进行预处理并在之后重新使用其预处理的数据?

回答

1

我自己找到了答案。我的问题是,我只是用无作为TfidfVectorizer的标记生成器:

tfidf = TfidfVectorizer(tokenizer=None) 

你必须改用一个标记刚刚转发数据。此外,您必须确保,矢量化程序不会将列表转换为小写字母(不起作用)。一个工作实例是:

from sklearn.feature_extraction.text import TfidfVectorizer 

train_data = [["the","sun","is","bright"],["blue","is","the","sky"]] 

tfidf = TfidfVectorizer(tokenizer=lambda i:i, lowercase=False) 
result_train = tfidf.fit_transform(train_data)