2009-02-23 10 views
11

बिनराइजेशन क्लासिफायर एल्गोरिदम के लिए अच्छे उदाहरण बनाने के लिए संख्याओं के वैक्टरों में अक्सर एक इकाई की रंगीन विशेषताओं को बदलने का कार्य है।प्राकृतिक भाषा प्रसंस्करण में बिनराइजेशन

अगर हम "बिल्ली को कुत्ते को खा चुके" वाक्य को बिनराइज़ करना चाहते हैं, तो हम प्रत्येक शब्द को एक आईडी (उदाहरण के लिए बिल्ली -1, एटी -2, द -3, कुत्ते -4) निर्दिष्ट करके शुरू कर सकते हैं और फिर बस वेक्टर < 3,1,2,3,4> देने वाले आईडी के द्वारा शब्द को प्रतिस्थापित करें।

इन आईडी को देखते हुए हम प्रत्येक शब्द को चार संभावित स्लॉट देकर एक बाइनरी वेक्टर भी बना सकते हैं, और एक विशिष्ट शब्द से संबंधित स्लॉट सेट कर सकते हैं, वेक्टर < 0,0,1,0,1,0 , 0,0,0,1,0,0,0,0,0,1>। बाद की विधि है, जहां तक ​​मुझे पता है, आमतौर पर बैग-ऑफ-शब्द-विधि के रूप में जाना जाता है।

मेरे सवाल के लिए

अब, क्या सबसे अच्छा binarization विधि जब यह सामान्य रूप में प्राकृतिक भाषा संसाधन के लिए सुविधाओं का वर्णन करने के लिए आता है, और संक्रमण आधारित निर्भरता पार्स करने विशेष रूप से (Nivres एल्गोरिथ्म के साथ) है?

इस संदर्भ में, हम पूरी वाक्य को एन्कोड नहीं करना चाहते हैं, बल्कि पार्स की वर्तमान स्थिति, उदाहरण के लिए इनपुट कतार में पहला शब्द स्टैक पर शीर्ष शब्द। चूंकि आदेश अत्यधिक प्रासंगिक है, यह बैग-ऑफ-शब्द-विधि का नियम है।

सर्वोत्तम के साथ, मैं इस विधि का जिक्र कर रहा हूं जो डेटा को अनावश्यक स्मृति का उपयोग किए बिना क्लासिफायर के लिए सबसे समझदार बनाता है। उदाहरण के लिए, मैं 20000 अद्वितीय शब्दों के लिए 400 मिलियन फीचर्स का उपयोग करने के लिए बिग्राम शब्द नहीं चाहता हूं, अगर केवल 2% बिग्राम वास्तव में मौजूद हैं।

चूंकि उत्तर विशेष वर्गीकरण के आधार पर भी है, इसलिए मैं अधिकतर अधिकतम एन्ट्रॉपी मॉडल (liblinear), सदिश मशीनों (libsvm) और perceptrons का समर्थन करता हूं, लेकिन अन्य मॉडलों पर लागू होने वाले उत्तरों का भी स्वागत है।

+1

मैं क्या binarization है पता नहीं है, और मैं कर रहा हूँ यकीन है कि कई अन्य लोगों को एक ही नाव में हैं, तो यह अच्छा होगा यदि आप आप हम में से जो लोग NLP के साथ अपरिचित हैं के लिए क्या मतलब है की कुछ स्पष्टीकरण दे सकता हैं (अगर हमें इस विषय को समझने में मदद करने के लिए कम से कम जवाब देने में मदद नहीं करना है)। –

+0

वही है - क्या आप बिनराइजेशन को परिभाषित कर सकते हैं? –

+0

शायद आप 'सर्वश्रेष्ठ' यानी, सबसे अधिक अंतरिक्ष कुशल, सबसे अधिक प्रसंस्करण कुशल, सबसे वर्णनात्मक द्वारा आपका मतलब क्या परिभाषित कर सकते हैं। – scotta

उत्तर

4

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

दूसरा महत्वपूर्ण निर्णय यह है कि आप डेटा के बाद डेटा के साथ क्या करने जा रहे हैं। आपके द्वारा प्रस्तुत किए गए बाइनरी रूप में "बैग-ऑफ-शब्द" विधि, शब्द ऑर्डर को अनदेखा करती है, जो summarization of a text या शायद Google- शैली की खोज कर रही है, जहां आपको पर परवाह नहीं है, तो पूरी तरह ठीक है। शब्द प्रकट होते हैं, जब तक वे प्रकट होते हैं। यदि, दूसरी ओर, आप एक कंपाइलर या पार्सर की तरह कुछ बना रहे हैं, तो आदेश बहुत महत्वपूर्ण है। आप टोकन-वेक्टर दृष्टिकोण (जैसा कि आपके दूसरे अनुच्छेद में) का उपयोग कर सकते हैं, या आप बैग-ऑफ-शब्द दृष्टिकोण का विस्तार कर सकते हैं जैसे कि बैग-ऑफ-शब्द वेक्टर में प्रत्येक गैर-शून्य प्रविष्टि में टोकन की रैखिक अनुक्रमणिका स्थिति होती है वाक्यांश में

अंत में, यदि आप parse trees का निर्माण करने जा रहे हैं, तो स्पष्ट कारण हैं कि आप टोकन-वेक्टर दृष्टिकोण के साथ क्यों जाना चाहते हैं, क्योंकि यह प्रत्येक शब्द के लिए उप-वाक्यांश आईडी को बनाए रखने में बड़ी परेशानी है बैग-ऑफ-वेक्टर वेक्टर, लेकिन टोकन-वेक्टर में "सब-वेक्टर" बनाने में बहुत आसान है। असल में, एरिक ब्रिल ने अपने part-of-speech tagger के लिए टोकन-आईडी अनुक्रम का उपयोग किया, जो वास्तव में साफ है।

क्या आपको लगता है कि अगर मैं पूछता हूं कि आप किस विशिष्ट कार्य पर काम कर रहे हैं?

+0

उत्तर की अच्छी शुरुआत के लिए धन्यवाद! :) मैं निश्चित रूप से ब्रिल टोकन-आईडी अनुक्रम का विवरण देखेंगे। टोकन रैखिक सूचकांक का प्रतिनिधित्व करने के लिए एक पूर्णांक के साथ बाउ-प्रस्तुति का उपयोग करने के बारे में, क्या आपको सचमुच लगता है कि यह एक एसवीएम क्लासिफायरफायर के साथ काम करेगा (अच्छा प्रदर्शन देगा)? –

+0

विशिष्ट कार्य निविर्स रैखिक समय, संक्रमण-आधारित पार्सिंग एल्गोरिदम का एक कार्यान्वयन है जो liblinear के अधिकतम एन्ट्रॉपी क्लासिफायर के साथ है। –

+0

@sganslandt: एसवीएम क्लासिफायर के लिए, आप टोकन के बजाय एन-ग्राम्स (बिग्राम, ट्रिग्राम इत्यादि) का उपयोग करने के बारे में सोच सकते हैं - यह स्थानीय प्रासंगिक क्रम को संरक्षित करता है, लेकिन वैश्विक क्रम को अनदेखा करता है। फिर आप नियमित रूप से पुराने बैग के शब्दों का उपयोग कर सकते हैं और फिर भी कुछ संदर्भ जानकारी बनाए रख सकते हैं। – Mike

0

[नहीं एक सीधा जवाब] यह सब क्या आप इस प्रक्रिया को पार्स और फिर करने की कोशिश कर रहे हैं पर निर्भर करता है, लेकिन सामान्य लघु मानव वाक्यांश प्रसंस्करण (जैसे IVT) के लिए एक और तरीका तंत्रिका नेटवर्क का उपयोग करने के पैटर्न सीखना है। यह छोटा सा vocubularies

3

के लिए बहुत acurate binarization का कार्य नंबर, सबसे अधिक बार द्विआधारी वैक्टर की वैक्टर में एक इकाई की रंगीन सुविधाओं बदलने, वर्गीकारक एल्गोरिदम के लिए अच्छे उदाहरण बनाने के लिए है हो सकता है।

मैं ज्यादातर सांख्यिक सुविधाओं है कि मूल्यों0 और 1 के बीच ले (बाइनरी नहीं के रूप में आप का वर्णन) भर में आ गए हैं, (सदिश में विशेष सुविधा की प्रासंगिकता 0% और 100%, जहां 1 के बीच का प्रतिनिधित्व 100% का प्रतिनिधित्व करता है)। इसके लिए एक आम उदाहरण tf-idf वैक्टर हैं: वेक्टर (या वाक्य) का प्रतिनिधित्व करने वाले वेक्टर में, आपके पास संपूर्ण शब्दावली में प्रत्येक शब्द के लिए एक मान है जो उस दस्तावेज़ की प्रासंगिकता को प्रासंगिक दस्तावेज़ के लिए इंगित करता है।

के रूप में माइक पहले ही कहा his reply में, यह एक विस्तृत क्षेत्र में एक जटिल समस्या है। उसके संकेत के अलावा, आप इसे उपयोगी vector space model, vector space classification और latent semantic indexing के रूप में शुरुआती बिंदु की तरह कुछ information retrieval तकनीक पर गौर करने के लिए मिल सकती है। इसके अलावा, word sense disambiguation का क्षेत्र एनएलपी में feature प्रतिनिधित्व मुद्दों के साथ बहुत कुछ करता है।

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