2014-05-24 6 views
8

मैं TfidfVectorizer को प्रीप्रोसेसर कैसे पास कर सकता हूं? मैंने एक फ़ंक्शन बनाया है जो एक स्ट्रिंग लेता है और एक प्रीप्रोसेस्ड स्ट्रिंग देता है, फिर मैं उस फ़ंक्शन "प्रोप्रोसेसर = प्रीप्रोसेस" में प्रोसेसर पैरामीटर सेट करता हूं, लेकिन यह काम नहीं करता है। मैंने कई बार खोज की है, लेकिन मुझे कोई उदाहरण नहीं मिला जैसे कोई इसका उपयोग नहीं करता है।मैं TfidfVectorizer को प्रीप्रोसेसर कैसे पास कर सकता हूं? - sklearn - पायथन

मेरे पास एक और सवाल है। क्या यह (प्रीप्रोसेसर पैरामीटर) स्टॉपवर्ड और लोअरकेस केस को हटाकर ओवरराइड करता है जो stop_words और लोअरकेस पैरामीटर का उपयोग करके किया जा सकता है?

उत्तर

12

आप बस एक फ़ंक्शन को परिभाषित करते हैं जो इनपुट के रूप में एक स्ट्रिंग लेता है और प्रीप्रोसेस्ड होने वाला है। उदाहरण के लिए अपरकेस तार करने के लिए एक छोटी सी समारोह इस प्रकार दिखाई देगा:

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

बार जब आप अपने समारोह तो बना दिया है तो आप बस अपने TfidfVectorizer वस्तु में इसे पारित। में

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

परिणाम::

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

यह परोक्ष रूप से अपने अनुवर्ती सवाल का जवाब के बाद से लोअरकेस किया जा रहा है यह अपरकेस ओवरराइड करने के लिए सच है, preprocess समारोह के लिए सेट के बावजूद उदाहरण के लिए। यह भी दस्तावेज में उल्लेख किया गया है:

पूर्वप्रक्रमक: प्रतिदेय या कोई नहीं (डिफ़ॉल्ट) preprocessing (स्ट्रिंग परिवर्तन) चरण ओवरराइड जबकि tokenizing और एन-ग्राम पीढ़ी चरणों संरक्षण।

+0

यह बहुत स्पष्ट है। धन्यवाद :) – eman

संबंधित मुद्दे