2015-02-12 19 views
1

我使用TfidfVectorizer從scikit學習提取特徵, 且該設置:如何在scikit-learn中修復令牌模式?

def tokenize(text): 
    tokens = nltk.word_tokenize(text) 
    stems = [] 
    for token in tokens: 
     token = re.sub("[^a-zA-Z]","", token) 
     stems.append(EnglishStemmer().stem(token)) 
    return stems 

矢量化= TfidfVectorizer(標記生成器=記號化,小寫=真,STOP_WORDS = '英語')

後餵養訓練集來向量化,我叫

vectorizer.get_feature_names() 

輸出包含空格一些重複的話:如

u'', u' ', u' low', u' lower', u'lower', u'lower ', u'lower high', u'lower low' 

而且可接受的輸出應該是:

u'low', u'lower', u'lower high', u'lower low' 

我怎樣才能解決呢?謝謝。

+0

什麼是你的輸入? – 2015-02-12 03:23:49

+0

輸入是鳴叫從stocktwits.com一堆裏面包含了很多俚語 – James 2015-02-12 03:26:43

+0

在'tokenize'功能'stems'列表是一個局部變量,出生並與函數的每次調用死亡。爲什麼你打算根本建立這個清單?它不可能用於任何目的。 – 2015-02-12 03:36:27

回答

0

你可以不喜歡下面,

>>> l = ['lower low', 'lower high','lower ', ' lower', u'lower', ' ', '', 'low'] 
>>> list(set(i.strip() for i in l if i!=' ' and i)) 
['lower', 'lower low', 'lower high', 'low'] 
+0

那麼,什麼是不加標點或導致空間的正則表達式? – James 2015-02-12 04:30:01

+0

你想要什麼與上面做什麼?你期望輸出什麼? – 2015-02-12 04:36:03

+0

我讀sklearn指令,也許我可以設置正則表達式的形式token_pattern。看到http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html – James 2015-02-12 04:51:07

相關問題