Python، SpaCy اور Streamlit کا استعمال کرتے ہوئے ایک منظم مالیاتی نیوز فیڈ بنانا

ماخذ نوڈ: 1876513

Python، SpaCy اور Streamlit کا استعمال کرتے ہوئے ایک منظم مالیاتی نیوز فیڈ بنانا

این ایل پی کے ساتھ ایک نام کی ہستی کی شناخت (NER) ایپلیکیشن بنا کر شروع کرنا۔


By ہرشیت تیاگی, ڈیٹا سائنس انسٹرکٹر | سرپرست | YouTuber


Python، SpaCy اور Streamlit کا استعمال کرتے ہوئے ایک منظم مالیاتی نیوز فیڈ بنانا

این ایل پی کی ایک بہت ہی دلچسپ اور وسیع پیمانے پر استعمال ہونے والی ایپلی کیشنز میں سے ایک اینٹٹی ریکگنیشن (NER) کا نام ہے۔

خام اور غیر ساختہ ڈیٹا سے بصیرت حاصل کرنا بہت اہمیت کا حامل ہے۔ کسی دستاویز کو اپ لوڈ کرنا اور اس سے معلومات کے اہم بٹس حاصل کرنا معلومات کی بازیافت کہلاتا ہے۔

NLP میں معلومات کی بازیافت ایک بڑا کام/چیلنج رہا ہے۔ اور NER (یا NEL — نام کی ہستی لنکنگ) معلومات کی بازیافت کے مقاصد کے لیے کئی ڈومینز (فنانس، ڈرگز، ای کامرس وغیرہ) میں استعمال ہوتا ہے۔

اس ٹیوٹوریل پوسٹ میں، میں آپ کو دکھاؤں گا کہ آپ کس طرح NEL سے فائدہ اٹھاتے ہوئے ایک حسب ضرورت اسٹاک مارکیٹ نیوز فیڈ تیار کر سکتے ہیں جس میں انٹرنیٹ پر گونجنے والے اسٹاک کو درج کیا گیا ہے۔

پری ضروریات

 
 
اس طرح کی کوئی پیشگی شرائط نہیں ہیں۔ آپ کو python اور NLP کے بنیادی کاموں جیسے ٹوکنائزیشن، POS ٹیگنگ، انحصار پارسنگ، وغیرہ سے کچھ واقفیت کی ضرورت ہو سکتی ہے۔

میں اہم بٹس کا مزید تفصیل سے احاطہ کروں گا، لہذا یہاں تک کہ اگر آپ ایک مکمل ابتدائی ہیں تو آپ اپنے سر کو اس کے ارد گرد لپیٹنے کے قابل ہو جائیں گے کہ کیا ہو رہا ہے۔

تو، آئیے اس کے ساتھ آگے بڑھیں، اس کی پیروی کریں اور آپ کے پاس کم سے کم اسٹاک نیوز فیڈ ہوگا جس پر آپ تحقیق شروع کر سکتے ہیں۔

ٹولز/سیٹ اپ جن کی آپ کو ضرورت ہو گی:

 
 

  1. ڈیٹا اور SpaCy لائبریری کی ابتدائی جانچ اور تلاش کے لیے Google Colab۔
  2. VS کوڈ (یا کوئی ایڈیٹر) Streamlit ایپلیکیشن کو کوڈ کرنے کے لیے۔
  3. اسٹاک مارکیٹ کی معلومات (خبروں) کا ذریعہ جس پر ہم NER اور بعد میں NEL انجام دیں گے۔
  4. ایک مجازی ازگر کا ماحول (میں کونڈا استعمال کر رہا ہوں) کے ساتھ ساتھ لائبریریاں جیسے پانڈاس، اسپیسائی، اسٹریم لِٹ، اسٹریم لِٹ اسپیسی (اگر آپ کچھ اسپیسائی رینڈرز دکھانا چاہتے ہیں۔)

مقصد

 
 
اس پروجیکٹ کا مقصد اہم اداروں (ہماری مثال میں عوامی طور پر تجارت کی جانے والی کمپنیاں) کو نکالنے کے لیے نام کی ہستی کی شناخت سیکھنا اور لاگو کرنا ہے اور پھر علم کی بنیاد (Nifty500 کمپنیوں کی فہرست) کا استعمال کرتے ہوئے ہر ادارے کو کچھ معلومات کے ساتھ لنک کرنا ہے۔

ہم انٹرنیٹ پر آر ایس ایس فیڈز سے متنی ڈیٹا حاصل کریں گے، گونجنے والے اسٹاک کے نام نکالیں گے، اور پھر ان اسٹاکس میں کوئی بھی پوزیشن لینے سے پہلے خبروں کی صداقت کو جانچنے کے لیے ان کی مارکیٹ کی قیمت کا ڈیٹا کھینچیں گے۔


نوٹ: NER ایک جدید ترین مسئلہ نہیں ہوسکتا ہے لیکن اس کی صنعت میں بہت سی ایپلی کیشنز ہیں۔


تجربہ اور جانچ کے لیے Google Colab پر جانا:

مرحلہ 1: ٹرینڈنگ اسٹاکس نیوز ڈیٹا کو نکالنا

 
 
اسٹاک مارکیٹ کی کچھ معتبر خبریں حاصل کرنے کے لیے، میں استعمال کروں گا۔ اکنامک ٹائمز اور منی کنٹرول اس ٹیوٹوریل کے لیے آر ایس ایس فیڈز لیکن آپ اپنی فیڈ کو مزید معلوماتی/درست بنانے کے لیے اپنے ملک کی آر ایس ایس فیڈز یا ٹویٹر/ٹیلیگرام (گروپ) کا ڈیٹا بھی استعمال/شامل کرسکتے ہیں۔

مواقع بے پناہ ہیں۔ اس ٹیوٹوریل کو مختلف ڈومینز میں ایپس بنانے کے لیے NEL کو لاگو کرنے کے لیے ایک سیڑھی کا کام کرنا چاہیے تاکہ معلومات کی بازیافت کے مختلف مسائل حل ہوں۔

اگر آپ آر ایس ایس فیڈ کو دیکھیں تو یہ کچھ اس طرح نظر آتا ہے:

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


 

ہمارا مقصد اس RSS فیڈ سے متنی سرخیاں حاصل کرنا ہے اور پھر ہم شہ سرخیوں سے اہم اداروں کو نکالنے کے لیے SpaCy کا استعمال کریں گے۔

سرخیاں اندر موجود ہیں۔ یہاں XML کا ٹیگ۔

سب سے پہلے، ہمیں پورے XML دستاویز کو حاصل کرنے کی ضرورت ہے اور ہم استعمال کر سکتے ہیں۔ requests ایسا کرنے کے لیے لائبریری۔ یقینی بنائیں کہ آپ نے یہ پیکجز کولاب میں اپنے رن ٹائم ماحول میں انسٹال کیے ہیں۔

آپ کولاب کے کوڈ سیل سے تقریباً کسی بھی پیکیج کو انسٹال کرنے کے لیے درج ذیل کمانڈ چلا سکتے ہیں۔

!pip install <package_name>

ایک بھیجیں GET XML دستاویز پر قبضہ کرنے کے لیے فراہم کردہ لنک پر درخواست کریں۔

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

آپ کو جوابی آبجیکٹ میں کیا ملتا ہے یہ چیک کرنے کے لیے سیل چلائیں۔

اسے آپ کو HTTP کوڈ 200 کے ساتھ ایک کامیاب جواب دینا چاہیے جیسا کہ:



اب جب کہ آپ کے پاس یہ جوابی اعتراض ہے، ہم XML دستاویز کو اس طرح پارس کرنے کے لیے اس کے مواد کو BeautifulSoup کلاس میں منتقل کر سکتے ہیں:

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

اس سے آپ کو ازگر کی فہرست کے اندر تمام سرخیاں ملنی چاہئیں:



مصنف کی طرف سے تصویر

 

بہت اچھا، ہمارے پاس متنی ڈیٹا ہے جس میں سے ہم NLP کا استعمال کرتے ہوئے اہم اداروں (جو اس معاملے میں عوامی طور پر تجارت کرنے والی کمپنیاں ہیں) نکالیں گے۔

NLP کو عملی جامہ پہنانے کا وقت آگیا ہے۔

مرحلہ 2: شہ سرخیوں سے اداروں کو نکالنا

 
 
یہ دلچسپ حصہ ہے۔ ہم استعمال کریں گے a پہلے سے تربیت یافتہ بنیادی زبان کا ماڈل سے spaCy ایک سرخی میں مرکزی اداروں کو نکالنے کے لیے لائبریری۔

spaCy اور بنیادی ماڈلز کے بارے میں تھوڑا سا۔

spaCy ایک اوپن سورس NLP لائبریری ہے جو متنی ڈیٹا کو انتہائی تیز رفتاری سے پروسیس کرتی ہے۔ یہ NLP تحقیق میں سرکردہ لائبریری ہے جو بڑے پیمانے پر انٹرپرائز گریڈ ایپلی کیشنز میں استعمال ہو رہی ہے۔ spaCy مسئلہ کے ساتھ اسکیلنگ کے لیے مشہور ہے۔ اور یہ 64 سے زیادہ زبانوں کو سپورٹ کرتا ہے اور TensorFlow اور PyTorch دونوں کے ساتھ اچھی طرح کام کرتا ہے۔

بنیادی ماڈلز کے بارے میں بات کرتے ہوئے، spaCy کے پاس پہلے سے تربیت یافتہ لینگویج ماڈلز کی دو بڑی کلاسیں ہیں جو ہمیں جدید ترین نتائج فراہم کرنے کے لیے متنی ڈیٹا کے مختلف سائز پر تربیت دی جاتی ہیں۔

  1. بنیادی ماڈلز - عمومی مقصد کے بنیادی NLP کاموں کے لیے۔
  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 بنیادی طور پر ایک انگریزی پائپ لائن ہے جو CPU کے لیے موزوں ہے جس میں درج ذیل اجزاء ہیں:

  • tok2vec — ٹوکن ٹو ویکٹر (ٹیکسٹول ڈیٹا پر ٹوکنائزیشن انجام دیتا ہے)،
  • tagger - ہر ٹوکن میں متعلقہ میٹا ڈیٹا شامل کرتا ہے۔ spaCy ہر ٹوکن کی تقریر کے حصے (POS) کی پیشین گوئی کرنے کے لیے کچھ شماریاتی ماڈلز کا استعمال کرتا ہے۔ میں مزید دستاویزات.
  • parser — انحصار پارسر ٹوکنز کے درمیان تعلقات قائم کرتا ہے۔
  • دوسرے اجزاء میں بھیجنے والا، نیر، وصف_حکمران، لیمیٹائزر شامل ہیں۔

اب، یہ جانچنے کے لیے کہ یہ ماڈل ہمارے لیے کیا کر سکتا ہے، میں فوری ماڈل کے ذریعے ایک ہی سرخی پاس کروں گا اور پھر جملے کے مختلف حصوں کو چیک کروں گا۔

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

پائپ لائن ٹوکنائزیشن سے لے کر NER تک تمام کام انجام دیتی ہے۔ یہاں ہمارے پاس پہلے ٹوکن ہیں:



مصنف کی طرف سے تصویر

 

آپ کا استعمال کرتے ہوئے تقریر کے ٹیگ کردہ حصے کو دیکھ سکتے ہیں۔ pos_ وصف.



مصنف کی طرف سے تصویر

 

ہر ٹوکن کو کچھ میٹا ڈیٹا کے ساتھ ٹیگ کیا جاتا ہے۔ مثال کے طور پر، تجارت ایک مناسب اسم ہے، سیٹ اپ ایک اسم ہے، : اوقاف ہے، وغیرہ وغیرہ۔ ٹیگز کی پوری فہرست دی گئی ہے۔ یہاں.

اور پھر، آپ انحصار گراف کو استعمال کرتے ہوئے دیکھ کر دیکھ سکتے ہیں کہ ان کا کیا تعلق ہے۔ dep_ وصف:



مصنف کی طرف سے تصویر

 

یہاں، تجارت ایک کمپاؤنڈ ہے، سیٹ اپ روٹ ہے، نفٹی appos (Appositional modifier) ​​ہے۔ ایک بار پھر، تمام نحوی ٹیگز مل سکتے ہیں۔ یہاں.

آپ مندرجہ ذیل ڈسپلیسی کا استعمال کرتے ہوئے ٹوکنز کے درمیان تعلق کے انحصار کو بھی دیکھ سکتے ہیں۔ render() طریقہ:

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

جو یہ گراف دے گا:



مصنف کی طرف سے تصویر

 

ہستی نکالنا

 
 
اور جملے کی اہم ہستیوں کو دیکھنے کے لیے آپ گزر سکتے ہیں۔ 'ent’ ایک ہی کوڈ میں سٹائل کے طور پر:



مصنف کی طرف سے تصویر — میں نے ایک اور سرخی استعمال کی ہے کیونکہ ہم نے اوپر جو عنوان استعمال کیا ہے اس میں کوئی وجود نہیں ہے۔

 

ہمارے پاس مختلف اداروں کے لیے مختلف ٹیگ ہیں جیسے دن کا DATE ہے، Glasscoat میں GPE ہے جو کہ ممالک/شہر/ریاستیں ہو سکتی ہیں۔ ہم بنیادی طور پر ایسے اداروں کی تلاش کر رہے ہیں جن کے پاس ORG ٹیگ ہے جو ہمیں کمپنیاں، ایجنسیاں، ادارے وغیرہ دے گا۔

اب ہم متن سے ہستیوں کو نکالنے کے قابل ہیں۔ آئیے ORG اداروں کا استعمال کرتے ہوئے تمام شہ سرخیوں سے تنظیموں کو نکالنے پر اترتے ہیں۔

یہ مندرجہ ذیل تمام کمپنیوں کی فہرست واپس کرے گا:



مصنف کی طرف سے تصویر

 

اتنا آسان ، ٹھیک ہے؟

یہ اب spaCy کا جادو ہے!

اگلا مرحلہ یہ ہے کہ ان تمام کمپنیوں کو نالج بیس میں تلاش کریں تاکہ اس کمپنی کے لیے اسٹاک کی صحیح علامت نکالیں اور پھر yahoo-finance جیسی لائبریریوں کا استعمال کرکے ان کی مارکیٹ کی تفصیلات جیسے قیمت، واپسی وغیرہ کو نکالیں۔

مرحلہ 3 - نام سے ہستی کو جوڑنا

 
 
اس بارے میں جاننا کہ مارکیٹ میں کون سے سٹاک گونج رہے ہیں اور اپنے ڈیش بورڈ پر ان کی تفصیلات حاصل کرنا اس پروجیکٹ کا مقصد ہے۔

ہمارے پاس کمپنی کے نام ہیں لیکن ان کی ٹریڈنگ کی تفصیلات حاصل کرنے کے لیے، ہمیں کمپنی کے ٹریڈنگ اسٹاک کی علامت کی ضرورت ہوگی۔

چونکہ میں ہندوستانی کمپنیوں کی تفصیلات اور خبریں نکال رہا ہوں، اس لیے میں ایک بیرونی ڈیٹا بیس استعمال کرنے جا رہا ہوں۔ نفٹی 500 کمپنیاں (ایک CSV فائل)۔

ہر کمپنی کے لیے، ہم اسے پانڈا استعمال کرنے والی کمپنیوں کی فہرست میں دیکھیں گے، اور پھر ہم اس کا استعمال کرتے ہوئے اسٹاک مارکیٹ کے اعدادوشمار حاصل کریں گے۔ یاہو فنانس لائبریری.

مصنف کی طرف سے تصویر

 

ایک چیز جو آپ کو یہاں نوٹ کرنی چاہیے وہ یہ ہے کہ میں نے ہر اسٹاک سمبل کے بعد اسے پاس کرنے سے پہلے ایک ".NS" شامل کیا ہے۔ Ticker کی کلاس yfinance کتب خانہ. اس کی وجہ یہ ہے کہ ہندوستانی NSE اسٹاک کی علامتیں a کے ساتھ محفوظ ہیں۔ .NS میں لاحقہ yfinance.

اور گونجنے والے اسٹاک نیچے کی طرح ڈیٹا فریم میں بدل جائیں گے:



مصنف کی طرف سے تصویر

 

Voila! کیا یہ بہت اچھا نہیں ہے؟ اتنی سادہ لیکن گہری ایپ جو صحیح اسٹاک کے ساتھ آپ کو صحیح سمت میں لے جا سکتی ہے۔

اب اسے مزید قابل رسائی بنانے کے لیے، ہم اس کوڈ سے ایک ویب ایپلیکیشن بنا سکتے ہیں جسے ہم نے ابھی Streamlit کا استعمال کرتے ہوئے لکھا ہے۔

مرحلہ 4 — Streamlit کا استعمال کرتے ہوئے ایک ویب ایپ بنانا

 
 
اب وقت آگیا ہے کہ ایڈیٹر پر جائیں اور NLP ایپلیکیشن کے لیے ایک نیا پروجیکٹ اور ورچوئل ماحول بنائیں۔

اس طرح کے ڈیمو ڈیٹا ایپلی کیشنز کے لیے 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 فیڈ یو آر ایل شامل کر سکتے ہیں اور ڈیٹا پر کارروائی کی جائے گی اور ٹرینڈنگ اسٹاک کو ڈیٹا فریم میں دکھایا جائے گا۔

پورے کوڈ بیس تک رسائی حاصل کرنے کے لیے، آپ یہاں میرا ذخیرہ چیک کر سکتے ہیں:

 
GitHub - dswh/NER_News_Feed
 

آپ اسے مزید موثر اور کارآمد بنانے کے لیے متعدد اسٹائلنگ عناصر، مختلف ڈیٹا ذرائع، اور پروسیسنگ کی دیگر اقسام شامل کر سکتے ہیں۔

میری ایپ اپنی موجودہ حالت میں بینر میں موجود تصویر کی طرح دکھائی دیتی ہے۔

اگر آپ مرحلہ وار میری پیروی کرنا چاہتے ہیں تو مجھے اس ایپلی کیشن کو یہاں کوڈ کرتے ہوئے دیکھیں:

اگلے مراحل!

 
 
مالی استعمال کے معاملے کو منتخب کرنے کے بجائے، آپ اپنی پسند کی کوئی دوسری درخواست بھی چن سکتے ہیں۔ صحت کی دیکھ بھال، ای کامرس، تحقیق، اور بہت سے دوسرے۔ تمام صنعتوں کو دستاویزات پر کارروائی کرنے اور اہم اداروں کو نکالنے اور منسلک کرنے کی ضرورت ہوتی ہے۔ ایک اور آئیڈیا آزمائیں۔

ایک سادہ خیال یہ ہے کہ تحقیقی مقالے کے تمام اہم اداروں کو نکالنا اور پھر گوگل سرچ API کا استعمال کرتے ہوئے اس کا علمی گراف بنانا۔

اس کے علاوہ، اگر آپ اسٹاک نیوز فیڈ ایپ کو کسی اور سطح پر لے جانا چاہتے ہیں، تو آپ خرید و فروخت کے سگنل بھی پیدا کرنے کے لیے کچھ تجارتی الگورتھم شامل کر سکتے ہیں۔

میں آپ کو اپنے تخیل کے ساتھ جنگلی جانے کی ترغیب دیتا ہوں۔

آپ مجھ سے کیسے جڑ سکتے ہیں!

 
 
اگر آپ کو یہ پوسٹ پسند آئی ہے اور آپ اس طرح کے مزید مواد دیکھنا چاہتے ہیں تو آپ سبسکرائب کر سکتے ہیں۔ میرا نیوز لیٹر or میرا YouTube چینل جہاں میں ایسے مفید اور فوری پروجیکٹس کا اشتراک کرتا رہوں گا جو کوئی بنا سکتا ہے۔

اگر آپ کوئی ایسا شخص ہے جو ابھی پروگرامنگ کے ساتھ شروعات کر رہا ہے یا ڈیٹا سائنس یا ایم ایل میں جانا چاہتے ہیں، تو آپ میرا کورس یہاں پر دیکھ سکتے ہیں۔ WIP لین اکیڈمی.

ایلیٹ گن کا شکریہ۔

 
بیو: ہرشیت تیاگی ویب ٹیکنالوجیز اور ڈیٹا سائنس (عرف فل اسٹیک ڈیٹا سائنس) میں یکجا تجربہ رکھنے والا ایک انجینئر ہے۔ اس نے 1000 سے زیادہ AI/Web/Data Science کے خواہشمندوں کی رہنمائی کی ہے، اور وہ ڈیٹا سائنس اور ML انجینئرنگ سیکھنے کے ٹریک ڈیزائن کر رہا ہے۔ اس سے پہلے، ہرشیت نے Yale، MIT، اور UCLA میں تحقیقی سائنسدانوں کے ساتھ ڈیٹا پروسیسنگ الگورتھم تیار کیا۔

حقیقی. اجازت کے ساتھ دوبارہ پوسٹ کیا۔

متعلقہ:

ماخذ: https://www.kdnuggets.com/2021/09/-structured-financial-newsfeed-using-python-spacy-and-streamlit.html

ٹائم اسٹیمپ:

سے زیادہ KDnuggets