Python, SpaCy और Streamlit का उपयोग करके एक संरचित वित्तीय न्यूज़फ़ीड का निर्माण

स्रोत नोड: 1876513

Python, SpaCy और Streamlit का उपयोग करके एक संरचित वित्तीय न्यूज़फ़ीड का निर्माण

नामांकित इकाई पहचान (एनईआर) एप्लिकेशन बनाकर एनएलपी के साथ शुरुआत करना।


By हर्षित त्यागी, डाटा साइंस इंस्ट्रक्टर | मेंटर | YouTuber


Python, SpaCy और Streamlit का उपयोग करके एक संरचित वित्तीय न्यूज़फ़ीड का निर्माण

एनएलपी के बहुत ही रोचक और व्यापक रूप से उपयोग किए जाने वाले अनुप्रयोगों में से एक नामित इकाई पहचान (एनईआर) है।

कच्चे और असंरचित डेटा से अंतर्दृष्टि प्राप्त करना महत्वपूर्ण है। किसी दस्तावेज़ को अपलोड करना और उससे महत्वपूर्ण जानकारी प्राप्त करना सूचना पुनर्प्राप्ति कहलाता है।

सूचना पुनर्प्राप्ति एनएलपी में एक प्रमुख कार्य/चुनौती रही है। और एनईआर (या एनईएल - नामांकित इकाई लिंकिंग) का उपयोग सूचना पुनर्प्राप्ति उद्देश्यों के लिए कई डोमेन (वित्त, दवाएं, ई-कॉमर्स, आदि) में किया जाता है।

इस ट्यूटोरियल पोस्ट में, मैं आपको दिखाऊंगा कि कैसे आप एक कस्टम स्टॉक मार्केट न्यूज फीड विकसित करने के लिए एनईएल का लाभ उठा सकते हैं जो इंटरनेट पर चर्चा कर रहे स्टॉक को सूचीबद्ध करता है।

पूर्व आवश्यक वस्तुएँ

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

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

तो, चलिए इसके साथ चलते हैं, साथ चलते हैं और आपके पास एक न्यूनतम स्टॉक समाचार फ़ीड होगा जिस पर आप शोध करना शुरू कर सकते हैं।

उपकरण/सेटअप की आपको आवश्यकता होगी:

 
 

  1. डेटा और स्पासी लाइब्रेरी के प्रारंभिक परीक्षण और अन्वेषण के लिए Google Colab।
  2. स्ट्रीमलाइट एप्लिकेशन को कोड करने के लिए वीएस कोड (या कोई संपादक)।
  3. शेयर बाजार की जानकारी (समाचार) का स्रोत जिस पर हम एनईआर और बाद में एनईएल का प्रदर्शन करेंगे।
  4. पंडों, स्पासी, स्ट्रीमलिट, स्ट्रीमलिट-स्पेसी (यदि आप कुछ स्पासी रेंडरर्स दिखाना चाहते हैं) जैसे पुस्तकालयों के साथ एक आभासी अजगर वातावरण (मैं कोंडा का उपयोग कर रहा हूं)।

उद्देश्य

 
 
इस परियोजना का लक्ष्य महत्वपूर्ण संस्थाओं (हमारे उदाहरण में सार्वजनिक रूप से कारोबार करने वाली कंपनियों) को निकालने के लिए नामांकित इकाई मान्यता को सीखना और लागू करना है और फिर ज्ञान आधार (निफ्टी 500 कंपनियों की सूची) का उपयोग करके प्रत्येक इकाई को कुछ जानकारी के साथ जोड़ना है।

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


नोट: एनईआर एक अत्याधुनिक समस्या नहीं हो सकती है, लेकिन उद्योग में इसके कई अनुप्रयोग हैं।


प्रयोग और परीक्षण के लिए Google Colab पर जाना:

चरण 1: ट्रेंडिंग स्टॉक समाचार डेटा निकालना

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

अवसर अपार हैं। यह ट्यूटोरियल विभिन्न प्रकार की सूचना पुनर्प्राप्ति समस्याओं को हल करने वाले विभिन्न डोमेन में ऐप्स बनाने के लिए एनईएल को लागू करने के लिए एक कदम पत्थर के रूप में कार्य करना चाहिए।

यदि आप RSS फ़ीड को देखते हैं, तो यह कुछ इस तरह दिखता है:

https://economictimes.indiatimes.com/markets/rssfeeds/1977021501.cms


 

हमारा लक्ष्य इस आरएसएस फ़ीड से टेक्स्ट हेडलाइंस प्राप्त करना है और फिर हम मुख्य संस्थाओं को हेडलाइंस से निकालने के लिए स्पासी का उपयोग करेंगे।

हेडलाइंस अंदर मौजूद हैं यहां एक्सएमएल का टैग।

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

आप कोलाब के कोड सेल से लगभग किसी भी पैकेज को स्थापित करने के लिए निम्न कमांड चला सकते हैं:

!pip install <package_name>

भेजें GET XML दस्तावेज़ को कैप्चर करने के लिए दिए गए लिंक पर अनुरोध करें।

import requestsresp = requests.get("https://economictimes.indiatimes.com/markets/stocks/rssfeeds/2146842.cms")

प्रतिक्रिया वस्तु में आपको क्या मिलता है यह जांचने के लिए सेल चलाएँ।

यह आपको निम्नानुसार HTTP कोड 200 के साथ एक सफल प्रतिक्रिया देनी चाहिए:



अब जब आपके पास यह प्रतिक्रिया वस्तु है, तो हम XML दस्तावेज़ को निम्नानुसार पार्स करने के लिए इसकी सामग्री को सुंदर सूप वर्ग में पास कर सकते हैं:

from bs4 import BeautifulSoupsoup = BeautifulSoup(resp.content, features='xml')
soup.findAll('title')

यह आपको एक पायथन सूची के अंदर सभी शीर्षक देना चाहिए:



लेखक द्वारा छवि

 

बहुत बढ़िया, हमारे पास टेक्स्ट डेटा है जिसमें से हम एनएलपी का उपयोग करके मुख्य संस्थाओं (जो इस मामले में सार्वजनिक रूप से कारोबार करने वाली कंपनियां हैं) को निकालेंगे।

एनएलपी को क्रियान्वित करने का समय आ गया है।

चरण 2: संस्थाओं को सुर्खियों से निकालना

 
 
यह रोमांचक हिस्सा है। हम a . का उपयोग करेंगे पूर्व-प्रशिक्षित कोर भाषा मॉडल से  spaCy एक शीर्षक में मुख्य संस्थाओं को निकालने के लिए पुस्तकालय।

स्पासी और कोर मॉडल के बारे में थोड़ा।

spacy एक ओपन-सोर्स एनएलपी लाइब्रेरी है जो टेक्स्ट डेटा को सुपरफास्ट स्पीड से प्रोसेस करती है। यह एनएलपी अनुसंधान में अग्रणी पुस्तकालय है जिसका उपयोग बड़े पैमाने पर उद्यम-श्रेणी के अनुप्रयोगों में किया जा रहा है। स्पासी समस्या के साथ स्केलिंग के लिए प्रसिद्ध है। और यह 64 से अधिक भाषाओं का समर्थन करता है और TensorFlow और PyTorch दोनों के साथ अच्छा काम करता है।

कोर मॉडल की बात करें तो, स्पासी के पास पहले से प्रशिक्षित भाषा मॉडल के दो प्रमुख वर्ग हैं, जिन्हें हमें अत्याधुनिक निष्कर्ष देने के लिए विभिन्न आकारों के टेक्स्ट डेटा पर प्रशिक्षित किया जाता है।

  1. कोर मॉडल - सामान्य प्रयोजन के बुनियादी एनएलपी कार्यों के लिए।
  2. स्टार्टर मॉडल — आला अनुप्रयोगों के लिए जिन्हें स्थानांतरण सीखने की आवश्यकता होती है। हम मॉडल को शुरू से प्रशिक्षित किए बिना अपने कस्टम मॉडल को ठीक करने के लिए मॉडल के सीखे हुए वजन का लाभ उठा सकते हैं।

चूंकि इस ट्यूटोरियल में हमारा उपयोग केस बुनियादी है, इसलिए हम इसके साथ बने रहेंगे en_core_web_sm कोर मॉडल पाइपलाइन।

तो, चलिए इसे अपनी नोटबुक में लोड करते हैं:

nlp = spacy.load("en_core_web_sm")

नोट: Colab ने इसे हमारे लिए पहले ही डाउनलोड कर लिया है, लेकिन यदि आप इसे अपने स्थानीय सिस्टम में चलाने का प्रयास करते हैं, तो आपको निम्न कमांड का उपयोग करके पहले मॉडल को डाउनलोड करना होगा:

python -m spacy download en_core_web_sm

en_core_web_sm मूल रूप से सीपीयू के लिए अनुकूलित एक अंग्रेजी पाइपलाइन है जिसमें निम्नलिखित घटक हैं:

  • tok2vec - वैक्टर के लिए टोकन (पाठ डेटा पर टोकन करता है),
  • टैगर - प्रत्येक टोकन में प्रासंगिक मेटाडेटा जोड़ता है। स्पासी प्रत्येक टोकन के भाषण के भाग (पीओएस) की भविष्यवाणी करने के लिए कुछ सांख्यिकीय मॉडल का उपयोग करता है। में अधिक दस्तावेज़ीकरण.
  • पार्सर - निर्भरता पार्सर टोकन के बीच संबंध स्थापित करता है।
  • अन्य घटकों में प्रेषक, नेर, एट्रिब्यूट_रूलर, लेमेटाइज़र शामिल हैं।

अब, यह परीक्षण करने के लिए कि यह मॉडल हमारे लिए क्या कर सकता है, मैं तत्काल मॉडल के माध्यम से एक एकल शीर्षक पास करूंगा और फिर वाक्य के विभिन्न भागों की जांच करूंगा।

# make sure you extract the text out of <title> tagsprocessed_hline = nlp(headlines[4].text)

पाइपलाइन टोकन से एनईआर तक सभी कार्य करती है। यहां हमारे पास पहले टोकन हैं:



लेखक द्वारा छवि

 

आप भाषण के टैग किए गए भाग को का उपयोग करके देख सकते हैं pos_ विशेषता।



लेखक द्वारा छवि

 

प्रत्येक टोकन को कुछ मेटाडेटा के साथ टैग किया जाता है। उदाहरण के लिए, व्यापार एक व्यक्तिवाचक संज्ञा है, सेटअप एक संज्ञा है, : विराम चिह्न है, इत्यादि। Tags की पूरी सूची दी गई है यहाँ उत्पन्न करें.

और फिर, आप देख सकते हैं कि वे निर्भरता ग्राफ का उपयोग करके कैसे संबंधित हैं dep_ विशेषता:



लेखक द्वारा छवि

 

यहां, ट्रेड एक कंपाउंड है, सेटअप रूट है, निफ्टी एपोस (एपोजीशनल मॉडिफायर) है। फिर से, सभी वाक्यात्मक टैग मिल सकते हैं यहाँ उत्पन्न करें.

आप निम्न विस्थापन का उपयोग करके टोकन के बीच संबंध निर्भरता की कल्पना भी कर सकते हैं: render() तरीका:

spacy.displacy.render(processed_hline, style='dep',jupyter=True, options={'distance': 120})

जो यह ग्राफ देगा:



लेखक द्वारा छवि

 

इकाई निष्कर्षण

 
 
और वाक्य के महत्वपूर्ण तत्वों को देखने के लिए, आप पास कर सकते हैं 'ent’ एक ही कोड में शैली के रूप में:



लेखक द्वारा चित्र — मैंने एक और शीर्षक का उपयोग किया क्योंकि ऊपर हमने जो शीर्षक इस्तेमाल किया था उसमें कोई इकाई नहीं थी।

 

हमारे पास अलग-अलग संस्थाओं के लिए अलग-अलग टैग हैं जैसे कि दिन में DATE है, ग्लासकोट में GPE है जो देश/शहर/राज्य हो सकते हैं। हम प्रमुख रूप से उन संस्थाओं की तलाश कर रहे हैं जिनके पास ओआरजी टैग है जो हमें कंपनियां, एजेंसियां, संस्थान इत्यादि देगा।

अब हम पाठ से निकाय निकालने में सक्षम हैं। आइए ओआरजी संस्थाओं का उपयोग करके संगठनों को सभी सुर्खियों से निकालने के लिए नीचे उतरें।

यह सभी कंपनियों की सूची निम्नानुसार लौटाएगा:



लेखक द्वारा छवि

 

इतना आसान, है ना?

अब यही है स्पासी का जादू!

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

चरण 3 — नामांकित निकाय लिंकिंग

 
 
यह जानने के लिए कि बाजार में कौन से स्टॉक गुलजार हैं और उनका विवरण अपने डैशबोर्ड पर प्राप्त करना इस परियोजना का लक्ष्य है।

हमारे पास कंपनी के नाम हैं लेकिन उनके ट्रेडिंग विवरण प्राप्त करने के लिए, हमें कंपनी के ट्रेडिंग स्टॉक प्रतीक की आवश्यकता होगी।

चूंकि मैं भारतीय कंपनियों का विवरण और समाचार निकाल रहा हूं, इसलिए मैं के बाहरी डेटाबेस का उपयोग करने जा रहा हूं निफ्टी 500 कंपनियां (एक सीएसवी फ़ाइल)।

प्रत्येक कंपनी के लिए, हम इसे पांडा का उपयोग करने वाली कंपनियों की सूची में देखेंगे, और फिर हम इसका उपयोग करके शेयर बाजार के आँकड़ों पर कब्जा करेंगे। याहू-वित्त पुस्तकालय।

लेखक द्वारा छवि

 

एक बात जो आपको यहां ध्यान देनी चाहिए, वह यह है कि मैंने प्रत्येक स्टॉक प्रतीक के बाद इसे पास करने से पहले एक ".NS" जोड़ा है Ticker की कक्षा yfinance पुस्तकालय। ऐसा इसलिए है क्योंकि भारतीय एनएसई स्टॉक प्रतीकों को ए . के साथ संग्रहीत किया जाता है .NS प्रत्यय yfinance.

और गुलजार स्टॉक नीचे की तरह डेटाफ्रेम में बदल जाएगा:



लेखक द्वारा छवि

 

वोइला! क्या यह महान नहीं है? इतना सरल लेकिन गहरा ऐप जो आपको सही स्टॉक के साथ सही दिशा में इंगित कर सकता है।

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

चरण 4 — Streamlit का उपयोग करके एक वेब ऐप बनाना

 
 
यह एक संपादक के पास जाने और एनएलपी एप्लिकेशन के लिए एक नया प्रोजेक्ट और वर्चुअल वातावरण बनाने का समय है।

ऐसे डेमो डेटा एप्लिकेशन के लिए स्ट्रीमलाइट के साथ शुरुआत करना बेहद आसान है। सुनिश्चित करें कि आपके पास स्ट्रीमलाइट स्थापित है।

pip install Streamlit

अब, app.py नामक एक नई फ़ाइल बनाते हैं और ऐप तैयार करने के लिए कार्यात्मक कोड लिखना शुरू करते हैं।

शीर्ष पर सभी आवश्यक पुस्तकालयों को आयात करें।

import pandas as pdimport requestsimport spacyimport streamlit as stfrom bs4 import BeautifulSoupimport yfinance as yf

अपने आवेदन में एक शीर्षक जोड़ें:

st.title('Buzzing Stocks :zap:')

चलाकर अपने ऐप का परीक्षण करें streamlit run app.pआपके टर्मिनल में y. इसे आपके वेब ब्राउज़र में एक ऐप खोलना चाहिए।

मैंने कई स्रोतों से डेटा कैप्चर करने के लिए कुछ अतिरिक्त कार्यक्षमता जोड़ी है। अब, आप एप्लिकेशन में अपनी पसंद का RSS फ़ीड URL जोड़ सकते हैं और डेटा संसाधित किया जाएगा और ट्रेंडिंग स्टॉक डेटाफ़्रेम में प्रदर्शित किया जाएगा।

संपूर्ण कोड आधार तक पहुंच प्राप्त करने के लिए, आप यहां मेरा भंडार देख सकते हैं:

 
GitHub - dswh/NER_News_Feed
 

आप इसे अधिक कुशल और उपयोगी बनाने के लिए कई स्टाइलिंग तत्व, विभिन्न डेटा स्रोत और अन्य प्रकार के प्रसंस्करण जोड़ सकते हैं।

मेरा ऐप अपनी वर्तमान स्थिति में बैनर में छवि जैसा दिखता है।

यदि आप मुझे चरण-दर-चरण अनुसरण करना चाहते हैं, तो मुझे इस एप्लिकेशन को यहां कोड देखें:

अगला कदम!

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

एक साधारण विचार एक शोध पत्र की सभी महत्वपूर्ण संस्थाओं को निकाल रहा है और फिर Google खोज एपीआई का उपयोग करके इसका ज्ञान ग्राफ बना रहा है।

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

मैं आपको अपनी कल्पना के साथ जंगली जाने के लिए प्रोत्साहित करता हूं।

आप मेरे साथ कैसे जुड़ सकते हैं!

 
 
अगर आपको यह पोस्ट पसंद आया है और आप इस तरह की और सामग्री देखना चाहते हैं, तो आप इसे सब्सक्राइब कर सकते हैं मेरा समाचार पत्र or मेरे यूट्यूब चैनल जहां मैं ऐसी उपयोगी और त्वरित परियोजनाओं को साझा करता रहूंगा जो कोई भी बना सकता है।

यदि आप ऐसे व्यक्ति हैं जो अभी प्रोग्रामिंग के साथ शुरुआत कर रहे हैं या डेटा साइंस या एमएल में जाना चाहते हैं, तो आप मेरा कोर्स यहां देख सकते हैं डब्ल्यूआईपी लेन अकादमी.

इलियट गुन को धन्यवाद।

 
जैव: हर्षित त्यागी वेब प्रौद्योगिकियों और डेटा विज्ञान (उर्फ पूर्ण-स्टैक डेटा विज्ञान) में समेकित अनुभव वाला एक इंजीनियर है। उन्होंने 1000 से अधिक एआई/वेब/डेटा साइंस उम्मीदवारों को सलाह दी है, और डेटा साइंस और एमएल इंजीनियरिंग लर्निंग ट्रैक्स डिजाइन कर रहे हैं। इससे पहले, हर्षित ने येल, एमआईटी और यूसीएलए में अनुसंधान वैज्ञानिकों के साथ डेटा प्रोसेसिंग एल्गोरिदम विकसित किया था।

मूल। अनुमति के साथ पुनर्प्रकाशित।

संबंधित:



शीर्ष आलेख पिछले 30 दिन
सबसे लोकप्रिय
  1. क्या आप पायथन के साथ एक्सेल फाइलें पढ़ते हैं? एक 1000x तेज़ तरीका है
  2. डेटा इंजीनियरिंग कौशल के बिना डेटा वैज्ञानिकों को कठोर सच्चाई का सामना करना पड़ेगा
  3. एक डेटा विज्ञान पोर्टफोलियो जो आपको नौकरी देगा
  4. Python का उपयोग करके Microsoft Excel और Word को स्वचालित करें
  5. अपने डेटा विज्ञान परियोजनाओं के लिए आश्चर्यजनक वेब ऐप्स कैसे बनाएं
सर्वाधिक साझा
  1. डेटा को फिर से संतुलित किए बिना असंतुलित वर्गीकरण से कैसे निपटें
  2. अपने मशीन लर्निंग मॉडल में कमजोरियों का पता कैसे लगाएं
  3. द मशीन एंड डीप लर्निंग कम्पेंडियम ओपन बुक
  4. डेटा इंजीनियरिंग कौशल के बिना डेटा वैज्ञानिकों को कठोर सच्चाई का सामना करना पड़ेगा
  5. परिकल्पना परीक्षण समझाया गया

स्रोत: https://www.kdnuggets.com/2021/09/-structured-financial-newsfeed-using-python-spacy-and-streamlit.html

समय टिकट:

से अधिक केडनगेट्स