2010-11-20 13 views
5

मैं एनएलपी के लिए नौसिखिया हूं और यह पता लगाने की कोशिश कर रहा हूं कि नामित इकाई पहचानकर्ता नामित संस्थाओं को कैसे बताता है। मैं स्टैनफोर्ड एनईआर टूलकिट के साथ प्रयोग कर रहा हूं। जब मैं मानक औपचारिक डेटासेट पर एनईआर का उपयोग करता हूं, जहां सभी नामकरण सम्मेलनों का नाम न्यूज़वायर या न्यूज़ ब्लॉग्स जैसे नामित इकाइयों का प्रतिनिधित्व करने के लिए किया जाता है, तो एनईआर इकाइयों को सही ढंग से एनोटेट करता है। हालांकि जब मैं एनईआर को ट्विटर जैसे अनौपचारिक डेटासेट के साथ चलाता हूं, जहां नामित संस्थाओं को पूंजीकृत नहीं किया जाना चाहिए, एनईआर इकाइयों को एनोटेट नहीं करता है। मैं जिस वर्गीकरण का उपयोग कर रहा हूं वह एक 3-सीआरएफ धारावाहिक वर्गीकृत है। क्या कोई मुझे बता सकता है कि मैं एनईआर को कम केस इकाइयों को कैसे पहचान सकता हूं ?? एनईआर को कैसे हैक करने के लिए कोई उपयोगी सुझाव और जहां यह सुधार किया जाना है, इसकी सराहना की जाती है। आपकी सहायता के लिए पहले से धन्यवाद।स्टैनफोर्ड एनईआर टूलकिट - लोअरकेस इकाइयों की मान्यता

+0

आप, टैग ट्वीट पर प्रशिक्षण हैं या आप कर रहे हैं एक पूर्व-मौजूदा मॉडल का उपयोग करने की कोशिश कर रहा है जो शायद पहले ही न्यूज़वायर टेक्स्ट पर प्रशिक्षित है? –

उत्तर

1

मुझे लगता है कि ट्विटर इस एप्लिकेशन के लिए बहुत मुश्किल होगा। पूंजी पत्र एक बड़ा संकेत है, जैसा कि आप कहते हैं, अक्सर ट्विटर पर गायब होते हैं। मान्य अंग्रेजी शब्दों को हटाने के लिए एक शब्दकोश चेक सीमित उपयोग का है क्योंकि ट्विटर ग्रंथों में संक्षेप में संक्षेप में शामिल हैं और वे अक्सर अनूठे होते हैं।

शायद स्पीच टैगिंग का पर्ट, और आवृत्ति विश्लेषण दोनों का उपयोग उचित संज्ञाओं का पता लगाने में सुधार के लिए किया जा सकता है?

+2

उत्तर के लिए धन्यवाद। मैं जो करने की योजना बना रहा हूं, वह नया फीचर सेट का उपयोग कर रहा है जिसमें स्टैनफोर्ड एनएलपी सेरेलिज़र उत्पन्न करने के लिए पूंजी और लोअरकेस पत्र दोनों में इकाइयां शामिल हैं और फिर इसे एनोटेट करने के लिए स्टैनफोर्ड एनईआर का उपयोग करें। मुझे विश्वास करना चाहिए था क्योंकि मुझे विश्वास है कि किसी भी तरह से काम करने और सीरियलाइज़र प्राप्त करने और उस पर स्टैनफोर्ड एनईआर चलाने के बाद, यह सभी संस्थाओं को नाम के रूप में नामित करता है हालांकि मेरे पास डेटािंग डेटा में पीईआर के रूप में केवल एक इकाई है। – Anu

+1

पीओएस टैगिंग बेहतर लगता है, लेकिन मैं पहले से ही स्टैनफोर्ड एनईआर का उपयोग कर बहुत दूर हूं और इसे लोअरकेस के लिए भी चलाने के लिए काम करने के लिए उत्सुक हूं। – Anu

4

मुझे डर है कि प्रशिक्षित मॉडल प्राप्त करने का एक आसान तरीका नहीं है जिसे हम रनटाइम पर केस जानकारी को अनदेखा करने के लिए वितरित करते हैं। तो, हाँ, वे आमतौर पर केवल पूंजीकृत नाम लेबल करेंगे। एक बेकार मॉडल को प्रशिक्षित करना संभव होगा, जो उचित रूप से काम करेगा (लेकिन साथ ही साथ पाठित पाठ पर भी नहीं, क्योंकि अंग्रेजी में एक बड़ा संकेत है (लेकिन जर्मन, चीनी, अरबी आदि में नहीं)।

+3

संशोधित उत्तर: अब हम अपने कई उपकरणों के लिए निर्बाध मॉडल वितरित कर रहे हैं जो बिना किसी टेक्स्ट पर बेहतर प्रदर्शन करेंगे। (हालांकि, साथ ही साथ cased पाठ पर चलने वाले मॉडल भी नहीं चल रहे हैं, क्योंकि पूंजीकरण अंग्रेजी में उपयोगी जानकारी देता है!) आप उन्हें यहां से अलग से डाउनलोड कर सकते हैं: http://nlp.stanford.edu/software/CRF-NER.shtml। –

+0

और अब हमारे पास एक सच्चाईज़र है। अब आप इस प्रश्न का अधिक विस्तृत उत्तर यहां प्राप्त कर सकते हैं: https://stackoverflow.com/questions/45097507/how-to-recognize-a-named-entity-that-is-lowcase-such-as-kobe- ब्रायंट-corenlp द्वारा/45122541 # 45122541 –

2

साथ अन्य लोगों के सुझावों के साथ। यदि आप फीचर-आधारित क्लासिफायरफायर का उपयोग कर रहे हैं, तो मैं निश्चित रूप से लोगों के नामों में 100-200 सबसे आम 3-4 अक्षर सबस्ट्रिंग्स जोड़ सकता हूं या एक मान्यता प्राप्त फीचर के तहत गैजेटर बना सकता हूं। कुछ पैटर्न हैं व्यक्तिगत नामों में काफी कुछ दिखाने के लिए बाध्य है जो अन्य प्रकार के शब्दों में अक्सर दिखाई नहीं देते हैं, जैसे "eli।"

1

प्रश्न थोड़ा पुराना है, लेकिन कोई और इससे लाभ प्राप्त कर सकता है विचार

निचले मामले के लिए क्लासिफायरफायर को संभावित रूप से प्रशिक्षित करने का एक तरीका ऊपरी केस क्लासिफ़ायर को चलाने के लिए होगा जो आपके पास पहले से ही उचित अंग्रेजी सेट के बड़े डेटा सेट के खिलाफ है, फिर केस को हटाने के लिए टैग किए गए टेक्स्ट को संसाधित करें। फिर आपके पास एक टैग किया गया कॉर्पस है जिसका उपयोग आप एक नए वर्गीकृत को प्रशिक्षित करने के लिए कर सकते हैं। ट्वीट्स की विशिष्टताओं के कारण यह नया वर्गीकरण ट्विटर के खिलाफ बिल्कुल सही नहीं होगा, लेकिन यह बूटस्ट्रैप करने का एक त्वरित तरीका है।

4

मुझे पता है कि यह एक पुराना धागा है लेकिन उम्मीद है कि यह किसी की मदद करेगा। जैसा कि क्रिस्टोफर मैनिंग ने जवाब दिया है, लोअरकेस प्राप्त करने का तरीका अंग्रेजी.muc.7class.distsim.crf.ser.gz को english.muc.7class.caseless.distsim.crf.ser.gz के साथ प्रतिस्थापित करना है जिसे आप प्राप्त कर सकते हैं कोर nlp caseless जार फ़ाइल unzip।

उदाहरण के लिए, मेरी अजगर फ़ाइल में मैं सब कुछ एक ही नई फ़ाइल के लिए बदल रहा छोड़कर रखा है और यह पूरी तरह से काम करता है (ठीक है, समय के सबसे)

st = NERTagger('/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/classifiers/english.muc.7class.caseless.distsim.crf.ser.gz', '/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/stanford-ner.jar') 
संबंधित मुद्दे