तंत्रिका नेटवर्क पार्स स्ट्रिंग डेटा?


28

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

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

क्या तंत्रिका नेटवर्क में इनपुट के लिए स्ट्रिंग / शब्द / चरित्र डेटा मैप करने का एक मानक तरीका है? या एक तंत्रिका नेटवर्क वास्तव में इस तरह स्ट्रिंग डेटा को पार्स करने के काम के लिए सही उपकरण नहीं है (स्ट्रिंग डेटा में पैटर्न-मिलान के लिए एक बेहतर उपकरण क्या है)?

जवाबों:


19

प्राकृतिक भाषा डेटा पर भविष्यवाणी के लिए एक तंत्रिका नेटवर्क का उपयोग करना एक मुश्किल काम हो सकता है, लेकिन इसे संभव बनाने के लिए प्रयास किए गए और सही तरीके हैं।

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

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

इन विरल वैक्टरों से सीधे निपटना मुश्किल है (कई रेखीय बीजगणित पुस्तकालयों में विरल आदानों से निपटने का एक खराब काम होता है), इसलिए अक्सर अगला कदम आयामीता में कमी है। उसके लिए हम विषय मॉडलिंग के क्षेत्र का उल्लेख कर सकते हैं : लेटेंट डिरिक्लेट आवंटन (एलडीए) और लेटेंट सेमेटिक एनालिसिस (एलएसए) जैसी तकनीकें विषयों के संयोजन के रूप में एक दस्तावेज का प्रतिनिधित्व करके इन विरल वैक्टरों के घने वैक्टर में संपीड़न की अनुमति देती हैं। आप उपयोग किए गए विषयों की संख्या को ठीक कर सकते हैं, और ऐसा करने में एलडीए या एलएसए द्वारा उत्पादित आउटपुट वेक्टर के आकार को ठीक कर सकते हैं। सूचना की न्यूनतम मात्रा को खोने का प्रयास करते हुए यह आयामी कमी की प्रक्रिया इनपुट वेक्टर के आकार को काफी कम कर देती है।

अंत में, इन सभी रूपांतरणों के बाद, आप विषय प्रक्रिया के आउटपुट को अपने तंत्रिका नेटवर्क के इनपुट में फीड कर सकते हैं।


1
मुझे बताएं कि क्या आपके पास और प्रश्न हैं और मैं कुछ और विवरण प्रदान करने की पूरी कोशिश करूंगा।
मैडिसन मई

धन्यवाद, कि मुझे खोज जारी रखने के लिए कुछ महान शर्तें देता है!
आधी रात को

संयोग से, मैं "फीचर हैशिंग" से संबंधित कर सकता हूं क्योंकि यह एक खिल फिल्टर के समान है , जिसे मैं क्रिप्टोक्यूरेंसी कोड के साथ काम करने से परिचित हूं। मुझे आश्चर्य है कि एक हैशिंग फ़ंक्शन का अधिक प्रभावी होना एक इंडेक्स की निशानी को सेट करने के लिए दूसरे हैश फ़ंक्शन की आवश्यकता के बजाय कई इंडेक्स पोज़िशन्स (ब्लूम-फ़िल्टर-स्टाइल) के लिए इनपुट सुविधा से संबंधित है ...
मिडनाइटलाइटनिंग

6

@Emre और @Madison दोनों के जवाब हाथ में मुद्दे के बारे में अच्छे अंक ला सकते हैं। समस्या एनएन के इनपुट के लिए एक फीचर वेक्टर के रूप में आपके स्ट्रिंग का प्रतिनिधित्व करने में से एक है।

सबसे पहले, समस्या उस स्ट्रिंग के आकार पर निर्भर करती है जिसे आप संसाधित करना चाहते हैं। इस सेटिंग में टोकन (आमतौर पर शब्द) वाले लंबे तारों को अक्सर दस्तावेज़ कहा जाता है। व्यक्तिगत टोकन / शब्दों से निपटने के लिए अलग-अलग तरीके हैं।

दस्तावेजों का प्रतिनिधित्व करने के कई तरीके हैं। उनमें से कई बैग-ऑफ- वर्ड्स धारणा बनाते हैं। सरल प्रकार दस्तावेज़ को शब्दों की गिनती, या शब्द आवृत्ति (tf) के वेक्टर के रूप में दर्शाते हैं। दस्तावेज़ की लंबाई के प्रभावों को समाप्त करने के लिए, आमतौर पर लोग उन दस्तावेज़ों की संख्या को सामान्य करना पसंद करते हैं, जिन्हें एक दस्तावेज़, दस्तावेज़ आवृत्ति ( tf-idf ) में दिखाता है ।

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

अलग-अलग शब्दों के लिए, आप शब्द 2vec का उपयोग कर सकते हैं , जो शब्दों को एक मनमाने आकार के स्थान पर एम्बेड करने के लिए NN का लाभ उठाता है। इस सीखा स्थान में दो शब्द वैक्टर के बीच समानता अर्थ समानता के अनुरूप है।

एक और हाल ही में अग्रणी दृष्टिकोण पैराग्राफ वैक्टर का है , जो पहले एक शब्द 2vec-like शब्द मॉडल सीखता है, फिर उस प्रतिनिधित्व पर शब्दों के सेट (किसी भी आकार के दस्तावेज़) के एक वितरित प्रतिनिधित्व सीखने के लिए बनाता है। इसने कई अनुप्रयोगों में अत्याधुनिक परिणाम दिखाए हैं।

एनएलपी में एनएन का उपयोग करते समय, लोग अक्सर विभिन्न आर्किटेक्चर का उपयोग करते हैं, जैसे कि आवर्तक तंत्रिका जाल (जैसे दीर्घकालिक अल्पकालिक मेमोरी नेटवर्क)। में कुछ मामलों लोग भी इस्तेमाल किया है Convolutional तंत्रिका नेटवर्क पाठ पर।


मुझे लगता है कि शब्द 2 वी वास्तव में सवाल का सबसे सटीक उत्तर है। प्रशिक्षण और उपयोग करने के तरीके पर एक बहुत अच्छा कागल ट्यूटोरियल है: kaggle.com/c/word2vec-nlp-tutorial/details/part-2-word-vectors
jagartner

धन्यवाद, मैं शब्द 2vec लिंक को भूल गया, मैं एक (आपके द्वारा यहां सूचीबद्ध सूची के अलावा!)
जोड़ूंगा

3

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

तंत्रिका नेटवर्क के लिए श्रेणीबद्ध चर को सांकेतिक शब्दों में बदलना सीखने के लिए इस ट्यूटोरियल पर एक नज़र डालें । और शुभकामनाएं!


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

मशीन लर्निंग किस तरह की सुविधाओं का उपयोग नहीं करता है?
एमराल

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

मुझे नहीं पता कि आपके "सख्ती से संरचित" से क्या मतलब है।
एमर

कड़ाई से संरचित एक डिक्शनरी के 1d वेक्टर के रूप में है जिसमें एक डिक्शनरी, एक वेट मैट्रिक्स, और स्ट्रिंग्स की एक श्रृंखला का विरोध किया गया है
स्लेटर विक्टरोफ़ जूल

0

मैंने पाठ के साथ तंत्रिका नेटवर्क के परीक्षण-एन-परीक्षण कार्यान्वयन के लिए निम्नलिखित 2 तरीके आज़माए हैं। बाद वाला काफी अच्छा काम करता है, लेकिन सीमाओं के साथ।

  1. Word2vect या NLTK / कस्टम शब्द टोकन का उपयोग करके शब्दावली बनाएं और प्रत्येक शब्द के लिए एक इंडेक्स असाइन करें। यह यह सूचकांक है जो शब्द को संख्या के रूप में दर्शाता है।

    चुनौतियां:

    • इंडेक्स को स्केलिंग सुविधा का उपयोग करके "सामान्यीकृत" किया जाना चाहिए।
    • यदि तंत्रिका नेटवर्क के आउटपुट में थोड़ी भी भिन्नता है, तो आउटपुट अप्रत्याशित शब्द के लिए एक सूचकांक हो सकता है (उदाहरण के लिए यदि आउटपुट 250 है; लेकिन एनएन 249 या 251 आउटपुट करता है, तो यह संख्यात्मक संदर्भ से एक करीब आउटपुट हो सकता है;) वे अलग-अलग शब्दों के अनुक्रमणिका हैं)। उत्पादन सूचकांक उत्पन्न करने के लिए आवर्तक एनएन का लाभ यहां लिया जा सकता है।
    • यदि शब्दावली में नए शब्द जोड़े जाते हैं, तो टोकन इंडेक्स को फिर से स्केल किया जाना चाहिए। पहले से निर्धारित मानों के साथ प्रशिक्षित मॉडल अमान्य हो सकता है और फिर से प्रशिक्षित होना चाहिए।
  2. "N" शब्दों के लिए उदाहरण मैट्रिक्स का उपयोग करें "nx n" या (n-1 x n-1) मैट्रिक्स का उपयोग करें जहां प्रत्येक पंक्ति और स्तंभ एक शब्द का प्रतिनिधित्व करता है। चौराहे सेल में "1" रखो और बाकी जगहों पर "0"। ( संदर्भ )

    चुनौतियां:

    • हर इनपुट और आउटपुट वैल्यू "nx 1" वेक्टर है। बड़े आकार की शब्दावली के लिए इसकी भारी गणना और धीमी है।
    • यदि शब्दावली में नए शब्द जोड़े जाते हैं, तो पहचान मैट्रिक्स (यानी शब्द वेक्टर) को फिर से गणना की जानी चाहिए। पहले से परिकलित वैक्टर के साथ प्रशिक्षित मॉडल अमान्य हो सकता है और उसे फिर से प्रशिक्षित किया जाना चाहिए।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.