2015-07-10 80 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)