2014-05-24 16 views
8

Bir önişlemciyi TfidfVectorizer'a nasıl geçirebilirim? Bir dize alan ve bir önişlemli dize döndüren bir işlev yaptım, sonra işlemci parametresini "önişlemci = önişlem" işlevine ayarlıyorum, ancak çalışmıyor. Çok fazla kez aradım ama hiç kimsenin kullanmadığı bir örnek bulamadım.Bir önişlemciyi TfidfVectorizer'a nasıl geçirebilirim? - sktearn - python

Başka bir sorum var. (Önişlemci parametresi), stop_words ve küçük harf parametrelerini kullanarak gerçekleştirilebilecek stopwords ve lowereing durumunun kaldırılmasını geçersiz kılar mı?

cevap

12

Sadece bir dizeyi girdi olarak alan ve ön işlemden geçirilecek olan bir işlevi tanımlarsınız. Yani, örneğin büyük harf dizeleri için önemsiz bir fonksiyonu şu şekilde görünecektir:

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

Eğer fonksiyon ardından yaptıktan sonra sadece kendi TfidfVectorizer nesne haline geçerler. çünkü büyük harf geçersiz kılma sadık, önişlem işlevine ayarlanmış küçük bir varlık rağmen

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

Bu dolaylı takip soruya cevap verir: içinde

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() 

Sonuçlar: Örneğin. Bu, aynı zamanda belgelerinde açıklanan:

önişlemci: çağrılabilir veya Yok (varsayılan) tokenizing ve n-gram oluşturma adımlarını korurken ön işleme (string transformasyon) evre geçersiz kılar.

+0

Bu çok açık. Teşekkürler :) – eman

İlgili konular