2016-10-13 6 views
8

मैं इन दो संकुल के एक छोटे से तुलना कर रहा हूँ और यह सुनिश्चित करें किस दिशा में जाने के लिए नहीं कर रहा हूँ क्या मैं संक्षिप्त रहा हूँ है:OpenNLP बनाम स्टैनफोर्ड CoreNLP

  1. वर्णित निकाय को पहचान (लोगों, स्थानों , संगठन और ऐसे)।
  2. लिंग पहचान।
  3. एक सभ्य प्रशिक्षण API।

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

मैंने जो देखा, उसके आधार पर, ओपनएनएलपी नए मॉडल को प्रशिक्षित करना आसान प्रतीत होता है और अकेले उस कारण के लिए अधिक आकर्षक हो सकता है। हालांकि, मेरा सवाल यह है कि जावा ऐप में एनएलपी सुविधाओं को जोड़ने के आधार पर दूसरों के साथ क्या शुरू होगा? मैं ज्यादातर चिंतित हूं कि ओपनएनएलपी अर्ध-त्याग के विरुद्ध "बस परिपक्व" है या नहीं।

उत्तर

7

पूर्ण प्रकटीकरण में, मैं CoreNLP में योगदानकर्ता हूं, इसलिए यह एक पक्षपातपूर्ण उत्तर है। लेकिन, अपनी तीन मानदंडों पर मेरे विचार में:

  1. वर्णित निकाय को मान्यता: मुझे लगता है CoreNLP स्पष्ट रूप से यहाँ जीतता है, दोनों सटीकता पर और आसानी से उपयोग। एक के लिए, ओपनएनएलपी में एनईआर टैग प्रति मॉडल है, जबकि कोरएनएलपी एक ही एनोटेटर के साथ सभी टैग का पता लगाता है। इसके अलावा, SUTime के साथ अस्थायी संकल्प CoreNLP में एक अच्छा पर्क है। सटीकता के अनुसार, मेरा अचूक अनुभव यह है कि CoreNLP सामान्य उद्देश्य वाले पाठ पर बेहतर करता है।

  2. लिंग पहचान। मुझे लगता है कि दोनों टूल्स इस मोर्चे पर खराब तरीके से दस्तावेज हैं। ओपनएनएलपी में एक लिंग मॉडल श्रेणी है; कोरएनएलपी में लिंग एनोटेटर है।

  3. प्रशिक्षण API। मुझे संदेह है कि ओपनएनएलपी प्रशिक्षण एपीआई ऑफ-द-शेल्फ प्रशिक्षण के लिए उपयोग में आसान है। लेकिन, यदि आप बस इतना करना चाहते हैं, उदाहरण के लिए, एक CoNLL फ़ाइल से मॉडल को प्रशिक्षित करें, तो दोनों को सीधा होना चाहिए। कोरनएलपी के साथ प्रशिक्षण की गति तेज है जो मैंने कोशिश की है, लेकिन मैंने इसे औपचारिक रूप से बेंचमार्क नहीं किया है, इसलिए इसे नमक के अनाज के साथ लें।

-3

यही उद्देश्य और जरूरत पर निर्भर करता है, मैं इन दोनों के बारे में क्या जानते हैं OpenNLP ओपनसोर्स है और CoreNLP बिल्कुल नहीं है।

लेकिन यदि आप सटीकता स्तर Stanford CoreNLP पर देखेंगे तो OpenNLP से अधिक सटीक पहचान है। हाल ही में मैंने Part Of Speech (POS) दोनों के लिए टैगिंग की तुलना की और हां जो कि किसी भी एनएलपी कार्य में सबसे अधिक हिस्सा है, इसलिए मेरे विश्लेषण में विजेता CoreNLP था।

NER के लिए आगे बढ़कर CoreNLP के साथ OpenNLP की तुलना में अधिक सटीक परिणाम हैं।

तो यदि आप अभी शुरू कर रहे हैं तो आप OpenNLP ले सकते हैं यदि आवश्यक हो तो आप Stanford CoreNLP पर माइग्रेट कर सकते हैं।

+6

CoreNLP खुला स्रोत है। इसे गिटहब पर जीपीएल वी 3 के तहत जारी किया गया है। –

3

यहां कुछ देर हो चुकी है, लेकिन हाल ही में मैंने ओपनएनएलपी को इस तथ्य के आधार पर देखा कि स्टैनफोर्ड जीपीएल लाइसेंस प्राप्त है - अगर यह आपके प्रोजेक्ट के लिए ठीक है तो स्टैनफोर्ड को अक्सर बेंचमार्क/अत्याधुनिक के रूप में जाना जाता है NLP।

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

यह OpenNlp की एक ताकत है कि यह बहुत विस्तृत है और अन्य पुस्तकालयों के साथ आसान उपयोग के लिए लिखा है और एकीकृत करने के लिए एक अच्छा एपीआई है - OpenNLP साथ (एक बार आप अपने प्रशिक्षण डेटा है) प्रशिक्षण बहुत सरल है (I wrote about it here - with a pretty lousy generated data set I was able to get ok results identifying foods), और यह बहुत विन्यास है - आप बहुत आसानी से प्रशिक्षण के आसपास सभी मापदंडों कॉन्फ़िगर कर सकते हैं और एल्गोरिदम की एक सीमा का उपयोग कर सकते हैं (perceptron, अधिकतम एन्ट्रापी, and in the snapshot version they have added Naive Bayes)

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

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