2014-05-24 12 views
8

Come posso passare un preprocessore a TfidfVectorizer? Ho creato una funzione che accetta una stringa e restituisce una stringa preelaborata , quindi ho impostato il parametro del processore su tale funzione "preprocessore = preelaborazione", ma non funziona. Ho cercato così tante volte, ma non ho trovato alcun esempio come se nessuno lo usasse.Come posso passare un preprocessore a TfidfVectorizer? - sklearn - python

Ho un'altra domanda. Il parametro (parametro del preprocessore) ha la precedenza su come rimuovere le stopword e il caso lower che potrebbe essere eseguito utilizzando stop_words e parametri in lettere minuscole?

risposta

12

È sufficiente definire una funzione che accetta una stringa come input e ripristina ciò che deve essere preelaborato. Così, per esempio una funzione banale in stringhe maiuscole sarebbe simile a questa:

def preProcess(s): 
    return s.upper() 

Una volta che avete fatto la vostra funzione poi basta passare nella tua TfidfVectorizer oggetto. Per esempio:

from sklearn.feature_extraction.text import TfidfVectorizer 

corpus = [ 
    'This is the first document.', 
    'This is the second second document.', 
    'And the third one.', 
    'Is this the first document?' 
    ] 

X = TfidfVectorizer(preprocessor=preProcess) 
X.fit(corpus) 
X.get_feature_names() 

risultati in:

[u'AND', u'DOCUMENT', u'FIRST', u'IS', u'ONE', u'SECOND', u'THE', u'THIRD', u'THIS'] 

Questo risponde indirettamente alla tua domanda di follow-up in quanto pur essendo minuscolo impostata su true, la funzione di pre-elaborazione per le sostituzioni maiuscole esso. Questo è anche menzionato nella documentazione:

preprocessore: richiamabile o Nessuno (default) Override preelaborazione (stringa trasformazione) fase preservando la creazione di token e procedura di generazione n-grammi.

+0

Questo è molto chiaro. Grazie :) – eman

Problemi correlati