विभिन्न स्वरूपों के दस्तावेजों की तुलना करते समय TF-IDF और कोसाइन समानता के विकल्प


12

मैं एक छोटे से निजी प्रोजेक्ट पर काम कर रहा हूं, जो एक उपयोगकर्ता की नौकरी कौशल लेता है और उन कौशल के आधार पर उनके लिए सबसे आदर्श कैरियर का सुझाव देता है। मैं इसे प्राप्त करने के लिए नौकरी लिस्टिंग के एक डेटाबेस का उपयोग करता हूं। फिलहाल, कोड निम्नानुसार काम करता है:

1) सूची में वर्णित कौशल निकालने के लिए प्रत्येक नौकरी लिस्टिंग के पाठ को संसाधित करें

2) प्रत्येक कैरियर के लिए (उदाहरण के लिए "डेटा विश्लेषक"), उस कैरियर के लिए नौकरी लिस्टिंग के संसाधित पाठ को एक दस्तावेज़ में संयोजित करें

3) कैरियर दस्तावेजों के भीतर प्रत्येक कौशल की TF-IDF की गणना करें

इसके बाद, मुझे यकीन नहीं है कि मुझे उपयोगकर्ता की कौशल की सूची के आधार पर करियर रैंक करने के लिए किस विधि का उपयोग करना चाहिए। सबसे लोकप्रिय तरीका जो मैंने देखा है वह उपयोगकर्ता के कौशल को एक दस्तावेज के रूप में मानने के लिए होगा, फिर कौशल दस्तावेज़ के लिए TF-IDF की गणना करने के लिए, और कौशल दस्तावेज़ और प्रत्येक के बीच समानता की गणना करने के लिए cosine समानता जैसी किसी चीज़ का उपयोग करें कैरियर दस्तावेज़।

यह मेरे लिए आदर्श समाधान की तरह नहीं लगता है, क्योंकि एक ही प्रारूप के दो दस्तावेजों की तुलना करते समय कोसाइन समानता का सबसे अच्छा उपयोग किया जाता है। उस मामले के लिए, TF-IDF उपयोगकर्ता की कौशल सूची में लागू करने के लिए उपयुक्त मीट्रिक की तरह प्रतीत नहीं होता है। उदाहरण के लिए, यदि कोई उपयोगकर्ता अपनी सूची में अतिरिक्त कौशल जोड़ता है, तो प्रत्येक कौशल के लिए TF गिर जाएगा। वास्तव में, मुझे परवाह नहीं है कि उपयोगकर्ता की कौशल सूची में कौशल की आवृत्ति क्या है - मुझे बस ध्यान है कि उनके पास उन कौशल हैं (और शायद वे उन कौशल को कितनी अच्छी तरह जानते हैं)।

ऐसा लगता है कि निम्नलिखित करने के लिए एक बेहतर मीट्रिक होगा:

1) प्रत्येक कौशल के लिए जो उपयोगकर्ता के पास है, कैरियर दस्तावेजों में उस कौशल की TF-IDF की गणना करें

2) प्रत्येक कैरियर के लिए, उपयोगकर्ता के सभी कौशल के लिए TF-IDF परिणाम प्राप्त करें

3) उपरोक्त योग के आधार पर रैंक कैरियर

क्या मैं यहाँ सही लाइनों के साथ सोच रहा हूँ? यदि हां, तो क्या कोई एल्गोरिदम इन लाइनों के साथ काम करता है, लेकिन एक साधारण राशि की तुलना में अधिक परिष्कृत है? सहायता के लिए धन्यवाद!


3
Doc2vec की जाँच करें, Gensim का कार्यान्वयन है
Blue482

जवाबों:


1

शायद आप कुछ कौशल के बीच की दूरी का बेहतर प्रतिनिधित्व करने के लिए शब्द एम्बेडिंग का उपयोग कर सकते हैं। उदाहरण के लिए, "पायथन" और "आर" को "पायथन" और "समय प्रबंधन" की तुलना में एक साथ करीब होना चाहिए क्योंकि वे सभी प्रोग्रामिंग भाषाएं हैं।

संपूर्ण विचार यह है कि एक ही संदर्भ में दिखाई देने वाले शब्द निकट होने चाहिए।

एक बार जब आप इन एम्बेडिंग, आप उम्मीदवार के लिए कौशल का एक सेट है, और नौकरियों के लिए विभिन्न आकार के कौशल का सेट होगा। फिर आप सेट के बीच की दूरी की गणना करने के लिए अर्थ मूवर की दूरी का उपयोग कर सकते हैं । यह दूरी मापने के बजाय धीमी (द्विघात समय) है, इसलिए यदि आप कई नौकरियों से गुजरना चाहते हैं तो यह अच्छी तरह से पैमाने पर नहीं हो सकता है।

स्केलेबिलिटी के मुद्दे से निपटने के लिए, आप शायद इस आधार पर नौकरियों को रैंक कर सकते हैं कि उम्मीदवार को पहले स्थान पर कितने कौशल हैं, और इन नौकरियों का पक्ष लें।


1

"दस्तावेज़" से मेल करने के लिए एक सामान्य और सरल विधि TF-IDF भार का उपयोग करना है, जैसा कि आपने वर्णित किया है। हालाँकि, जैसा कि मैंने आपके प्रश्न को समझा है, आप उपयोगकर्ताओं के कौशल के आधार पर प्रत्येक कैरियर (-document) को रैंक करना चाहते हैं।

यदि आप कौशल से एक "क्वेरी वेक्टर" बनाते हैं, तो आप वेक्टर को अपने टर्म-कैरियर मैट्रिक्स (सभी tf-idf वेट के साथ मानों के रूप में) से गुणा कर सकते हैं। परिणामी वेक्टर आपको कैरियर-दस्तावेज़ के अनुसार एक रैंकिंग स्कोर प्रदान करेगा, जिसका उपयोग आप "शेयरवेयर" के सेट के लिए टॉप-के करियर लेने के लिए कर सकते हैं।

q¯1×|terms|M|terms|×|documents|v¯M1×|documents|

रैंकिंग की यह विधि सबसे सरल में से एक है और कई विविधताएं मौजूद हैं। विकिपीडिया पर TF-IDF प्रविष्टि भी इस रैंकिंग विधि का संक्षेप में वर्णन करती है। दस्तावेजों के मिलान के बारे में मुझे एसओ पर यह प्रश्नोत्तर भी मिला ।


आश्चर्यजनक रूप से, शब्द एम्बेडिंग का एक सरल औसत अक्सर Tf-Idf भार के साथ किए गए एम्बेडिंग के भारित औसत के रूप में अच्छा होता है।
वैक्सैक्स


0

आप "जेनसिम" का उपयोग करके देख सकते हैं। मैंने असंरचित डेटा के साथ एक समान परियोजना की। जेनसिम ने मानक टीएफआईडीएफ से बेहतर स्कोर दिया। यह भी तेजी से चला।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.