2012-03-15 27 views
8

मेरे वर्तमान वेब एप्लिकेशन परियोजना एक छोटे से NLP के लिए कहता है: वाक्य मेंकॉफीस्क्रिप्ट या जावास्क्रिप्ट में मूल एनएलपी - Punkt टोकनज़ैटन, सरल प्रशिक्षित बेयस मॉडल - कहां से शुरू करें?

  • Tokenizing पाठ, पंक्ट और इसी तरह के माध्यम से;
  • अधीनस्थ खंड द्वारा लंबे समय तक वाक्य एक और भी लग रहा है, कोई अनाथ या विधवाओं और कम से कम अजीब विभाजन (शायद)
साथ पैराग्राफ बेडौल के लिए
  • एक बायेसियन मॉडल फिट (अक्सर यह जब यह नहीं है सिवाय अल्पविराम के पर है) का विश्लेषण करना

    ... यदि आपके पास NLTK है - जो मैं करता हूं, तो इसमें से अधिकतर बचपन में आसान काम है, जैसे: ऐप बैकएंड टोरनाडो पर डीजेगो है; आपको लगता है कि इन चीजों को करना एक गैर-मुद्दा होगा।

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

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

    और इसलिए मैंने जो देखा है, उससे जावास्क्रिप्ट को लंबे समय तक नहीं माना गया है, न केवल वेब-विशिष्ट, सामान्य उद्देश्य लाइब्रेरी schmorgasbörd को सी या पायथन (या यहां तक ​​कि एरलांग)। एनएलटीके निश्चित रूप से किसी भी उपाय से एक स्टैंडआउट परियोजना है, लेकिन मुझे केवल पैकिंग के कुछ प्रतिशत की आवश्यकता है।

    लेकिन अब अब मैं एक चौराहे पर हूँ - मैं या तो पर डबल डाउन करने के लिए है:

    • "सीखने वैज्ञानिक जावास्क्रिप्ट तकनीक एल्गोरिदम reimplementing के लिए फिट मैं सबसे अच्छे रूप में फेसबुक दोस्तों हूँ" योजना, या:
    • कम दिलचस्प लेकिन अधिक निर्धारक रूप से करने योग्य "तार पर टोकनिंग के लिए व्यवस्थित है, लेकिन गति और प्रोग्रामिंग की रोचकता की कमी के लिए अतिसंवेदनशील है - वेब-स्तरीय सेवा आर्किटेक्चर के एक मजबूत प्रदर्शन करने वाले पैरागोन में फ़ंक्शन कॉल को बढ़ाकर समुद्र तट मुक्त यूएक्स सुनिश्चित करें , फेसबुक को Google+ की तरह दिखता है "विकल्प।

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

  • +0

    एक और बात जो मैं उल्लेख करना भूल गया था कि क्लाइंटसाइड जावास्क्रिप्ट समाधान के खिलाफ कारक हो सकता है: एनएलटीके, जैसा कि मैंने सामना किया है, अन्य सांख्यिकीय मॉडल की तरह, अक्सर काम करने के लिए प्रशिक्षण डेटा के विशाल ढेर के शीर्ष पर बैठने की आवश्यकता होती है (Punkt tokenizer I ' एम का उपयोग करने की आवश्यकता है) ... मैं इसके बारे में गलत हो सकता हूं (वास्तव में यह अच्छा होगा) लेकिन इसलिए ओबीवी एक समाधान जिसमें क्लाइंट को डी/ला कॉर्पस करना संभव नहीं है। – fish2000

    उत्तर

    3

    मुझे लगता है कि, जैसा कि आपने टिप्पणी में लिखा था, चलाने के लिए कुशल एल्गोरिदम के लिए आवश्यक डेटा की मात्रा अंततः आपको क्लाइंट-साइड करने से रोक देगा। यहां तक ​​कि बुनियादी प्रसंस्करण के लिए बहुत सारे डेटा की आवश्यकता होती है, उदाहरण के लिए बिग्राम/ट्रिग्राम फ्रीक्वेंसी आदि। दूसरी ओर, प्रतीकात्मक दृष्टिकोणों को भी महत्वपूर्ण डेटा (व्याकरण नियम, शब्दकोश, आदि) की आवश्यकता होती है। मेरे अनुभव से, आप कम से कम 3 एमबी से 5 एमबी डेटा के बिना एक अच्छी एनएलपी प्रक्रिया नहीं चला सकते हैं, जो मुझे लगता है कि आज के ग्राहकों के लिए बहुत बड़ा है।

    तो मैं तार पर चीजें करता। इसके लिए मैं एक एसिंक्रोनस/पुश दृष्टिकोण की सिफारिश करता हूं, शायद Faye या सॉकेट.ओओ का उपयोग करें?मुझे यकीन है कि आप एक परिपूर्ण और द्रव यूएक्स प्राप्त कर सकते हैं जब तक कि उपयोगकर्ता फंसे नहीं है, जबकि क्लाइंट पाठ को संसाधित करने के लिए सर्वर की प्रतीक्षा कर रहा है।

    +0

    दरअसल, यह जाने का तरीका दिखता है। विशेष रूप से फेय की सिफारिश करने के लिए धन्यवाद - यह ऐसा कुछ है जिसे मैंने नहीं देखा था, लेकिन यह इसके लिए एक अच्छा मैच प्रतीत होता है। – fish2000

    3

    natural नामक नोड.जेएस के लिए एक बहुत अच्छी प्राकृतिक भाषा प्रसंस्करण है। यह वर्तमान में ब्राउज़र में चलाने के लिए नहीं बनाया गया है, लेकिन लेखकों have stated कि वे इसे ठीक करना चाहते हैं। इसमें से अधिकांश browserify या Require.JS जैसे कुछ का उपयोग कर पहले से ही काम कर सकते हैं।

    +1

    युक्तियों के लिए धन्यवाद: प्राकृतिक पर, जो देखने के लिए एक अच्छा पैकेज की तरह दिखता है; और ब्राउज़र भी, जिसमें से मैं भी अनजान था। – fish2000

    1

    मुझे लगता है कि आपको अपने शेष ऐप से स्वतंत्र एक अलग सेवा को तैनात करना चाहिए जो अधिकांश काम सर्वर पक्ष करता है लेकिन क्लाइंट को कई विकल्प भेज सकता है, जो ग्राहक सोचता है कि क्लाइंट अगले में टाइप करेगा। जब मैं आपके reqs के बारे में पढ़ता हूं, तो मुझे Google, Quora और Yelp जैसी साइटों की खोज स्वत: पूर्ण सुविधा के बारे में लगता है। आपने खोज बॉक्स में केवल 3 या 4 वर्णों में टाइप किया हो सकता है, लेकिन इन सेवाओं के बारे में वे क्या सोचते हैं, इसके आधार पर कई क्वेरी सुझाव भेजे होंगे। यदि आप गतिशील रूप से टोकनिंग टेक्स्ट हैं, तो आपके पास कुछ प्रकार का एनजीआरएम मॉडल (या अन्य परिष्कृत भाषा मॉडल) अनुमान लगा सकता है कि वाक्य कब समाप्त होने जा रहा है और भविष्य में परिणामों के लिए क्या करना है, इसके बारे में बताएं। असल में एक बैकएंड सेवा है जो बहुत सारे परिणामों को प्रीकंप्यूट/कैश कर सकती है और अर्ध-स्मार्ट फ्रंटेंड है जो यह देखने के लिए जांच कर सकती है कि क्या उपयोगकर्ता इनपुट की वर्तमान स्थिति बैकएंड द्वारा भेजे गए अनुमानित राज्यों से पहले कुछ 100 मिलीसेकंड पहले और प्रतीत होता है तुरन्त क्लाइंट के सामने सही चीज करें, बिना किसी मेमोरी/गणना गहन क्रियाओं को करने की कोशिश कर रहे अपने ब्राउज़र को लटकाने के बिना।

    दो विकल्प आपको प्रस्तुत किया है
    1) कर सब कुछ क्लाइंट साइड जो मौजूदा NLP js पुस्तकालयों

    2) सब कुछ सर्वर साइड कर की कमी के कारण तेजी से लेकिन ऐसा करने के लिए बहुत जटिल हो सकता है जो कर रहे हैं आसान हो सकता है, लेकिन अपने आवेदन करने से उपयोगकर्ता के लिए laggy लगते

    मैं

    3 करने के लिए आप पूछ रहा हूँ) सब कुछ सर्वर साइड कर लेकिन आगे के लिए कुछ कदम सोच, और ग्राहक के लिए कई विकल्प भेजने के लिए इतना है कि काम एक जगह पर किया जाता है जहां इसकी आसान एफ या आप इसे करने के लिए, लेकिन ग्राहक तुरंत ऐसा होने लगता है।

    +0

    क्या आप "ग्राहक के लिए कई विकल्प" से क्या मतलब समझ सकते हैं - आपने वाक्यांश को दो बार उपयोग किया है; मेरा सवाल रणनीति के बारे में है/एन/टी/टी जहां एनएलपी फ़ंक्शन कॉल डालना है, लेकिन मेरे वर्तमान कार्यान्वयन के अनुसार, इन कॉलों के विकल्प जारी नहीं हैं। – fish2000