具有先前预处理数据的TFIDF

时间:2015-07-10 00:32:54

标签: python scikit-learn tf-idf

我试图一个接一个地使用几种信息检索技术。对于每一个我希望文本以完全相同的方式进行预处理。我的预处理文本作为单词列表提供。不幸的是,scikit-learnns TfidfVectorizer似乎只接受字符串列表。目前我这样做(当然效率很低):

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-learn TfidfVectorizer直接对这种预处理数据进行信息检索?

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

1 个答案:

答案 0 :(得分:2)

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

tfidf = TfidfVectorizer(tokenizer=None)

您必须改为使用只转发数据的tokenizer。此外,您必须确保,矢量化器不会将列表转换为小写(这不起作用)。一个工作的例子是:

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)