I'm trying to use TF-IDF। मैं कुछ दस्तावेजों के लिए tf_idf गणना की है, लेकिन अब जब मैं इन दस्तावेजों मैं एक ट्रैस बैक कहावत मिल दोनों के बीच कोसाइन समानता की गणना करने के लिए प्रयास करें:कोसाइन विभिन्न लंबाई के वेक्टरों की समानता? श्रेणियों में दस्तावेज़ों को सॉर्ट करने के लिए
#len(u)==201, len(v)==246
cosine_distance(u, v)
ValueError: objects are not aligned
#this works though:
cosine_distance(u[:200], v[:200])
>> 0.52230249969265641
वेक्टर टुकड़ा करने की क्रिया है ताकि लेन (यू) == लेन (वी) सही दृष्टिकोण? मुझे लगता है कि कोसाइन समानता विभिन्न लंबाई के वैक्टरों के साथ काम करेगी।
मैं this function उपयोग कर रहा हूँ:
def cosine_distance(u, v):
"""
Returns the cosine of the angle between vectors v and u. This is equal to
u.v/|u||v|.
"""
return numpy.dot(u, v)/(math.sqrt(numpy.dot(u, u)) * math.sqrt(numpy.dot(v, v)))
इसके अलावा - वैक्टर महत्वपूर्ण में tf_idf मानों का क्रम है? क्या उन्हें हल किया जाना चाहिए - या यह इस गणना के लिए कोई महत्व नहीं है?
वैक्टर कि मैं cosine_distance कार्य करने के लिए गुजर रहा हूँ tf_idf मूल्यों का अजगर सूची नहीं है। v [: 5] == [.0060830126968545294, .00048241996565891193, .0020712248617478965, .0110036199241575, .0110036199241575] आपको मामलों कहते हैं - वेक्टर (smallest-> सबसे बड़ा, के आदेश की सामग्री सॉर्ट करने के लिए सही तरीका क्या है क्या दस्तावेज़ में शब्द?) – erikcw
आपको शब्दों के लिए कुछ वैश्विक आदेश असाइन करना होगा। यदि बार 2 में foo से पहले बार प्रकट होता है तो बार के tf_idf मान को पहले आइटम होना चाहिए। – Pace