2015-11-15 7 views
5

में कस्टम टैग के साथ प्रशिक्षण टैगर मेरे पास Hi here's my [KEYWORD phone number], let me know when you wanna hangout: [PHONE 7802708523]. I live in a [PROP_TYPE condo] in [CITY New York] प्रारूप में टैग किए गए डेटा के साथ एक दस्तावेज़ है। मैं इस प्रकार के टैग किए गए दस्तावेज़ों के सेट के आधार पर एक मॉडल को प्रशिक्षित करना चाहता हूं, और फिर नए दस्तावेज़ों को टैग करने के लिए अपने मॉडल का उपयोग करना चाहता हूं। क्या यह एनएलटीके में संभव है? मैंने chunking और NLTK-Trainer स्क्रिप्ट पर देखा है, लेकिन इनके पास टैग और कॉरपोरेशन का एक सीमित सेट है, जबकि मेरे डेटासेट में कस्टम टैग हैं।एनएलटीके

+0

जैव हिस्सा टैग सही दिशा प्रतीत हो रहा है: जब आपके कोष निम्न स्वरूप (- - पीओएस टैग शब्द आइओबी टैग) में है, तो आप एक पहचानकर्ता को प्रशिक्षित करने के लिए तैयार हैं: //lingpipe-blog.com/2009/10/14/coding-chunkers-as-taggers-io-bio-bmewo-and-bmewo/। इस पर निर्भर करता है कि आप अपने इनपुट को कैसे एन्कोड करते हैं, आपको चॉकिंग के बाद 'PHONE' या 'KEYWORD' की पहचान करने के लिए टैग करने के लिए एक बढ़िया अनाज वर्गीकरण की आवश्यकता हो सकती है। – alvas

+0

क्या आप कुछ और उदाहरण प्रदान कर सकते हैं? क्या वे सभी फोन नंबर हैं? शायद [टैग: सूचना-निष्कर्षण] जोड़ें? – reynoldsnlp

+0

नहीं, डेटा भिन्न है, इसमें फोन नंबर, पते, नाम, तिथियां इत्यादि शामिल हैं। बीआईओ खंड टैग के लिए, क्या कुछ कोड नमूने हैं जिन पर मैं देख सकता हूं? –

उत्तर

1

जिस समस्या को आप हल करना चाहते हैं उसे सबसे अधिक सामान्यतः Named Entity Recognition (NER) कहा जाता है। कई एल्गोरिदम हैं जो समस्या को हल करने में आपकी सहायता कर सकते हैं, लेकिन सबसे महत्वपूर्ण धारणा यह है कि आपको अनुक्रम टैगर्स के लिए अपने टेक्स्ट डेटा को उपयुक्त प्रारूप में बदलने की आवश्यकता है।

I  O 
love O 
Paris B-LOC 
and O 
New B-LOC 
York I-LOC 
.  O 

वहाँ से, आप इस तरह के अनुभवहीन Bayes, SVM, MAXENT, सीआरएफ, आदि वर्तमान में ऐसे बहु के लिए सबसे लोकप्रिय एल्गोरिथ्म के रूप में वर्गीकारक, किसी भी प्रकार प्रशिक्षित करने के लिए चुन सकते हैं: यहाँ जैव प्रारूप का एक उदाहरण है -टेकन अनुक्रम वर्गीकरण कार्य CRF है। ऐसे टूल्स उपलब्ध हैं जो आपको ऊपर दिखाए गए प्रारूप (उदाहरण के लिए YamCha, CRF++, CRFSuite, Wapiti) का उपयोग करके फ़ाइल से बीआईओ मॉडल (हालांकि मूल रूप से चंकिंग के लिए लक्षित) को प्रशिक्षित करने देगा। यदि आप पायथन का उपयोग कर रहे हैं तो आप एनएलटीके के अलावा scikit-learn, python-crfsuite और PyStruct देख सकते हैं।

+1

एनएलटीके टूलबॉक्स तीन कॉलम प्रारूप का उपयोग करता है: 'शब्द पीओएस-टैग बीआईओ-टैग'। प्रसंस्करण पाइपलाइन में पीओएस-टैगिंग चरण जोड़ने में कोई दिक्कत नहीं होगी। – alexis

4

@AleksandarSavkov पहले से ही लिखा है, यह अनिवार्य रूप से नामित इकाई पहचान (एनईआर) कार्य है - या अधिक आम तौर पर एक खंडन कार्य, जैसा कि आप पहले से ही महसूस करते हैं। यह कैसे करें एनएलटीके पुस्तक के chapter 7 में अच्छी तरह से कवर किया गया है। मैं अनुशंसा करता हूं कि आप regexp टैगिंग पर अनुभागों को अनदेखा करें और अनुभाग 3, Developing and evaluating chunkers में दृष्टिकोण का उपयोग करें। इसमें कोड नमूने शामिल हैं जो आप एक चंकर बनाने के लिए verbatim का उपयोग कर सकते हैं (ConsecutiveNPChunkTagger)। आपकी ज़िम्मेदारी उन सुविधाओं का चयन करना है जो आपको अच्छा प्रदर्शन देंगे।

आपको एनएलटीके के आर्किटेक्चर द्वारा अपेक्षित आईओबी प्रारूप में अपना डेटा बदलने की आवश्यकता होगी; यह भाषण टैग के हिस्से की अपेक्षा करता है, इसलिए पहला कदम एक पीओएस टैगर के माध्यम से अपना इनपुट चलाने के लिए होना चाहिए; nltk.pos_tag() एक सभ्य पर्याप्त काम करेगा (एक बार जब आप [KEYWORD ...] जैसे मार्कअप को बंद कर देते हैं), और स्थापित करने के लिए कोई अतिरिक्त सॉफ़्टवेयर की आवश्यकता नहीं है। , Http देख

Hi NNP O 
here RB O 
's POS O 
my PRP$ O 
phone NN B-KEYWORD 
number NN I-KEYWORD 
, , O 
let VB O 
me PRP O 
... 
+0

धन्यवाद, मैं पीओएस टैगर के माध्यम से अपना इनपुट चलाने के बाद चरण के बारे में अस्पष्ट हूं। मैं अपने खुद के कस्टम टैग कैसे डालूं? हो सकता है कि मैंने 'KEYWORD' –

+1

जैसे मार्कअप को अलग करके अपना मतलब गलत समझा, मैंने केवल आपकी टिप्पणी देखी ... यह प्रतिक्रिया लगभग आपकी टिप्पणी के रूप में देर हो चुकी है, क्षमा करें! "मार्कअप को अलग करना" का मतलब यह है कि पीओएस टैगर टोकननाइज्ड सादा पाठ के साथ काम करता है; आपको अपने कॉर्पस से खंड खंडों को हटाने, एनएलटीके के साथ पाठ को टोकन करने और टैग करने की आवश्यकता होगी, फिर खंडों को दोबारा डालें (जो आप आईओबी प्रारूप में भी कर सकते हैं, क्योंकि अंत में आपको इसकी आवश्यकता होगी)। यदि आपको अभी भी यह नहीं पता कि यह कैसे करना है, तो मैं और अधिक व्याख्या करने के लिए अपना उत्तर संपादित कर सकता हूं। – alexis

+0

धन्यवाद, यह मदद करता है। तो अंतिम आउटपुट 'शब्द पीओएस-टैग कस्टम-टैग' की एक सूची होगी, है ना? –