6

Я хочу добавить еще несколько слов в stop_words в TfidfVectorizer. Я следовал за решением в Adding words to scikit-learn's CountVectorizer's stop list. В списке прекращенных слов теперь содержатся слова «английский» и слова остановки, которые я указал. Но TfidfVectorizer не принимает мой список слов остановки, и я все еще могу видеть эти слова в списке моих функций. Ниже мой кодДобавление слов в список stop_words в TfidfVectorizer в sklearn

from sklearn.feature_extraction import text 
my_stop_words = text.ENGLISH_STOP_WORDS.union(my_words) 

vectorizer = TfidfVectorizer(analyzer=u'word',max_df=0.95,lowercase=True,stop_words=set(my_stop_words),max_features=15000) 
X= vectorizer.fit_transform(text) 

Я также попытался установить stop_words в TfidfVectorizer как stop_words = my_stop_words. Но все равно это не сработает. Пожалуйста помоги.

+0

Я использовал ваш код и работал как [здесь] (https://gist.github.com/anonymous/043a0099b4c388d0686d). Я получил ожидаемый результат. Можете ли вы предоставить более подробную информацию? –

+0

Я классифицирую твиты, содержащие URL-адреса. Теперь мои функции, которые я извлекаю с помощью SelectKBest, содержат эти URL-адреса. Поэтому я подумал о добавлении этих URL-адресов в список стоп-слов, чтобы он удалялся из моего набора функций. Я добавил эти URL-адреса, как показано выше. – ac11

+0

Вот как моя остановка список слов выглядит следующим образом: frozenset ([ '', 'wA4qNj2o0b', 'все', 'fai5w3nBgo', 'Ikq7p9ElUW', '9W6GbM0MjL', 'четыре', 'WkOI43bsVj', 'x88VDFBzkO' , 'чей', 'YqoLBzajjo', 'NVXydiHKSC', 'HdjXav51vI', 'q0YoiC0QCD', 'to', 'cTIYpRLarr', 'nABIG7dAlr', 'под', '6JF33FZIYU', 'very', 'AVFWjAWsbF']) – ac11

ответ

1

Это отвечает здесь: https://stackoverflow.com/a/24386751/732396

Даже если sklearn.feature_extraction.text.ENGLISH_STOP_WORDS является frozenset, вы можете сделать копию и добавить свои собственные слова, а затем передать эту переменную в к stop_words аргумент в виде списка.

0

Вот пример:

from sklearn.feature_extraction import text 
from sklearn.feature_extraction.text import TfidfVectorizer 

my_stop_words = text.ENGLISH_STOP_WORDS.union(["book"]) 

vectorizer = TfidfVectorizer(ngram_range=(1,1), stop_words=my_stop_words) 

X = vectorizer.fit_transform(["this is an apple.","this is a book."]) 

idf_values = dict(zip(vectorizer.get_feature_names(), vectorizer.idf_)) 

# printing the tfidf vectors 
print(X) 

# printing the vocabulary 
print(vectorizer.vocabulary_) 

В этом примере я создал векторы tfidf для двух образцов документов:

"This is a green apple." 
"This is a machine learning book." 

По умолчанию this, is, a и an все в списке ENGLISH_STOP_WORDS. И я также добавил book в список стоп-слов. Это выход:

(0, 1) 0.707106781187 
(0, 0) 0.707106781187 
(1, 3) 0.707106781187 
(1, 2) 0.707106781187 
{'green': 1, 'machine': 3, 'learning': 2, 'apple': 0} 

Как видим, слово book также удаляется из списка функций, потому что мы перечислили его как стоп-слова. В результате tfidfvectorizer действительно принял добавленное вручную слово как слово-стоп и проигнорировал слово во время создания векторов.