2013-11-21 12 views
27

का उपयोग कर मैं स्केलेर्न के TfidfVectorizer ऑब्जेक्ट का उपयोग कर एक दस्तावेज़ के लिए tf-idf वेक्टर प्राप्त करने का प्रयास कर रहा हूं। मैं कुछ प्रशिक्षण दस्तावेजों के आधार पर एक शब्दावली बनाता हूं और TfidfVectorizer को प्रशिक्षित करने के लिए fit_transform का उपयोग करता हूं। फिर, मैं किसी दिए गए परीक्षण दस्तावेज़ के लिए टीएफ-आईडीएफ वैक्टर ढूंढना चाहता हूं।स्केलेर्न के TfidfVectorizer का उपयोग

from sklearn.feature_extraction.text import TfidfVectorizer 

self.vocabulary = "a list of words I want to look for in the documents".split() 
self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', 
       stop_words='english') 
self.vect.fit_transform(self.vocabulary) 

... 

doc = "some string I want to get tf-idf vector for" 
tfidf = self.vect.transform(doc) 

समस्या यह है कि इस एन पंक्तियों जहां n मेरी डॉक स्ट्रिंग के आकार है के साथ एक मैट्रिक्स रिटर्न है। मैं चाहता हूं कि यह पूरी स्ट्रिंग के लिए टीएफ-आईडीएफ का प्रतिनिधित्व करने वाले केवल एक वेक्टर को वापस कर दे। प्रत्येक चरित्र को दस्तावेज़ होने के बजाय, मैं इसे एक दस्तावेज़ के रूप में स्ट्रिंग को कैसे देख सकता हूं? साथ ही, मैं पाठ खनन के लिए बहुत नया हूं इसलिए यदि मैं कुछ गलत तरीके से गलत कर रहा हूं, तो यह जानना बहुत अच्छा होगा। किसी भी मदद की सराहना की है।

उत्तर

36

आप केवल एक दिया शब्दावली के लिए गणना करने के लिए tf-आईडीएफ, TfidfVectorizer निर्माता को vocabulary तर्क का उपयोग करना चाहते हैं,

vocabulary = "a list of words I want to look for in the documents".split() 
vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', 
      stop_words='english', vocabulary=vocabulary) 

फिर, फिट करने के लिए, यानी की गिनती की गणना, किसी दिए गए corpus साथ, यानी की एक iterable दस्तावेजों, fit का उपयोग करें:

vect.fit(corpus) 

विधि fit_transform

के लिए एक छोटा है

अंतिम, transform विधि एक कॉर्पस स्वीकार करती है, इसलिए एक दस्तावेज़ के लिए, आपको इसे सूची के रूप में पास करना चाहिए, या इसे प्रतीकों के पुनरावर्तनीय माना जाता है, प्रत्येक प्रतीक एक दस्तावेज़ होता है।

doc_tfidf = vect.transform([doc]) 
+3

तो fit_transform और ट्रांसफॉर्म के बीच क्या अंतर है? मैंने प्रलेखन पढ़ा है, लेकिन मैं स्पष्ट रूप से समझ में नहीं आता। हम दस्तावेजों की सूची में प्रत्येक शब्द की घटनाओं की गणना करने के लिए fit_transform का उपयोग करते हैं? फिर परिवर्तन ... उन गणनाओं को लेता है और दस्तावेजों की सूची के लिए टीएफ-आईडीएफ वेक्टर की गणना करता है? – Sterling

+4

@ स्टर्लिंग आप tfidf रूपांतरण को प्रशिक्षित करने के लिए 'फिट' या 'fit_transform' (अपडेट देखें) का उपयोग करते हैं, और बिना किसी गणना के लागू करने के लिए' ट्रांसफॉर्म 'लागू करने के लिए – alko

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