2010-12-17 11 views
5

मैं वर्तमान में एक सामान्य उद्देश्य (या व्यावहारिक के रूप में सामान्य) बनाने की कोशिश कर रहा हूं एनएलटीके के साथ पीओएस टैगर। मैंने प्रशिक्षण के लिए ब्राउन और ट्रीबैंक निगम के साथ डब किया है, लेकिन शायद पेड़बैंक कॉर्पस पर बस जाएगा।एमईजीएएम को एनएलटीके क्लासिफायरबेसबेसपोस्टागर के रूप में उपयोग करने का प्रयास कर रहा है?

जैसे ही मैं जाता हूं, मुझे लगता है कि क्लासिफायर पीओएस टैगर्स सबसे सटीक हैं। अधिकतम इकाई वर्गीकरण सबसे सटीक माना जाता है, लेकिन मुझे लगता है कि यह इतना स्मृति (और प्रसंस्करण समय) का उपयोग करता है कि मुझे प्रशिक्षण डेटासेट को काफी कम करना है, इसलिए अंतिम परिणाम डिफ़ॉल्ट बेवकूफ बेयस वर्गीकरण का उपयोग करने से कम सटीक है।

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

maxent_tagger = ClassifierBasedPOSTagger(train=training_sentences, 
             classifier_builder=MaxentClassifier.train) 
+3

क्या आपने पढ़ा है: http://streamhacker.com/2008/11/03/part-of-speech-tagging-with-nltk-part-1/? यदि आप सभी चार लेख देखें तो यह सामान्य रूप से पीओएस टैगर्स पर एक बहुत अच्छी नजरिया है। – perimosocordiae

+1

हां, मेरे पास उनकी पुस्तक है। ब्लॉग में कुछ रोचक दक्षता तुलना है, और मैं अभी तक वर्गीकरण के अंत में एक ब्रिल टैगर जोड़ सकता हूं (सुझाए गए अनुसार); लेकिन पद मेगाम का उल्लेख नहीं करते हैं? शायद मुझे एनएलटीके मैक्सेंट कोड और रिवर्स इंजीनियर को देखने या मेगाम का उपयोग करने के लिए डुप्लिकेट करने की आवश्यकता है। – winwaed

उत्तर

8

यह एक लाइनर ClassifierBasedPOSTagger के लिए एक Megam MaxentClassifier प्रशिक्षण के लिए काम करना चाहिए। बेशक, यह मान लिया गया है Megam पहले से स्थापित है (here जाना डाउनलोड करने के लिए)

maxent_tagger = ClassifierBasedPOSTagger(train=train_sents, classifier_builder=lambda train_feats: MaxentClassifier.train(train_feats, algorithm='megam', max_iter=10, min_lldelta=0.1)) 
+3

https://github.com/japerk/nltk-trainer में checkout train_tagger.py भी चेकआउट करें। कुछ समय बाद मैं एक परिचय लेख लिखूंगा, लेकिन उम्मीद है कि सहायता संदेश शुरू करने के लिए पर्याप्त हैं। – Jacob

+0

धन्यवाद जैकब - यह काम करने लग रहा है! (ऐसा लगता है कि मुझे पाइथन लैम्ब्डा फ़ंक्शंस के बारे में याद दिलाना होगा)। हां, मैंने मेगाम स्थापित किया था, मेरी समस्या पीओएस टैगिंग क्लासिफायरफायर में लगाए गए (जेनेरिक) क्लासिफायर को प्राप्त कर रही थी। अब तक मेरे परीक्षण उन दुर्घटनाएं दे रहे हैं जो बेवकूफ बेयस (लगभग 1% के भीतर) के समान हैं। क्लासिफायरफायर बनाने में अधिक समय लगता है, लेकिन जब तक डिफ़ॉल्ट MaxEnt एल्गोरिदम नहीं होता है। मैंने train_tagger.py प्रिंट किया है - मैं कॉफी ब्रेक के दौरान इसे देख लूंगा :-) – winwaed

+1

आप उच्च सटीकता प्राप्त करने के लिए max_iter या min_lldelta को कम करने का प्रयास कर सकते हैं। वे केवल वे संख्याएं हैं जिन्हें मैं आमतौर पर सटीकता पठार के बाद से उपयोग करता हूं। – Jacob

2

भविष्य उपयोगकर्ताओं के लिए: आप न XQuartz है, तो

$brew tap homebrew/science 
$brew install megam 

:

Megam मैक पर उपलब्ध है , यह आपको पहले प्राप्त करने के लिए कह सकता है। यहां प्रत्यक्ष डाउनलोड लिंक है: http://xquartz.macosforge.org/downloads/SL/XQuartz-2.7.5_rc4.dmg

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

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