मैं sckit-learn
पर बिल्कुल नया हूं और उलझन में हूं क्योंकि TfidVectorizer
कभी-कभी एक ही दस्तावेज़ के लिए एक अलग वेक्टर लौटा रहा है।scikit TfidfVectorizer.transform() उसी दस्तावेज़ के लिए अलग-अलग परिणाम देता है
मेरे कॉर्पस में> 100 दस्तावेज़ हैं।
मैं चल रहा हूँ:
vectorizer = TfidfVectorizer(ngram_range=(1, 2), token_pattern=r'\b\w+\b', min_df=1)
X = vectorizer.fit_transform(corpus)
TfidVectorizer
प्रारंभ करने और कोष में दस्तावेजों को फिट करने के लिए। corpus
टेक्स्ट स्ट्रिंग्स की एक सूची है।
बाद में, अगर मैं कार्य करें:
test = list(vectorizer.transform([corpus[0]]).toarray()[0])
test == list(X.toarray()[0])
परिणाम False
है।
यदि मैं क्रमशः list(X.toarray()[0])
और test
के पहले 20 आइटम प्रिंट करता हूं, तो आप देख सकते हैं कि वे एक अंश से दूर हैं, जब मैं उन्हें समान होने की अपेक्षा करता हूं।
[0.16971458376720741, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
बनाम
[0.16971458376720716, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
लेकिन अगर मैं कार्य करें:
test_1 = list(vectorizer.transform([corpus[0]).toarray()[0])
test_2 = list(vectorizer.transform([corpus[0]).toarray()[0])
test_1 == test_2
परिणाम True
है। ऊपर, मैं अनिवार्य रूप से वेक्टर की गणना दो बार कर रहा हूं, जो मैंने सोचा था कि मैं पहले उदाहरण में कर रहा था (चूंकि एक्स fit_transform
के दौरान वापस आने वाले वैक्टर रखता है)।
क्यों, मेरे पहले उदाहरण में वेक्टर अलग हैं? क्या मुझसे यहां कुछ गलत हो रहा है?
बिल्कुल सही नहीं है कि क्या हो रहा है, कुछ प्रकार की राउंडिंग त्रुटि शायद, मुझे लगता है कि यह शायद चिंताजनक नहीं है। – maxymoo
हम्म ठीक है। हाँ बस मुझे परेशान कर रहा था। प्रतिक्रिया के लिए धन्यवाद। – deef